コンテンツへスキップ

自動化

Rudelの自動化により、使い捨てのサンドボックスがいつまでも溜まらないようにできます。1時間ごとのWP-Cronイベントrudel_scheduled_cleanupでは、次の処理を実行できます。

  • クリーンアップポリシー(有効期限、経過期間、アイドル状態)を実行する
  • マージ済みブランチのクリーンアップを実行する
  • 期限切れまたは期限が近いサンドボックスを報告する

設定

自動化では、rudel_configオプションから次のキーを読み取ります。全項目は設定に記載されています。

キー 目的 既定値
auto_cleanup_enabled イベントごとにクリーンアップポリシーを実行する 1
auto_cleanup_merged マージ済みGit worktreeブランチを持つサンドボックスも削除する 0
expiring_environment_notice_days N日以内に期限切れとなるサンドボックスを報告する 0
max_age_days クリーンアップポリシーで使う経過期間の上限 0
max_idle_days クリーンアップポリシーで使うアイドル期間の上限 0
default_ttl_days 新しいサンドボックスに設定する有効期限 0

既定の設定ではイベントは登録されますが、明示的な有効期限が過去になったサンドボックスだけが削除されます。経過期間やアイドル期間の上限、および既定の有効期限は設定されていません。

WP-Cron

有効化するとイベントが登録され、その後も各リクエストでスケジュールが再確認されます。auto_cleanup_enabled、auto_cleanup_merged、expiring_environment_notice_daysのいずれかがゼロ以外ならイベントは維持され、それ以外の場合は削除されます。無効化するとイベントは削除されます。

自動化用のコマンドはありません。設定はrudel_configで変更します。

シェル
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はAuto cleanup、Auto cleanup merged、Expiry notice days、Automation scheduledを表示します。

有効期限レポート

expiring_environment_notice_daysが設定されていると、実行ごとにexpires_atが指定日数以内に到来するサンドボックスを収集し、rudel_after_automation_expiring_environmentsアクションに渡します。サンドボックスはexpiringとexpiredに分けられます。Rudel自体は通知を送信しません。所有者に通知するには、このアクションにフックしてください。

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

今すぐ実行する

ローカルまたはCIで予測可能な結果を得るには、手動クリーンアップを使います。

シェル
wp rudel cleanup --dry-run
wp rudel cleanup

PHPからRudel::run_automation()を実行すると、cronイベントと同じ処理が実行されます。