
# Automaatika

Rudel automaatika hoiab ära ühekordsete liivakastide lõputu kuhjumise. Üks tunnipõhine WP-Cron sündmus, `rudel_scheduled_cleanup`, saab teha järgmist:

- käivitada puhastuspoliitika (aegumine, vanus ja jõudeolek)
- puhastada liidetud harusid
- anda teada aegunud või peagi aeguvatest liivakastidest

## Konfiguratsioon

Automaatika loeb need võtmed valikust `rudel_config`. Täielik loend on teemal [Seadistus](https://rudel.inline0.dev/et/docs/configuration).

| Võti | Eesmärk | Vaikimisi |
|-----|---------|---------|
| `auto_cleanup_enabled` | Käivitab puhastuspoliitika iga sündmuse ajal | `1` |
| `auto_cleanup_merged` | Eemaldab ka liidetud Git tööpuu harudega liivakastid | `0` |
| `expiring_environment_notice_days` | Annab teada liivakastidest, mis aeguvad N päeva jooksul | `0` |
| `max_age_days` | Puhastuspoliitikas kasutatav vanusepiirang | `0` |
| `max_idle_days` | Puhastuspoliitikas kasutatav jõudeoleku piirang | `0` |
| `default_ttl_days` | Uutele liivakastidele antav aegumistähtaeg | `0` |

Vaikeseadetega on sündmus ajastatud, kuid eemaldab ainult liivakastid, mille määratud aegumistähtaeg on möödunud, sest vanuse- ja jõudeoleku piirang ning vaikimisi TTL pole määratud.

## WP-Cron

Aktiveerimine ajastab sündmuse ja iga päring kontrollib ajakava uuesti: sündmus on olemas, kui mõne järgmise väärtus `auto_cleanup_enabled`, `auto_cleanup_merged` või `expiring_environment_notice_days` pole null; muul juhul see eemaldatakse. Desaktiveerimine eemaldab sündmuse.

Automaatikakäske pole. Muutke seadeid failis `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` kuvab väärtused `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` ja `Automation scheduled`.

## Aegumisteavitused

Kui määratud on `expiring_environment_notice_days`, kogub iga käivitus liivakastid, mille `expires_at` saabub nii mitme päeva jooksul, ja edastab need toimingule `rudel_after_automation_expiring_environments`, jagatuna rühmadesse `expiring` ja `expired`. Rudel ei saada ise teavitusi; ühendage toiming omanike teavitamisega.

```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äivitamine kohe

Kasutage etteaimatavate kohalike või CI käivituste jaoks käsitsi puhastamist:

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

PHP-st käivitab `Rudel::run_automation()` samad toimingud mis sündmus cron.
