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

GitLab CI流水线仅执行publish作业,deploy未触发问题咨询

GitLab CI deploy作业未触发的原因及解决方法

以下是按排查优先级排序的常见原因和对应解决方案:

1. 分支触发规则不匹配

你配置的deploy作业指定了only: - master,仅当代码提交到master分支时才会触发该作业。如果当前提交的分支不是master(比如很多仓库默认主分支已改为main,或者你提交到了功能分支、测试分支),deploy作业会直接被过滤不执行。

  • 解决方案:
  • 确认你本次提交的目标分支是master
  • 如果需要适配其他分支,修改only配置即可,比如适配主分支为main的场景:
only:
  - main
  • 也可以根据需求扩展触发规则,比如增加tag触发、合并请求触发等。

2. 无匹配标签的可用Runner

deploy作业配置了tags: - deployment,该配置要求只有打了deployment标签的GitLab Runner才能拾取运行该作业。如果你的项目、所属群组或GitLab实例下没有带该标签的可用Runner,或者对应Runner处于离线、禁用状态,deploy作业会无法运行。

  • 解决方案:
  • 进入项目「设置」→「CI/CD」→「Runner」页面,确认存在状态为活跃的、带deployment标签的Runner
  • 如果没有对应Runner,可以选择给现有Runner添加deployment标签,或者删除deploy作业中的tags配置,让通用Runner可以拾取该作业。

3. 阶段依赖或触发规则异常

虽然你已经配置了stages的顺序为publish在前deploy在后,但如果存在以下情况也会导致deploy不运行:

  • publish作业配置了allow_failure: true,且执行过程中出现了非致命错误,状态为警告而非成功
  • 你引用的外部CI模板给deploy作业默认添加了when: manual手动触发规则
  • 解决方案:
  • 确认publish作业的执行状态是完全成功,没有警告标识
  • 给deploy作业显式添加触发和依赖配置,强制在前序作业成功后自动运行:
deploy:
  # 保留原有其他配置,新增以下两行
  needs: ["publish"]
  when: on_success

4. 环境部署规则限制

你配置了environment: name: staging,如果项目设置了staging环境的保护规则,仅允许特定角色的用户提交触发部署,或者配置了部署前需要手动审批,也会导致deploy作业不自动执行。

  • 解决方案:
  • 进入项目「设置」→「CI/CD」→「环境」页面,检查staging环境的保护规则和审批设置
  • 调整规则允许当前提交用户触发部署,或根据需求关闭审批要求。

内容的提问来源于stack exchange,提问作者Paolo Donato Navarro

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.09.27 21:24:04