如何仅在匹配特定分支名时运行Jenkins Pipeline阶段?
如何在Jenkins Pipeline中仅当分支匹配正则时运行阶段
嘿,这个需求我刚好实现过,Jenkins Pipeline的when条件其实有现成的正则匹配分支的方法,不用写伪代码那套~ 给你几种可行的实现方式:
方式一:简洁的正则分支匹配
这是最常用的写法,直接把正则表达式用斜杠包裹传给branch指令,Jenkins会自动识别为正则匹配:
pipeline { agent any stages { stage('Test') { when { // 匹配以foo开头、bar结尾的分支名 branch /^foo.*bar/ } steps { echo "这个阶段只会在分支名称匹配^foo.*bar规则时运行" } } } }
方式二:明确指定正则比较器
如果需要更清晰地表明匹配规则,可以用带参数的branch指令写法:
pipeline { agent any stages { stage('Test') { when { branch pattern: '^foo.*bar', comparator: 'REGEX' } steps { echo "效果和方式一完全一致,这种写法更直观" } } } }
方式三:灵活的自定义表达式判断
如果需要结合其他条件一起判断(比如同时满足分支正则和某个环境变量),可以用expression块手动实现正则匹配:
pipeline { agent any stages { stage('Test') { when { expression { // env.BRANCH_NAME是Jenkins内置的环境变量,存储当前分支名称 env.BRANCH_NAME ==~ /^foo.*bar/ } // 这里可以再加其他条件,比如环境变量判断 // environment name: 'BUILD_ENV', value: 'test' } steps { echo "用expression块实现的正则匹配,灵活性拉满" } } } }
小提示
env.BRANCH_NAME在多分支流水线(Multibranch Pipeline)或者指定了分支的流水线中都能正常获取分支名,大部分场景下都够用。- 正则表达式的语法遵循Java的正则规则,如果你对正则不太熟,可以先本地测试好再放到Jenkinsfile里。
内容的提问来源于stack exchange,提问作者Michael Butler
相关产品推荐
相关产品推荐

