Gitlab CI中如何高效比对CI_COMMIT_REF与指定分支值列表
GitLab CI多分支排除规则简化方案
可以用GitLab CI规则原生支持的正则匹配语法实现更简洁的写法,和你原有逻辑完全一致,不需要拆分多个OR判断:
Test: stage: test rules: - if: $CI_COMMIT_REF_NAME =~ /^(develop|test|master)$/ when: never script: - echo "Test!"
相关说明
- 语法逻辑:GitLab CI的
if规则支持=~正则匹配运算符,上述正则表达式/^(develop|test|master)$/会完全匹配三个目标分支名,命中时就跳过当前Job,和你原有实现逻辑完全等效。正则开头的^和结尾的$用于限定全匹配,避免误伤名称包含目标分支关键词的其他分支(例如develop-feature这类分支不会被误排除)。 - 维护优势:后续需要新增排除分支时,只需要在正则括号内添加
|新分支名即可,不需要新增独立判断条件。 - 变量说明:上述示例中使用GitLab官方内置变量
$CI_COMMIT_REF_NAME获取当前分支/标签名,如果你原有自定义变量$CI_COMMIT_REF已经能正确获取分支名,替换为该变量即可。
GitLab CI目前没有原生的IN、CONTAINS关键字,上述正则写法是官方推荐的多值匹配方案,运行效率和原多条件判断完全一致,代码简洁度更高。
内容的提问来源于stack exchange,提问作者Third Fon
相关产品推荐
相关产品推荐

