定时器

# 简介

与普通流水线不同,定时流水线的触发方式是定时器。 定时器格式使用 POSIX cron syntax (opens new window)。 时区使用 UTC+8,即北京时间。

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

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

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

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

# 配置解析

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

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

# master

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

# crontab: 30 5,17 * * *

此处和普通流水线略有不同,对于普通流水线,这里填写的是一些 Git WebHook 事件名称,如 push 或者 merge_request

但是定时流水线需要填写的格式为 crontab: ${CRON}

  • crontab: 为定时流水线事件名固定前缀。
  • ${CRON} 为实际的定时器值,格式为标准 POSIX cron 语法。可以使用 https://crontab.guru/ (opens new window) 来将其转换为人类易读的格式。