将具有声纳的Sonar添加到Maven Jenkins作业失败

时间:2019-05-29 08:58:39

标签: jenkins sonarqube

我正在尝试将SonarQube插件用于Jenkins。我正在使用official guide

  1. 使用来自Sonar服务器的秘密文本在Jenkins上创建全局凭据:管理->配置->加密
  2. 配置了Jenkins,并从1开始添加了我们的SonarQube服务器和身份验证。
  3. 在作业配置上启用“准备SonarQube扫描仪环境”
  4. 为工作目标添加了$SONAR_MAVEN_GOAL -Dsonar.host.url=$SONAR_HOST_URL -Dsonar.login=$SONAR_AUTH_TOKEN

所有这些都会导致异常:

Failed to execute goal org.sonarsource.scanner.maven:sonar-maven-plugin:3.6.0.1398:sonar (default-cli) on project com.qualitype.foundation.build: 
Not authorized. Please check the properties sonar.login and sonar.password. 

我试图解决此问题的方法:

  • sonar.loginsonar.password添加到 pom.xml
  • 为工作配置的目标添加了sonar.loginsonar.password
  • 在工作配置的MAVEN_OPTS中添加了sonar.loginsonar.password
  • 上述所有内容,用户令牌为sonar.login(来自配置文件->安全->令牌
  • 将凭证的秘密文本替换为上述令牌
  • 上述所有内容都没有变量(例如,不是$SONAR_AUTH_TOKEN,而是一个固定值)
  • 使用构建后的步骤“使用Maven进行SonarQube分析”

这些工作均不具有相同的例外。起作用的只是调用sonar:sonar并禁用“准备SonarQube扫描仪环境”,因为我们的 pom.xml 是这样设置的。再次启用“准备SonarQube扫描仪环境”后,构建将失败。

如果我使用官方插件而不是仅致电sonar:sonar,我希望能在Jenkins职位上显示Sonar信息。

如何使Sonar插件与Jenkins配合使用?

1 个答案:

答案 0 :(得分:0)

取决于/ configureTools /下的 Maven配置,您必须将以下内容添加到/ configfiles /下的maven settings.xml中:

<id>sonar</id>
        <activation>
            <activeByDefault>true</activeByDefault>
        </activation>
        <properties>
            <sonar.host.url>URL to your Sonar-Server</sonar.host.url>
            <sonar.login>the token you generated on Sonaqrqube</sonar.login>             
        </properties>
    </profile>

Maven通常不会考虑您在“ Sonar插件设置”中指定的Sonartoken(只要您未通过-D参数script.sh "mvn sonar:sonar -Dsonar.branch=${script.env.getProperty('BRANCH_NAME')} -Dstyle.color=always -Dsonar.login=$token指定它)。 总体而言,Sonarqube使用令牌作为用户/密码替换的方式与我们的自动实例设置不符。因此,我们最终使用REST调用在自定义的Jenkins管道库中为每个构建生成了短暂的令牌。