GitLab CI rules如何实现多条件同时满足才触发作业?
GitLab CI 多条件同时满足的rules配置方案
GitLab CI 中 rules 的默认匹配逻辑如下:
- 同一条规则内的多个判断属性(
if/changes/exists等)为且关系,需要全部满足才会命中该条规则 - 多条规则之间为或关系,命中任意一条规则就会将作业加入流水线
你当前的写法是把两个条件拆成了两条独立规则,所以只要满足其中任意一个条件就会触发作业。要实现两个条件同时满足才触发,只需要把if和changes合并到同一条规则中即可,正确配置如下:
rules: - if: '$CI_PIPELINE_SOURCE == "merge_request_event" && $CI_MERGE_REQUEST_TARGET_BRANCH_NAME == "main"' changes: - folder1/*.xml # 注意你原配置中的路径写为filder1,若为拼写错误请自行修正
上述配置生效后,只有同时满足「是目标分支为main的合并请求流水线」、「folder1目录下的xml文件发生变更」两个条件,作业才会被加入流水线,否则不会纳入流水线。
内容的提问来源于stack exchange,提问作者Med
相关产品推荐
相关产品推荐

