Jenkins Pipeline和SonarQube设置

时间:2018-04-24 14:35:19

标签: maven jenkins sonarqube jenkins-pipeline

我在Jenkins Pipeline上使用Maven设置SonarQube时遇到了一些麻烦。

我的管道将git repo拉入为其创建的目录中,并成功完成其余步骤但我没有在SonarQube上看到测试结果,也没有看到正在运行测试的任何输出。

以下是我在管道上设置的代码:

node('master'){

  stage('Git Clone') {
    dir('my-git-dir'){
    git branch: '$GIT_BRANCH'
      git url: '$GIT_REPO'
      credentialsId: '11111111-111-1111-1111-111111111111'
   }
  }

  stage('build & SonarQube Scan') {
      MVN="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.3.9/bin/mvn"
      echo "running clean verify sonar"
      "$MVN clean verify sonar:sonar -Dsonar.host.url=http://111.11.1.111:9000 -Dsonar.java.binaries=/etc/sonarqube"
      echo "running clean install"
      "$MVN clean install deploy -DskipTests"
  }
}

该命令在自由样式项目上运行正常:

#!/usr/bin/bash
MVN="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.3.9/bin/mvn"
$MVN clean verify sonar:sonar -Dsonar.host.url=http://111.11.1.111:9000 -Dsonar.java.binaries=/etc/sonarqube
$MVN clean install deploy -DskipTests

它还有一个" Invoke顶级Maven目标" Maven版本:

Maven 3.3.9

目标:

test
-fn

编辑:工作脚本

  stage('SonarQube analysis') {
     dir("$gitRepo"){
    withSonarQubeEnv('SonarQube') {
      sh "pwd"
      MVN="/var/lib/jenkins/tools/hudson.tasks.Maven_MavenInstallation/Maven_3.3.9/bin/mvn"
      echo "Running JaCoCO stuff"
      sh "$MVN clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=false"
      echo "running clean verify"
      sh "$MVN clean verify sonar:sonar -Dsonar.host.url=http://111.11.1.111:9000" //-Dsonar.java.binaries=/etc/sonarqube"
      echo "running clean install deploy"
      sh "$MVN clean install deploy -DskipTests"
}

P.S我正在尝试创建一个作业,您可以选择一个仓库和分支从中拉出,在该工作区中创建/使用一个文件来运行SonarQube

1 个答案:

答案 0 :(得分:1)

你的问题表明了一些误解。

首先,SonarQube分析不会为您执行测试;你需要解雇自己。如上所述in the docs,对此的命令类似于

$MVN clean org.jacoco:jacoco-maven-plugin:prepare-agent install -Dmaven.test.failure.ignore=false

接着是

$MVN sonar:sonar -sonar.host.url=http://111.11.1.111:9000

请注意,我已经停止了您使用的-Dsonar.java.binaries=/etc/sonarqube参数。那是因为

  • 这是项目编译类的路径。他们不应/etc/sonarqube。 (如果是的话,移动它们。)
  • Maven分析已经知道你的二进制文件在哪里,所以你不需要提供路径,除非你的构建被配置为把它们放在某个奇怪的地方。