跳转到正文

自动化

Rudel 的自动化可防止临时沙盒不断累积。每小时触发一次的 WP-Cron 事件 rudel_scheduled_cleanup 可用于:

  • 执行清理策略(过期时间、使用时长和空闲时长)
  • 清理已合并分支
  • 报告已过期或即将过期的沙盒

配置

自动化会从 rudel_config 选项中读取这些键。完整列表见 配置。

键 用途 默认值
auto_cleanup_enabled 每次事件运行清理策略 1
auto_cleanup_merged 同时移除分支已合并的沙盒 Git 工作树 0
expiring_environment_notice_days 报告 N 天内即将过期的沙盒 0
max_age_days 清理策略使用的使用时长上限 0
max_idle_days 清理策略使用的空闲时长上限 0
default_ttl_days 新沙盒的过期时间 0

使用默认值时,事件虽已安排,但只会移除明确设置了过期时间且已过期的沙盒,因为未设置使用时长或空闲时长上限,也未设置默认 TTL。

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 事件相同的任务。