首页/开发/CI/CD 与发布速查/定时流水线(Scheduled Pipeline)
流水线设计54 条

定时流水线(Scheduled Pipeline)

按 cron 计划运行:夜间全量回归、依赖巡检、安全扫描、环境清理,把长耗时与非紧急任务移出提交路径。

CI/CD 与发布速查开发更新于 2026-10-13

定时流水线是什么

按 cron 计划触发的流水线:夜间全量回归、依赖更新巡检、安全扫描、环境清理,把长耗时与非紧急任务移出提交路径,让白天的反馈保持快速。定时任务无人盯守,失败必须接通知渠道,否则等于没跑。触发时通常还会注入自定义变量(如 NIGHTLY=true)供脚本区分运行来源。

基本信息

GitLabPipeline schedules 页面配置 cron 语法与目标分支
GitHubon: schedule 使用 POSIX cron,UTC 时区,跑默认分支
Jenkinstriggers { cron('H 2 * * 1-5') } 用 H 分散高峰
时间基准各平台时区不同,换算本地时间要小心
失败处理接入通知渠道并保留运行记录

典型使用场景

  • 夜间全量回归:长时间集成测试放在低峰执行。
  • 依赖巡检:定期检查过期依赖与安全公告。
  • 安全扫描:低频但耗时的深度扫描任务。
  • 清理维护:定时清理构建产物、缓存与临时环境。
  • 报表生成:每日质量与流量报告定时产出。
  • 环境巡检:定期检查证书有效期与域名解析。

GitHub Actions

GitHub Actions
on:
  schedule:
    - cron: '0 18 * * 1-5'   # UTC 时间
jobs:
  nightly:
    runs-on: ubuntu-latest
    steps: [{run: ./ci/nightly.sh}]

平台对照

平台配置位置时间与分支
GitLabPipeline schedules按平台时区,需指定目标分支
GitHubworkflow 的 on.scheduleUTC,只统计默认分支
Jenkinscron 触发器按服务器时区,H 分散执行
GitHub 定时任务在默认分支上运行且时间为 UTC;执行高峰可能出现延迟,关键任务要容忍晚跑。
把失败送进通知渠道:无人值守的任务出问题没人知道,等于没有这条流水线。
给定时运行传标记变量:脚本按 NIGHTLY 之类的变量调整范围,平时只跑冒烟集。
运行记录要保留:定时任务的日志与历史结果至少留存一个周期,用于判断这次失败是偶发还是趋势。
巡检频率与资产变化速度匹配:过高产生噪声,过低漏掉窗口,先定目标再定周期。

易错点

  • 定时任务结果无人看管:失败要接入通知渠道,否则形同虚设。
  • 多个定时任务同一时间点:争抢并发与 Runner,应错峰配置 cron。
  • cron 时间按本地时区心算:GitHub 用 UTC,差八小时直接落错时间段。
  • 定时任务直接操作生产:缺审批与保护规则,自动变更也可能造成事故。
  • 长任务没有超时:夜间挂起占满资源,白天提交全部排队。
  • 默认分支跑全量脚本:分支实验环境的逻辑未合并,定时任务行为与预期不符。

数据来源与参考

  • GitLab Docs《Pipeline schedules》
  • GitHub Docs《Events that trigger workflows》
  • Jenkins Handbook《Pipeline Syntax》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌