You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

能否通过.gitlab-ci.yaml配置GitLab定时CI/CD流水线?

核心结论

GitLab 不支持直接在 .gitlab-ci.yaml 文件内配置流水线的定时调度规则,类似「每日上午08:00自动运行」这类时间触发规则,无法仅通过提交到仓库的CI配置文件实现。
.gitlab-ci.yaml 的作用域仅为定义流水线触发后的执行逻辑、触发条件过滤,定时调度属于GitLab服务端侧管控的配置项,需要在项目的GitLab界面完成设置。

定时调度的配置方法

你可以按照以下步骤配置每日8点自动运行的流水线:

  • 进入目标GitLab项目页面,在左侧菜单栏依次进入 CI/CD -> Schedules(调度计划)
  • 点击「新建调度」按钮
  • 填写调度配置项:
    • 填写调度描述,方便后续识别规则用途
    • 选择调度触发的目标分支/标签
    • 设置触发规则:选择cron表达式模式,填写 0 8 * * * 即可实现每日8点整触发,注意核对页面上的时区配置和你预期的时区一致
    • 可按需配置该调度专属的CI变量,用于后续在流水线逻辑中做区分
  • 保存配置后,调度就会按设定规则自动触发流水线

.gitlab-ci.yaml 对定时流水线的适配写法

虽然不能直接在YAML中定义调度时间,但你可以通过GitLab内置的预定义变量判断流水线触发来源,让定时触发的流水线执行专属逻辑,示例配置如下:

stages:
  - build
  - daily_task

# 普通代码提交触发的构建任务
normal_build:
  stage: build
  script:
    - echo "执行常规代码构建"
  rules:
    - if: '$CI_PIPELINE_SOURCE != "schedule"'

# 仅定时调度触发的每日任务
daily_8oclock_task:
  stage: daily_task
  script:
    - echo "执行每日8点定时任务:全量构建+环境部署"
    - sh ./daily_deploy.sh
  rules:
    - if: '$CI_PIPELINE_SOURCE == "schedule"'

如果你配置了多个不同时间的调度,还可以在创建调度时添加自定义变量(比如给每日8点的调度添加 TASK_TYPE=daily_full,给每小时的巡检调度添加 TASK_TYPE=hourly_check),在YAML中通过判断自定义变量的值,给不同调度匹配不同的执行逻辑。


内容的提问来源于stack exchange,提问作者Arun Vasu

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.27 13:01:05