
# Avtomatizacija

Avtomatizacija za Rudel preprečuje, da bi se začasna peskovna okolja kopičila v nedogled. En urni dogodek WP-Cron, `rudel_scheduled_cleanup`, lahko:

- zažene pravilnik čiščenja (potek veljavnosti, starost in nedejavnost)
- zažene čiščenje združenih vej
- poroča o peskovnih okoljih s preteklo ali bližajočo se veljavnostjo

## Konfiguracija

Avtomatizacija bere te ključe iz možnosti `rudel_config`. Celoten seznam je v razdelku [Konfiguracija](https://rudel.inline0.dev/sl/docs/configuration).

| Ključ | Namen | Privzeto |
|-----|---------|---------|
| `auto_cleanup_enabled` | Zažene pravilnik čiščenja ob vsakem dogodku | `1` |
| `auto_cleanup_merged` | Odstrani tudi peskovna okolja z združenimi vejami delovne kopije Git | `0` |
| `expiring_environment_notice_days` | Poroča o peskovnih okoljih, ki jim veljavnost poteče v N dneh | `0` |
| `max_age_days` | Starostna omejitev, ki jo uporablja pravilnik čiščenja | `0` |
| `max_idle_days` | Omejitev nedejavnosti, ki jo uporablja pravilnik čiščenja | `0` |
| `default_ttl_days` | Čas do poteka veljavnosti za nova peskovna okolja | `0` |

S privzetimi nastavitvami je dogodek načrtovan, vendar odstrani samo peskovna okolja z izrecno določenim datumom poteka veljavnosti v preteklosti, saj starostna omejitev, omejitev nedejavnosti in privzeti TTL niso nastavljeni.

## WP-Cron

Ob aktivaciji se dogodek načrtuje, vsaka zahteva pa znova preveri urnik: dogodek obstaja, dokler je katera koli od vrednosti `auto_cleanup_enabled`, `auto_cleanup_merged` ali `expiring_environment_notice_days` neničelna, sicer se odstrani. Ob deaktivaciji se odstrani.

Ukazov za avtomatizacijo ni. Spremenite nastavitve v `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` prikaže `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` in `Automation scheduled`.

## Poročila o poteku veljavnosti

Ko je nastavljena vrednost `expiring_environment_notice_days`, vsak zagon zbere peskovna okolja, ki jim `expires_at` poteče v tem številu dni, in jih posreduje dejanju `rudel_after_automation_expiring_environments`, razdeljena na `expiring` in `expired`. Rudel sam ne pošilja obvestil; povežite dejanje z obveščanjem lastnikov.

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

## Zagon zdaj

Za predvidljive lokalne zagone ali zagone CI uporabite ročno čiščenje:

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

Iz PHP `Rudel::run_automation()` zažene ista opravila kot dogodek cron.
