定时任务

# 简介

与普通流水线不同,定时流水线的触发方式是定时器。 定时任务格式使用 POSIX cron 语法。 时区使用 Asia/Shanghai

下面案例中的定时流水线会在每天 Asia/Shanghai 时间 5:30 和 17:30 时执行。在执行时,会以定时任务负责人作为流水线触发人,取 main 分支的代码来运行。 负责人是把定时任务配置(添加或变更)推送到仓库的用户。例如 A 用户将案例的配置推送到 main 分支, 负责人就是 A,后续 B 用户改了 crontab: 30 5,17 * * * 事件中的配置,负责人则变成 B

当定时任务负责人被移除仓库时,定时任务流水线会失败,可通过修改定时任务配置内容重新推送以更新负责人。

main:
  # 普通 push 事件流水线
  push:
    - stages:
        - name: test
          script: echo 1
  # 定时流水线
  "crontab: 30 5,17 * * *":
    # 修改内容可重新关联定时任务触发者,建议修改name,改出问题的风险低
    - name: crontab-a
      stages:
        - name: test
          script: echo 1

为了提供更可靠的服务,我们限制了定时任务最小的时间间隔为 5 分钟,低于 5 分钟间隔的定时任务(例如:* * * * *)将无法成功添加。

# 配置解析

这部分内容将会将定时流水线每部分的配置格式和含义进行详细解释。

main:
  "crontab: 30 5,17 * * *":
    - stages:
        - name: test
          script: echo 1

# main

此处和普通流水线一样,可以填写仓库中的已存在分支名。含义为,定时流水线执行时所采用的代码。 比如写为 main,那么当流水线执行时候,会采用 main 分支的 HEAD 处代码。

为提高资源利用率,定时任务流水线分支名不支持 glob 表达式,只能是明确的分支名。

# crontab: 30 5,17 * * *

普通流水线一般是某个操作触发的事件,如 push 或者 pull_request,是一次性的事件。

但是定时流水线是用定时器触发,填写的格式为 crontab: ${CRON}

  • crontab: 为定时流水线事件名固定前缀。
  • ${CRON} 为实际的执行时间,格式为标准 POSIX cron 语法。