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

如何仅在匹配特定分支名时运行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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.05.28 04:03:59