GitLab CI规则引用采用AND还是OR逻辑?
GitLab CI规则引用的逻辑判定
你遇到的这种情况,GitLab CI会将这两条引用的规则视为OR(或)条件,只要任意一条规则的条件满足,任务就会触发运行。
具体逻辑说明
GitLab CI的rules是按顺序进行判断的:
- 从第一条规则开始检查,只要某一条规则的条件为真,就会直接决定任务的运行状态(默认满足条件时任务运行),不会再继续判断后续规则。这就是你观察到“第一条规则为真时任务即运行”的原因。
- 如果第一条规则不满足,才会继续检查第二条规则,若第二条满足,任务同样会运行。
代码对应场景
你的规则定义和引用写法等价于直接写:
job_one: ... rules: - if: '$APPLE == "apple"' - if: '$ORANGE == "orange"'
这种写法下,只要APPLE等于apple或者ORANGE等于orange,job_one就会运行。
如何实现AND(与)逻辑
如果需要两个条件同时满足才运行任务,需要将两个条件合并到同一条规则的if语句中,用&&连接:
.run_for_both: - if: '$APPLE == "apple" && $ORANGE == "orange"' job_one: ... rules: - !reference [.run_for_both]
内容的提问来源于stack exchange,提问作者Jane
相关产品推荐
相关产品推荐

