
# Automaatio

Rudel-järjestelmän automaatio estää väliaikaisten eristysympäristöjen kertymisen. Yksi tunnin välein suoritettava WP-Cron-tapahtuma, `rudel_scheduled_cleanup`, voi:

- suorittaa siivouskäytännön (vanheneminen, ikä ja toimettomuus)
- siivota yhdistetyt haarat
- raportoida vanhentuneet tai pian vanhenevat eristysympäristöt

## Määritykset

Automaatio lukee nämä avaimet valinnasta `rudel_config`. Koko luettelo on sivulla [Määritykset](https://rudel.inline0.dev/fi/docs/configuration).

| Avain | Tarkoitus | Oletusarvo |
|-----|---------|---------|
| `auto_cleanup_enabled` | Suorittaa siivouskäytännön jokaisessa tapahtumassa | `1` |
| `auto_cleanup_merged` | Poistaa lisäksi yhdistetyt Git-työpuun haarat käyttävät eristysympäristöt | `0` |
| `expiring_environment_notice_days` | Raportoi N päivän sisällä vanhenevat eristysympäristöt | `0` |
| `max_age_days` | Siivouskäytännön käyttämä ikäraja | `0` |
| `max_idle_days` | Siivouskäytännön käyttämä toimettomuusraja | `0` |
| `default_ttl_days` | Uusille eristysympäristöille annettava vanhenemisaika | `0` |

Oletusarvoilla tapahtuma on ajoitettu, mutta se poistaa vain eristysympäristöt, joiden nimenomainen vanhenemisaika on jo mennyt, koska ikä- tai toimettomuusrajaa eikä oletusarvoista elinaikaa (TTL) ole asetettu.

## WP-Cron

Aktivointi ajoittaa tapahtuman, ja jokaisessa pyynnössä aikataulu tarkistetaan uudelleen: tapahtuma on olemassa, jos jokin arvoista `auto_cleanup_enabled`, `auto_cleanup_merged` tai `expiring_environment_notice_days` on nollasta poikkeava; muussa tapauksessa se poistetaan. Käytöstä poistaminen poistaa tapahtuman.

Automaatioon ei ole komentoja. Muuta asetuksia kohteessa `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` näyttää arvot `Auto cleanup`, `Auto cleanup merged`, `Expiry notice days` ja `Automation scheduled`.

## Vanhenemisraportit

Kun asetus `expiring_environment_notice_days` on määritetty, jokaisessa ajossa kerätään eristysympäristöt, joiden `expires_at` osuu kyseisen päivän sisälle, ja välitetään ne toiminnolle `rudel_after_automation_expiring_environments` jaoteltuina ryhmiin `expiring` ja `expired`. Rudel ei lähetä ilmoituksia itse; ilmoita omistajille liittämällä toiminto ilmoitusjärjestelmään.

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

## Suorittaminen nyt

Käytä manuaalista siivousta paikallisissa tai CI-ajoissa, joiden tulosten on oltava ennakoitavia:

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

Kohteesta PHP komento `Rudel::run_automation()` suorittaa samat tehtävät kuin cron-tapahtuma.
