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

GitLab CI/CD流水线未运行:.pre阶段任务未按预期执行

GitLab CI/CD流水线未执行问题排查与修复

问题原因

你的配置中,red_job和blue_job的规则条件均未满足(VAR2默认值为bar,但规则要求VAR2 == "foo"),导致这两个Build阶段的Job都不会被执行。

GitLab CI的默认逻辑是:如果没有任何非.pre/.post阶段的用户自定义Job被选中执行,整个流水线会被判定为"无作业可运行",直接跳过启动流程——哪怕.pre阶段的pre_job设置了when: always也不例外。这里的when: always仅作用于Job被选中后的执行时机,无法强制触发整个流水线。

修复方案

方案1:为.pre阶段Job添加独立规则确保触发

修改pre_job配置,将when: always放入rules中,确保该Job始终被选中,从而强制流水线启动:

pre_job:
  stage: .pre
  image: alpine:latest
  script: echo "I'm a pre job"
  rules:
    - when: always

方案2:添加兜底Job触发流水线

在Build阶段新增一个默认执行的兜底Job,确保至少有一个Job被选中:

fallback_job:
  stage: build
  image: alpine:latest
  script: echo "Fallback job running"
  rules:
    - when: always

或者更精准地只在其他Job不满足条件时触发:

fallback_job:
  stage: build
  image: alpine:latest
  script: echo "Fallback job running"
  rules:
    - if: '$VAR1 != "red" || $VAR2 != "foo"'
      when: always
    - if: '$VAR1 != "blue" || $VAR2 != "foo"'
      when: always

方案3:通过workflow规则强制创建流水线

在配置顶部添加workflow规则,强制GitLab始终创建流水线:

workflow:
  rules:
    - when: always

注意:此方案会导致所有事件(如合并请求关闭、分支删除等)都触发流水线,需根据实际场景调整规则条件。

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.06.26 22:42:34