GitLab CI管道:按$CI_COMMIT_TAG状态控制Job执行异常问题
GitLab CI 标签与非标签场景Job执行配置问题
你的配置存在逻辑漏洞:when_no_tag Job仅定义了存在标签时不执行的规则,但未指定无标签时的执行规则。GitLab CI的rules机制是:只有当至少一条规则匹配时,Job才会运行;若没有任何规则匹配,Job会被自动跳过。因此无标签提交时,when_no_tag没有匹配的规则,导致两个Job都不执行。
修正后的配置方案
方案一:补充默认执行规则
when_tag: rules: - if: $CI_COMMIT_TAG when: always script: - echo "Tag" when_no_tag: rules: - if: $CI_COMMIT_TAG when: never - when: always # 无标签时触发该规则,执行Job script: - echo "No tag"
方案二:直接判断无标签场景
when_tag: rules: - if: $CI_COMMIT_TAG when: always script: - echo "Tag" when_no_tag: rules: - if: '!$CI_COMMIT_TAG' when: always script: - echo "No tag"
执行效果
- 创建标签时:
when_tag匹配规则执行,when_no_tag因匹配到$CI_COMMIT_TAG规则被跳过; - 普通无标签提交时:
when_tag无匹配规则被跳过,when_no_tag匹配规则执行。
内容的提问来源于stack exchange,提问作者Daniel Walker
相关产品推荐
相关产品推荐

