如何在GitLab CI中使用正则表达式排除指定分支?
解决GitLab CI排除指定分支的规则配置问题
你的正则表达式写错了,导致匹配逻辑完全不符合预期,这才会出现作业要么全跑要么全不跑的情况。
错误原因分析
你写的^feature\.*\/.*里,\.*是匹配0个或多个点,但你的目标分支是feature/issues-xxx,这里是斜杠/而不是点,所以这个正则根本匹配不到你想要的分支,自然起不到排除作用。
正确配置写法
要排除所有以feature/issues-开头的分支,正确的rules配置应该是:
rules: # 匹配以feature/issues-开头的分支,直接跳过作业 - if: '$CI_COMMIT_BRANCH =~ /^feature\/issues-/' when: never # 其他所有分支都执行该作业 - when: always
补充说明
- 正则里的
^feature\/issues-明确匹配**以feature/开头,后面紧跟issues-**的分支,完全符合你要排除的分支格式(比如feature/issues-70、feature/issues-771)。 - 规则顺序很重要:先写排除规则,再写默认执行的规则,这样GitLab CI会按顺序判断,符合排除条件的分支直接跳过,其他分支正常执行作业。
内容的提问来源于stack exchange,提问作者HavyZail
相关产品推荐
相关产品推荐

