Drone CI 中文文档

定时任务调度 (Cron)

你可以基于时间的计划调度,使用定时任务 (Cron 调度器) 执行流水线作业。你可以从存储库的 设置页 (Settings),或使用命令行工具来创建和管理 Cron 作业。

  • 用一个 Cron 表达式创建了一个名为 hourly 的定时任务示例:

    1
    
    $ drone cron add "octocat/hello-world" "hourly" "0 0 * * * *"
    
  • 用一个预先定义的计划表创建一个名为 deploy 的定时任务示例。

    1
    
    $ drone cron add "octocat/hello-world" "deploy" @daily
    
请注意,Drone Cloud 上的 Cron 调度功能是禁用的。该功能仅在自部署版本中可用。

表达式

Cron 表达式使用 6 个空格分隔的字段表示一组时间,其中也包括秒。

互联网上的大多数例子都是用 5 个空格分隔的字段来表示时间,并排除了秒。但排除秒会导致意外的预期。
字段名 是否强制? 允许的值 允许使用的字符
秒数 0-59 * / , -
分钟数 0-59 * / , -
小时 0-23 * / , -
月的日期 1-31 * / , - ?
月份 1-12 or JAN-DEC * / , -
周的日期 0-6 or SUN-SAT * / , - ?

使用几个预定义的计划调度指令之一来代替 Cron 表达式。

指令 表达式 描述
@yearly 0 0 0 1 1 * 每年运行一次,1 月 1 日凌晨 12 点 (12:00 a.m)。
@monthly 0 0 0 1 * * 每月运行一次,每月 1 日的凌晨 12 点 (12:00 a.m)
@weekly 0 0 0 * * 0 每周运行一次,周六/日之间的凌晨 12 点 (12:00 a.m)
@daily 0 0 0 * * * 每天运行一次,凌晨 12 点 (12:00 a.m)
@hourly 0 0 * * * * 每小时运行一次,每小时的开始

时区

目前的实施是基于 UTC 而不是本地时间来计算执行时间的。

计划调度

Cron 调度器 近似于每小时分批执行作业。这意味着 Cron 作业可以在预定执行时间后一小时内被处理,而高频率调度的作业每小时只能执行一次。这可以防止用户创建高频率的作业并使系统过载,但结果是意味着 Cron 调度的时间不那么精确。

你可以通过改变服务器的 Cron 间隔设置来减少一小时的窗口期,并提高调度的准确性。

自定义 Cron 时间间隔

流水线

Cron 调度器 会执行你的 yaml 配置文件中定义的所有匹配的流水线和步骤。参见流水线配置文档,以限制 Cron 执行流水线和流水线步骤。

限制流水线的执行 限制流水线步骤的执行