【问题标题】:How to obtain the SonarQube taskId / report URL in Jenkins Pipeline?如何在 Jenkins Pipeline 中获取 SonarQube taskId/report URL?
【发布时间】:2021-04-29 00:17:38
【问题描述】:

我已经在 J​​enkins Pipeline 中集成了 Sonarqube,它的工作方式如下定义:

        stage('static check') {
           steps {
               echo "starting codeAnalyze with SonarQube......"
               //sonar:sonar.QualityGate should pass
               withSonarQubeEnv('sonar') {
                 sh "mvn -f pom.xml clean compile sonar:sonar -U"
               }
               script {
               timeout(10) { 
                   def qg = waitForQualityGate() 
                       if (qg.status != 'OK') {
                         echo "failure: ${qg.status}"
                         
                         # Plan to send notify to Slack, But can NOT to obtain the Sonar report URL or TaskId
                         
                       }
                   }
               }
           }
       }

计划向Slack发送相应的通知,但无法获取Sonar报告URL或TaskId

发现有些人建议使用 BUILD_LOG_REGEX:SonarQube result URL: ${BUILD_LOG_REGEX, regex=".*ANALYSIS SUCCESSFUL, you can browse (.*)", showTruncatedLines=false, substText="$1"},但这仅适用于电子邮件扩展插件。

另一个建议是这样编写报告 URL:ProjectURL = host + "/dashboard?id=" + ProjectID,我们不容易得到 ProjectID,因为 projectID 是从 Pom.xml 编写为:groupId:artifactId

也许有一些简单的方法可以获取 Sonar TaskId 或 Report URL,尤其是是否有 waitForQualityGate() or other method 会返回 Sonar TaskId 或 Report URL?

【问题讨论】:

    标签: jenkins sonarqube jenkins-pipeline


    【解决方案1】:

    您可以通过阅读文件./target/sonar/report-task.txt查看报告

    使用def getURL = readProperties file: './target/sonar/report-task.txt'

    并通过调用类似${getURL['dashboardUrl']} 的东西来提取,这将给出报告的网址。上面的文件也有taskId。

    应该是这样的

    def qg = waitForQualityGate() 
     if (qg.status != 'OK') {
     echo "failure: ${qg.status}"
     def getURL = readProperties file: './target/sonar/report-task.txt
    
     Add your slackmsg here use in that ${getURL['dashboardUrl']}
    
     }
                         
    

    【讨论】:

      【解决方案2】:

      对于windows,使用

      ./.scannerwork/report-task.txt

      例如

       waitForQualityGate abortPipeline: true
       def getURL = readProperties file: './.scannerwork/report-task.txt'
       sonarqubeURL = "${getURL['dashboardUrl']}"
       echo "${sonarqubeURL }"
      

      【讨论】:

        猜你喜欢
        • 2019-12-19
        • 2017-08-09
        • 2016-11-02
        • 2017-03-23
        • 2022-06-28
        • 2019-10-22
        • 1970-01-01
        • 2017-07-12
        • 2019-05-30
        相关资源
        最近更新 更多