【发布时间】:2021-04-29 00:17:38
【问题描述】:
我已经在 Jenkins 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