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
相关产品推荐
相关产品推荐

