如何在Jenkinsfile中基于分支名子串实现Stage条件执行?
在Jenkinsfile中基于分支名称子串实现Stage条件执行的方法
这事儿在Jenkins Pipeline里其实挺容易实现的,核心就是利用Jenkins自动注入的环境变量env.BRANCH_NAME获取当前分支名,再结合Groovy的字符串匹配方法,放到Stage的when条件块里就行。我给你写个完整的示例,一看就懂:
pipeline { agent any stages { stage('通用初始化') { steps { echo "当前分支: ${env.BRANCH_NAME}" // 这里放所有分支都要执行的初始化操作 } } stage('仅在bottom-level分支执行的Stage') { when { expression { // 判断分支名是否包含指定子串 env.BRANCH_NAME.contains('bottom-level-branch') } } steps { echo "正在执行bottom-level专属操作,分支: ${env.BRANCH_NAME}" // 这里放你的具体任务,比如构建、部署等 } } stage('仅在middle分支执行的Stage') { when { expression { env.BRANCH_NAME.contains('middle-') } } steps { echo "正在执行middle专属操作,分支: ${env.BRANCH_NAME}" // 这里放middle分支的专属任务 } } stage('通用收尾') { steps { echo "所有必要操作完成" } } } }
关键细节说明:
env.BRANCH_NAME:Jenkins会自动把当前流水线对应的分支名注入到这个环境变量里,多分支流水线、自由风格项目里都能直接用。contains():Groovy原生的字符串方法,用来判断目标字符串是否包含指定子串,完全符合你要的“bottom-level-branch-1/2/3都能匹配”的需求。when块:Jenkins Pipeline用来控制Stage是否执行的核心语法,里面的expression块可以写任意Groovy表达式,返回true时Stage才会运行。
如果需要更复杂的匹配规则(比如区分大小写、正则匹配),也可以调整表达式:
// 忽略大小写的匹配 expression { env.BRANCH_NAME.toLowerCase().contains('bottom-level-branch') } // 正则匹配(比如匹配以bottom-level-branch开头的分支) expression { env.BRANCH_NAME ==~ /^bottom-level-branch.*/ }
这样写出来的流水线就会根据分支名自动跳过不需要执行的Stage,完全满足你的需求~
内容的提问来源于stack exchange,提问作者CodeMed
相关产品推荐
相关产品推荐

