首页/开发/CI/CD 与发布速查/流水线触发方式总览
流水线设计54 条

流水线触发方式总览

推送、合并请求、标签、定时、手动与 API 触发各有适用场景,组合使用才能覆盖「日常验证 + 按需发布」。

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

触发方式总览

流水线触发方式各有适用场景:推送(push)、合并请求(MR/PR)、标签(tag)、定时(schedule)、手动与 API。组合使用才能覆盖日常验证加按需发布:日常验证走 push 与 MR,发布走标签或手动,巡检走定时。原则是把触发条件写在仓库里(GitLab 的 rules、GitHub 的 on),比在平台界面点击配置更可审计;同时避免同一提交被多种触发器重复产生流水线。

常见触发

push分支日常验证
MR/PR合入前验证合并结果
tag版本发布入口
schedule夜间回归与巡检
manual/API按需发布与重跑

触发与示例

触发典型用途示例
push 推送分支日常验证GitHub 用 on: push
merge/pull request合入前验证GitLab 用 merge_request_event
tag 标签版本发布GitLab 用 $CI_COMMIT_TAG 判断
schedule 定时夜间回归与巡检GitHub 用 on: schedule
manual/API按需发布与重跑GitLab 用 when: manual

GitLab rules 组合

GitLab rules 组合
rules:
  - if: $CI_PIPELINE_SOURCE == "merge_request_event"
  - if: $CI_COMMIT_TAG
  - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

典型使用场景

  • 日常提交:push 触发轻量检查,控制反馈时长。
  • 合入前:MR 触发完整验证,防止主干红灯。
  • 版本发布:推送 v 系列标签自动进入发布流水线。
  • 巡检与回归:定时跑全量测试、依赖检查与清理任务。
  • 应急重跑:手动按钮或 API 重跑失败阶段与补偿任务。
  • 组合治理:用工作流规则或事件过滤去掉重复触发,例如分支流水线与 MR 流水线并存时收敛。
触发条件写在仓库里(rules 或 on),比在平台上点击配置更可审计,也随代码一起评审。
GitHub 定时任务在默认分支上运行且使用 UTC 时间:切换默认分支会改变行为,需要纳入变更评审。
API 触发使用专用的流水线触发器令牌:个人凭据随人员变动失效,专用令牌可单独审计与吊销。

触发通道安全

  • 敏感触发的凭据隔离:发布与部署作业使用专用变量,并限定只在保护分支或标签的流水线中注入。
  • 手动触发也应有权限边界:能点发布按钮的开发与能改代码的人分开,环境规则里显式配置允许者。
  • 重跑要留下记录:手动重跑与 API 触发都产生审计事件,复盘时能还原谁在何时触发了什么。
定时任务适合承载长耗时与非紧急任务:夜间全量回归、依赖巡检、环境清理,把提交路径留给快速检查。

易错点

  • 分支与 MR 双触发导致同一提交跑两遍流水线:用 workflow:rules 或事件过滤收敛重复触发。
  • 定时任务默认在默认分支上运行:切换默认分支后行为变化且不易察觉。
  • 定时任务失败无人看管:应接入通知渠道,否则形同虚设。
  • 用个人令牌配置 API 触发:人员变动即中断,且无法按来源审计,应改用专用触发器令牌。
  • 标签发布入口无保护:任何人都能推标签触发发布,应加保护标签与创建权限。

数据来源与参考

  • GitLab Docs《Pipeline triggers》
  • GitHub Docs《Events that trigger workflows》
​‌‌​​‌​​​‌‌​‌‌‌‌​‌‌​​​‌‌​‌‌‌​​‌‌​​‌​‌‌‌​​‌‌‌​​​‌​‌‌​‌​​‌​‌‌‌​​​‌​‌‌​‌​​‌​‌‌​​​‌‌​‌‌‌​‌​​​‌‌​‌‌‌‌​​‌​‌‌‌​​‌‌​​​‌‌​‌‌​‌‌‌‌​‌‌​‌‌​‌