当 SonarQube 在不同的服务器上并且 Jenkins 在不同的服务器上时无效 sonar.source 属性

Invalid sonar.source property when SonarQube is on different Server and Jenkins on different Server

目前我正在使用 SonarQube 插件将 SonarQube 与 Jenkins 集成。我面临的问题是我的 Jenkins 运行 在与 SonarQube 不同的服务器上。因此,当我像 $workspace/src 一样传递 sonar.source 属性 时,由于服务器位置不同

,它无法找到 Jenkins 创建的我的回购的 Jenkins 工作区

我的项目是maven。以下是声纳属性的详细信息:

sonar.projectKey=$POM_GROUPID:$POM_ARTIFACTID
sonar.projectName=$POM_DISPLAYNAME
sonar.projectVersion=$POM_VERSION
sonar.sources=$WORKSPACE/src
sonar.java.binaries=**/classes/**

P.S - 当 Jenkins 和 SonarQube 在同一台服务器上时,SonarQube 能够找到工作空间的来源

如何传递位于 Jenkins 服务器上的工作区 sonar.source,以便声纳能够定位它?

您必须使用相对路径。这个是绝对的:

sonar.sources=$WORKSPACE/src

这是相对的:

sonar.sources=src

但这不是您问题的推荐解决方案。你有 Maven,所以你应该使用 SonarScanner for Maven,步骤:

  • 删除您添加的配置
  • 配置来源(两个选项):
    1. 向您的 pom.xml 添加一个新的 属性:<sonar.sources>pom.xml,src</sonar.sources>
    2. mvn命令添加参数:-Dsonar.sources=pom.xml,src
  • 执行 SonarScanner sonar:sonar

示例:

mvn package sonar:sonar -Dsonar.sources=pom.xml,src