如何配置GitLab Job规则:仅变量RUN取值为run3时不执行
问题根因
- GitLab CI 的
rules存在默认行为:当所有规则都没有匹配成功时,Job 默认不执行。你当前的配置仅定义了RUN == "run3"时跳过的规则,其余所有场景(包括RUN未定义、RUN取值不为run3)都没有匹配到任何规则,因此Job被默认跳过,这就是RUN未定义时Job不运行的核心问题。 - 你之前尝试的
$RUN != null、$RUN != ""判断属于冗余逻辑,GitLab CI 对未定义的变量直接做$RUN == "run3"判断时会直接返回false,不会报错,不需要额外加非空判断。
修复后的配置
rules: - if: $RUN == "run3" when: never - when: always
该配置完全匹配你的需求:
- 变量
RUN未定义:不命中第一条规则,命中第二条规则,Job执行 - 变量
RUN已定义且取值不为run3:不命中第一条规则,命中第二条规则,Job执行 - 变量
RUN已定义且取值为run3:命中第一条规则,Job直接跳过
小提示:如果你不需要手动触发、定时调度等所有事件都执行Job,只需要保留GitLab默认的触发场景(代码推送、合并请求等),可以把第二条规则的
when: always替换为when: on_success,效果为仅在默认触发事件且前置步骤执行成功时运行Job。
内容的提问来源于stack exchange,提问作者Alex
相关产品推荐
相关产品推荐

