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

如何根据$git_project变量条件执行Jenkins Pipeline不同阶段

Jenkins Pipeline按触发仓库选择性执行阶段实现方法

核心用流水线原生的条件判断能力即可,不需要额外安装插件,分两种常用流水线语法的实现方式:

  • 首先确认git_project变量已经正常注入流水线上下文:不管是webhook触发器传参、还是多仓库触发自动注入的变量,先在流水线最开始加打印步骤echo "当前触发仓库变量值:${git_project}"确认值能正常取到,避免后续判断因为变量为空/值不符合预期失效。

声明式流水线(最常用)写法

用阶段自带的when指令做条件拦截,只有满足匹配规则的阶段会被执行,不满足的阶段会直接跳过,示例代码:

pipeline {
    agent any
    // 可选:如果需要支持手动触发选择构建的仓库类型,可以加参数定义,自动触发时参数会被webhook传入的同名字段覆盖
    parameters {
        choice(name: 'git_project', choices: ['backend', 'frontend'], description: '触发构建的代码仓库标识')
    }
    stages {
        stage('拉取对应仓库代码') {
            steps {
                echo "当前触发构建的仓库:${git_project}"
                // 此处写对应仓库的代码拉取逻辑即可
            }
        }
        stage('后端构建&部署') {
            // 条件规则:仅当git_project值为backend时执行当前阶段
            when {
                environment name: 'git_project', value: 'backend'
            }
            steps {
                echo '执行后端构建全流程:依赖安装、编译、单元测试、镜像打包、服务部署'
                // 实际使用替换成你的后端构建命令,比如 sh 'mvn clean package -DskipTests'
            }
        }
        stage('前端构建&部署') {
            // 条件规则:仅当git_project值为frontend时执行当前阶段
            when {
                environment name: 'git_project', value: 'frontend'
            }
            steps {
                echo '执行前端构建全流程:依赖安装、资源打包、静态资源上传、站点部署'
                // 实际使用替换成你的前端构建命令,比如 sh 'pnpm install && pnpm build'
            }
        }
        stage('构建收尾') {
            steps {
                echo '执行前后端构建都需要走的公共步骤:发送构建通知、清理工作空间'
            }
        }
    }
}

如果你的git_project存的是完整仓库地址(比如git@code.xxx.com:project/backend-repo.git),不是固定的短标识,可以把when规则换成表达式匹配,支持更灵活的判断逻辑:

when {
    // 只要变量值里包含backend字符串就判定为后端仓库触发
    expression { return git_project.trim().contains('backend') }
}

注意给值加trim()是为了去掉传参时可能带的多余空格、换行符,避免因为格式问题判断失效。

脚本式流水线写法

脚本式语法直接用原生Groovy的if/else做分支判断即可,逻辑更灵活:

node {
    def targetProject = env.git_project.trim()
    stage('拉取代码') {
        echo "当前触发仓库:${targetProject}"
    }
    if (targetProject == 'backend') {
        stage('后端构建部署') {
            echo '执行后端构建流程'
        }
    } else if (targetProject == 'frontend') {
        stage('前端构建部署') {
            echo '执行前端构建流程'
        }
    }
    stage('公共收尾') {
        echo '执行通知、清理等公共步骤'
    }
}

内容的提问来源于stack exchange,提问作者HavyZail

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.30 05:36:47