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

GitLab Runner调度设置:如何配置仅夜间接收任务?

当然可以实现!GitLab Runner完全能满足你白天让机器处理其他任务、夜间才承接CI/CD任务的需求,和Jenkins里的定时调度逻辑类似,下面给你详细说两种常用的实现思路:

实现方案

方案一:通过系统定时任务启停Runner服务

这种方法直接从Runner服务层面控制,白天停止Runner服务,让它完全不接收任务;夜间启动服务,恢复任务处理。适合希望机器白天彻底释放资源的场景。

以Linux系统为例:

  1. 先确认你的GitLab Runner服务名称,一般默认是gitlab-runner,可以用systemctl status gitlab-runner验证
  2. 编辑系统定时任务:
    crontab -e
    
  3. 添加以下定时规则(根据你的实际时段调整时间,比如晚上20点启动,早上8点停止):
    # 每天20:00启动GitLab Runner服务
    0 20 * * * systemctl start gitlab-runner
    # 每天8:00停止GitLab Runner服务
    0 8 * * * systemctl stop gitlab-runner
    
  4. 保存退出crontab,系统会自动生效。

如果是Windows系统,可以通过「任务计划程序」创建两个定时任务,分别调用net start gitlab-runner和net stop gitlab-runner命令来实现启停。

方案二:标签+流水线规则+调度计划组合控制

这种方法更灵活,不需要停止Runner服务,而是通过规则限制只有夜间调度的流水线才能使用这台Runner,白天即使Runner运行,也不会承接非夜间的任务。

具体步骤:

  1. 给目标Runner添加专属标签
    进入GitLab项目的「Settings」→「CI/CD」→「Runners」,找到你的机器对应的Runner,点击「Edit」,添加一个标签(比如night-only-runner),保存设置。
  2. 修改.gitlab-ci.yml配置job规则
    在需要夜间运行的job中,指定专属标签,并添加规则限制只有调度触发的流水线才能执行:
    nightly-build-job:
      script:
        - echo "开始夜间构建任务..."
        # 这里写你的实际任务脚本
      tags:
        - night-only-runner
      rules:
        # 只允许调度计划触发的流水线执行该job
        - if: '$CI_PIPELINE_SOURCE == "schedule"'
          when: always
        # 其他触发方式(手动、push等)都不执行
        - when: never
    
  3. 创建夜间流水线调度计划
    进入项目的「CI/CD」→「Schedules」,点击「New schedule」:
    • 设置调度的时间范围(比如每天20:00触发,或者设置多个时段覆盖整个夜间)
    • 可以添加自定义变量(比如NIGHTLY_RUN=true)方便后续扩展规则
    • 保存调度计划,之后到点就会自动触发使用该Runner的流水线。

方案三:暂停/恢复Runner(轻量版)

如果不想完全停止服务,也可以用GitLab Runner自带的暂停/恢复命令,结合系统定时任务来控制:

# 恢复Runner接收任务(晚上20点)
0 20 * * * gitlab-runner resume <你的Runner令牌>
# 暂停Runner接收任务(早上8点)
0 8 * * * gitlab-runner pause <你的Runner令牌>

Runner令牌可以在GitLab的Runner详情页找到。

这三种方案里,方案一最直接,能彻底释放机器资源;方案二更灵活,适合需要保留Runner服务但控制任务触发的场景,你可以根据自己的实际需求选择。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.13 07:50:17