Jenkins 管道环境变量

Jenkins pipeline environment variables

我是 Jenkins 工作的新手,我似乎不知道如何使用全局环境变量。我需要找到我的 Jenkinsfile 所在的分支名称。我只将它放在一个功能分支中,因为我仍在测试它,并且我在管道的配置中指定了该功能分支。到目前为止,这是我的代码

pipeline {
    agent any

    options {
        buildDiscarder(logRotator(numToKeepStr:'3'))
        timeout(time: 30, unit: 'MINUTES')
    }

    tools {
    maven 'Maven 3.3.9'
    jdk   'JDK 1.8'
    }

    stages {
        stage('Checkout') {
            steps {
                echo 'Checking out..'
                checkout scm
                echo "My branch is: ${env.BRANCH_NAME}"
            }
        }

        stage('Build') {
            steps {
                echo 'Building..'
                bat 'mvn clean verify -P!local'
            }
        }

        stage('SonarQube analysis'){
            steps{
                echo 'Analysing...'
                withSonarQubeEnv('SonarQube') {
                    bat 'mvn org.sonarsource.scanner.maven:sonar-maven plugin:3.2:sonar'
                }
            }
        }
    }

}

我尝试了很多不同的方法,但我总是以 ${env.BRANCH_NAME}

的价格得到 null

请注意,只有当您 运行 多分支项目中的管道代码时,您才能获取分支名称环境变量。 Jenkins 的文档如下:

BRANCH_NAME 对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望从主分支而不是功能分支部署到生产环境;如果对应某种变更请求,名称一般随意(参考CHANGE_ID和CHANGE_TARGET)。

因此,您只能在多分支管道项目中使用环境变量。您可以使用以下变量在多分支项目中检索它: "${env.BRANCH_NAME}"