Jenkins管道,将branchname传递给gradle build

Jenkins管道,将branchname传递给gradle build,jenkins,gradle,groovy,sonarqube,jenkins-pipeline,Jenkins,Gradle,Groovy,Sonarqube,Jenkins Pipeline,多分支jenkins管道调用gradle生成。需要将分支名称传递给build.gradle中的sonarqube任务: sonarqube { properties { property "sonar.host.url", "https://sonar" property "sonar.projectKey", "com.foo.bar:Foobar" property "sonar.projectName", "com.foo.bar-Foobar" pro

多分支jenkins管道调用gradle生成。
需要将
分支名称
传递给build.gradle中的sonarqube任务:

sonarqube {
  properties {
    property "sonar.host.url", "https://sonar"
    property "sonar.projectKey", "com.foo.bar:Foobar"
    property "sonar.projectName", "com.foo.bar-Foobar"
    property "sonar.binaries", "build"
    property "sonar.branch.name", "${branchname}" <---------------
    property "sonar.branch.target", "master"
  }
}
输出:

* What went wrong:
A problem occurred evaluating root project 'fooBar'.
> Cannot get property 'branchname' on extra properties extension as it does not exist
* What went wrong:
A problem occurred evaluating root project 'fooBar'.
> Could not get unknown property 'branchname' for root project 'sfrToolbarContract' of type org.gradle.api.Project.

输出:

* What went wrong:
A problem occurred evaluating root project 'fooBar'.
> Cannot get property 'branchname' on extra properties extension as it does not exist
* What went wrong:
A problem occurred evaluating root project 'fooBar'.
> Could not get unknown property 'branchname' for root project 'sfrToolbarContract' of type org.gradle.api.Project.
而且:

  stage('Sonarscan') {
    withSonarQubeEnv('SONAR') {
      def branchname = "${BRANCH_NAME}"
      bat "gradlew sonarqube --info"
    }
  }
但管道作业只是挂起。

如何将属性从Jenkinsfile传递到gradle build?

我认为您可以直接在命令行上传递SonarQube参数:

stage(“声纳扫描”){
使用声纳(“声纳”){
bat“gradlew sonarqube-Dsonar.branch.name=${branch_name}--info”
}
}

重要的是必须安装分支插件,否则您将得到:project reactor验证失败:要使用属性“sonar.branch.name”,分支插件是必需的,但未安装。请参阅分支支持的文档:。