Jenkins Pipeline and SonarQube setup



我在詹金斯管道上使用maven设置Sonarqube遇到了一些麻烦。

我的管道将git reto拉到了为其创建的目录中,它成功地通过了其余步骤,但是我看不到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

它还具有"调用顶级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

您的问题表明了几个误解。

首先,Sonarqube分析不会为您执行您的测试;您需要自己解雇。如文档中所述

$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 Analysis已经知道您的二进制文件在哪里,因此您不需要提供路径

最新更新