
# Automatisierung

Die Automatisierung von Rudel verhindert, dass sich kurzlebige Sandboxes auf Dauer ansammeln. Ein stündliches WP-Cron-Ereignis, `rudel_scheduled_cleanup`, kann:

- die Bereinigungsrichtlinie ausführen (Ablauf, Alter und Inaktivität)
- zusammengeführte Branches bereinigen
- Sandboxes melden, die abgelaufen sind oder bald ablaufen

## Konfiguration

Die Automatisierung liest diese Schlüssel aus der Option `rudel_config`. Die vollständige Liste findest du unter [Konfiguration](https://rudel.inline0.dev/de/docs/configuration).

| Schlüssel | Zweck | Standardwert |
|-----|---------|---------|
| `auto_cleanup_enabled` | Bereinigungsrichtlinie bei jedem Ereignis ausführen | `1` |
| `auto_cleanup_merged` | Zusätzlich Sandboxes mit zusammengeführten Git-Worktree-Branches entfernen | `0` |
| `expiring_environment_notice_days` | Sandboxes melden, die innerhalb von N Tagen ablaufen | `0` |
| `max_age_days` | Altersgrenze der Bereinigungsrichtlinie | `0` |
| `max_idle_days` | Inaktivitätsgrenze der Bereinigungsrichtlinie | `0` |
| `default_ttl_days` | Ablaufzeit für neue Sandboxes | `0` |

Mit den Standardwerten ist das Ereignis zwar geplant, entfernt aber nur Sandboxes, deren Ablauf ausdrücklich in der Vergangenheit liegt, da weder eine Alters- oder Inaktivitätsgrenze noch eine Standard-TTL festgelegt ist.

## WP-Cron

Bei der Aktivierung wird das Ereignis geplant und bei jeder Anfrage der Zeitplan erneut geprüft: Das Ereignis besteht, solange einer der Werte `auto_cleanup_enabled`, `auto_cleanup_merged` oder `expiring_environment_notice_days` ungleich null ist, andernfalls wird es entfernt. Bei der Deaktivierung wird es ebenfalls entfernt.

Es gibt keine Automatisierungsbefehle. Ändere die Einstellungen in `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` zeigt `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` und `Automation scheduled` an.

## Ablaufmeldungen

Wenn `expiring_environment_notice_days` gesetzt ist, erfasst jeder Lauf Sandboxes, deren `expires_at` innerhalb dieser Anzahl von Tagen liegt, und übergibt sie an die Aktion `rudel_after_automation_expiring_environments`, aufgeteilt in `expiring` und `expired`. Rudel versendet selbst keine Benachrichtigungen; verknüpfe die Aktion mit einer Benachrichtigung an die Zuständigen.

```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'] );
        }
    }
);
```

## Jetzt ausführen

Verwende für deterministische lokale oder CI-Läufe die manuelle Bereinigung:

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

Von PHP aus führt `Rudel::run_automation()` dieselben Aufgaben wie das Ereignis cron aus.
