流水线计划
流水线通常基于满足某些条件而运行。例如,当一个分支被推送到仓库时。
流水线计划也可用于以特定时间间隔运行流水线。例如:
- 针对某个分支,每个月的 22 日(cron 示例:
0 0 22 * *
)。 - 每个月的第二个星期一(cron 示例:
0 0 * * 1#2
)。 - 每隔一个星期天的 0900(cron 示例:
0 9 * * sun%2
)。 - 每天一次(cron 示例:
0 0 * * *
)。
计划时间使用 cron 符号配置,由 Fugit 解析。
先决条件
为了成功创建计划的流水线:
- 计划所有者必须具有权限,才能合并到目标分支。
- 流水线配置必须有效。
否则不会创建流水线。
配置流水线计划
要为项目配置计划流水线:
- 导航到项目的 CI/CD > 计划 页面。
- 点击 新建计划 按钮。
- 填写 新建流水线计划表格。
- 单击 保存流水线计划 按钮。
流水线执行时间取决于 Sidekiq 自己的时间表。
在 计划 索引页面中,您可以看到计划运行的流水线列表。下一次运行由安装 GitLab 的服务器自动计算。
使用变量
您可以传递任意数量的任意变量。它们在 GitLab CI/CD 中可用,可以在您的 .gitlab-ci.yml
文件中使用。
使用 rules
要将作业配置为仅在流水线已计划时执行,请使用 rules
关键字。
在这个例子中,make world
在计划流水线中运行,而 make build
在分支和标签流水线中运行:
job:on-schedule:
rules:
- if: $CI_PIPELINE_SOURCE == "schedule"
script:
- make world
job:
rules:
- if: $CI_PIPELINE_SOURCE == "push"
script:
- make build
高级配置
流水线不会完全按计划执行,因为计划由 Sidekiq 处理,Sidekiq 根据其间隔运行。
例如,如果出现以下情况,每天只会创建两个流水线:
- 您设置了一个计划,每分钟创建一个流水线 (
* * * * *
)。 - Sidekiq worker 每天在 00:00 和 12:00 运行(
0 */12 * * *
)。
要更改 Sidekiq worker 的频率:
- 编辑实例的
gitlab.rb
文件中的gitlab_rails['pipeline_schedule_worker_cron']
值。 - 重新配置极狐GitLab 使更改生效。
使用计划的流水线
配置后,极狐GitLab 支持许多用于处理计划流水线的功能。
手动运行
要手动触发流水线计划,请单击“运行”按钮:
这将安排后台作业以运行流水线计划。一条消息将提供一个指向 CI/CD 流水线索引页面的链接。
为了帮助避免滥用,用户被限制为每分钟触发一次流水线。
取得所有权
流水线为拥有计划的用户执行。这会影响流水线可以访问的项目和其他资源。
如果用户不拥有流水线,您可以通过单击 获取所有权 按钮获取所有权。 下次安排流水线时,将使用您的凭据。
如果流水线计划的所有者无法在目标分支上创建流水线,计划将停止创建新流水线。
这可能发生在,例如:
- 所有者被禁用或从项目中删除。
- 目标分支或标签受到保护。
在这种情况下,具有足够权限的人必须拥有计划的所有权。