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

关于GitLab工作流Rules规则逻辑的疑问

关于GitLab工作流Rules规则逻辑的疑问

嘿,这个问题我刚接触GitLab Rules的时候也懵过,我给你掰扯清楚~ 你对GitLab Rules「只要一个if满足就生效」的理解完全没错,文档里的表述只是换了个说法,和你的逻辑其实是一致的。

先把这段配置拆解开看:

workflow:
  rules:
    - if: $CI_COMMIT_TITLE =~ /-draft$/
      when: never
    - if: $CI_PIPELINE_SOURCE == "merge_request_event"
    - if: $CI_COMMIT_BRANCH == $CI_DEFAULT_BRANCH

GitLab的Rules是从上到下依次匹配,只要命中第一个符合条件的规则,就执行对应的when动作,同时停止检查后续所有规则:

  • 第一优先级检查:如果提交标题以-draft结尾,直接触发when: never——也就是完全不创建流水线,后面的规则连看都不会看。
  • 如果第一步没命中(也就是标题不是draft结尾),就看第二条规则:如果当前是合并请求(MR)事件,这条规则没写when,默认是when: always,所以会创建流水线,之后也不会再检查第三条规则。
  • 如果第二条也没命中,就看第三条规则:如果当前分支是项目的默认分支,同样默认when: always,创建流水线。
  • 要是以上三条都没命中,那就不会创建流水线。

文档里说的「either A merge request or The default branch」,其实就是在说:排除了draft标题的前提下,只要满足MR或者默认分支其中任意一个条件,就会触发流水线——这正好就是你理解的「只要一个if成立就生效」的逻辑呀!

换个直白的说法,这个配置的逻辑就是:

只有当提交标题不以-draft结尾,并且(是MR事件 或者 是默认分支)的时候,才会创建流水线。

这里的「either」只是用来描述后面两个条件是二选一的关系,和你对Rules的逻辑理解完全不冲突哦~

备注:内容来源于stack exchange,提问作者Jim

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.04.22 10:28:04