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

如何在Jenkins多分支流水线中获取主作业名称?

获取Jenkins多分支流水线的主作业名称

我编写了一个Jenkins流水线脚本,需要获取多分支流水线的主作业名称——对应URL https://host:port/job/<WHAT-I-NEED>/job/<MULTI-BRANCH-NAME>/ 中的<WHAT-I-NEED>部分。尝试了以下环境变量及属性均未得到目标内容:

stage('Check environment') {
      steps {
        echo "Workspace: ${env.WORKSPACE}"
        echo "Job name: ${env.JOB_NAME}"
        echo "Job base name: ${env.JOB_BASE_NAME}"
        echo "Branch name: ${env.BRANCH_NAME}"
        echo "Build display name: ${env.BUILD_DISPLAY_NAME}"
        echo "Current build: ${currentBuild}"
        echo "Full Project display name: ${currentBuild.fullProjectName}"
        echo "Project display name: ${currentBuild.projectName}"
        echo "Change branch: ${env.CHANGE_BRANCH}"
        echo "Change target: ${env.CHANGE_TARGET}"
      }
}

流水线简化输出如下:

Workspace: null
Job name: <WHAT-I-NEED>/<MULTI-BRANCH-NAME>
Job base name: <MULTI-BRANCH-NAME>
Branch name: <MULTI-BRANCH-NAME>
Build display name: #<NUMBER>
Current build: org.jenkinsci.plugins.workflow.support.steps.build.RunWrapper@30e963bc
Full Project display name: <WHAT-I-NEED>/<MULTI-BRANCH-NAME>
Project display name: <MULTI-BRANCH-NAME>
Change branch: null
Change target: null

可行解决方案

方案1:拆分env.JOB_NAME变量

从输出可见env.JOB_NAME的值为<WHAT-I-NEED>/<MULTI-BRANCH-NAME>,直接按斜杠分割取第一个元素即可:

stage('Get Main Job Name') {
    steps {
        script {
            def mainJobName = env.JOB_NAME.split('/')[0]
            echo "Main Job Name: ${mainJobName}"
        }
    }
}

方案2:通过Jenkins内部对象获取父作业名称

如果担心作业名存在特殊字符(注:Jenkins实际不允许作业名包含斜杠),可通过currentBuild的层级关系获取:

stage('Get Main Job Name via Jenkins API') {
    steps {
        script {
            // 分支作业的父是多分支项目,多分支项目的父就是主作业
            def mainJob = currentBuild.parent.parent
            echo "Main Job Name: ${mainJob.name}"
        }
    }
}

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

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.07.19 02:25:08