2017-03-17 196 views
1

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

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

回答

3

请注意,只有当你在MultiBranch Project中运行管道代码,您将能够获取分支名称环境变量。来自Jenkins的文档如下:

BRANCH_NAME 对于多分支项目,这将设置为正在构建的分支的名称,例如,如果您希望从主分支部署到生产部分,而不是从功能分支部署到生产部分;如果对应某种更改请求,则该名称通常是任意的(请参阅CHANGE_ID和CHANGE_TARGET)。

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

+0

这样做更有意义。我想我认为如果我使用多分支项目并不重要。谢谢! – GhostDonkeys