
# Automatisering

Automatiseringen för Rudel hindrar tillfälliga sandlådor från att samlas på hög för alltid. En händelse WP-Cron som körs varje timme, `rudel_scheduled_cleanup`, kan:

- köra rensningspolicyn (utgångstid, ålder och inaktivitet)
- rensa grenar som har slagits samman
- rapportera sandlådor som har löpt ut eller snart löper ut

## Konfiguration

Automatiseringen läser dessa nycklar från alternativet `rudel_config`. Den fullständiga listan finns i [Konfiguration](https://rudel.inline0.dev/sv/docs/configuration).

| Nyckel | Syfte | Standardvärde |
|-----|---------|---------|
| `auto_cleanup_enabled` | Kör rensningspolicyn vid varje händelse | `1` |
| `auto_cleanup_merged` | Tar även bort sandlådor med sammanslagna Git-arbetsgrenar | `0` |
| `expiring_environment_notice_days` | Rapporterar sandlådor som löper ut inom N dagar | `0` |
| `max_age_days` | Åldersgräns som används av rensningspolicyn | `0` |
| `max_idle_days` | Inaktivitetsgräns som används av rensningspolicyn | `0` |
| `default_ttl_days` | Utgångstid för nya sandlådor | `0` |

Med standardinställningarna schemaläggs händelsen men tar bara bort sandlådor vars angivna utgångstid har passerat, eftersom varken åldersgräns, inaktivitetsgräns eller standardvärde för TTL har angetts.

## WP-Cron

Aktivering schemalägger händelsen, och varje förfrågan kontrollerar schemat på nytt: händelsen finns så länge något av `auto_cleanup_enabled`, `auto_cleanup_merged` eller `expiring_environment_notice_days` är skilt från noll, och tas annars bort. Inaktivering tar bort den.

Det finns inga automatiseringskommandon. Ändra inställningarna i `rudel_config`:

```bash
wp option update rudel_config '{"auto_cleanup_enabled":1,"max_idle_days":7,"expiring_environment_notice_days":2}' --format=json
wp rudel status
```

`wp rudel status` visar `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` och `Automation scheduled`.

## Rapporter om utgångstider

När `expiring_environment_notice_days` har angetts samlar varje körning in sandlådor med en `expires_at` inom det angivna antalet dagar och skickar dem till åtgärden `rudel_after_automation_expiring_environments`, uppdelade i `expiring` och `expired`. Rudel skickar inga aviseringar själv; koppla åtgärden till en avisering till ägarna.

```php
add_action(
    'rudel_after_automation_expiring_environments',
    function ( array $report ): void {
        foreach ( $report['expiring'] as $sandbox ) {
            error_log( $sandbox['id'] . ' expires at ' . $sandbox['expires_at'] );
        }
    }
);
```

## Kör den nu

Använd manuell rensning för förutsägbara lokala körningar eller CI-körningar:

```bash
wp rudel cleanup --dry-run
wp rudel cleanup
```

Från PHP kör `Rudel::run_automation()` samma uppgifter som händelsen cron.
