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

如何在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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.25 07:31:24