首页 > 解决方案 > 在 jenkinsfile 中使用 branch-env.BRANCH_NAME 修改 env.BRANCH_NAME 变量,用于多分支管道项目

问题描述

我创建了一个多分支管道项目,因此创建了 jenkinsfile 并将其放在 dev 分支中。在其中一个阶段,我必须运行 mvn sonar:sonar -Dsonar.scm.branch=branch-${env.BRANCH_NAME} 但它会给出错误替换分支-${env.BRANCH_NAME}。我需要 branch-${env.BRANCH_NAME} 作为分支名称,以便在声纳我可以在声纳仪表板的分支部分看到分支开发。

如果我使用 mvn sonar:sonar -Dsonar.scm.branch=env.BRANCH_NAME 那么它提供输出,但它将充当声纳中的短期分支。但在声纳,我们希望分支作为长寿分支。

!/usr/bin/env groovy

管道{代理{标签'ol73_slave-jdk8u192-git'}

options {
    timestamps()
    timeout(time: 2, unit: 'HOURS')
    buildDiscarder(logRotator(numToKeepStr: '10'))
    disableConcurrentBuilds()
}

stages {
    stage('Checkout') {
        steps {
            checkout scm
              }
                      }





    stage('Unit Test and Code Scan') {
        steps {


          echo "*****JUnit Tests, JaCoCo Code Coverage, & SonarQube Code Qualiy Scan*****"
         withMaven(jdk: 'jdk8_u192', maven: 'maven-3.3.9', mavenSettingsConfig: '79ecf9bd-8cbc-4d5e-b7d1-200241e16b52') {

         sh '''


           cd DARC
             mvn clean package sonar:sonar -Dsonar.host.url=***** -Dsonar.login=******* -Dsonar.exclusions=file:**/src/test/** -B -Pcoverage -Dsonar.branch.name=branch-${env.BRANCH_NAME}

            ''' 

                              }



               }

                                      }




 }

}

标签: jenkinsjenkins-pipelinejenkins-cli

解决方案


在 groovy 中,字符串封装在单引号中'',GString 封装在双引号中""

为了进行插值,您需要使用 GStrings。在您的示例中,这应该只是

  sh """


       cd DARC
       mvn clean package sonar:sonar -Dsonar.host.url=***** -Dsonar.login=******* -Dsonar.exclusions=file:**/src/test/** -B -Pcoverage -Dsonar.branch.name=branch-${env.BRANCH_NAME}

     """ 

推荐阅读