如何获取Jenkins Pipeline中的SonarQube taskId / report URL?
How to obtain the SonarQube taskId / report URL in Jenkins Pipeline?
我在 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发送相应的notify,但是获取不到Sonar报告URL或TaskId
并且发现有人建议使用 BUILD_LOG_REGEX: SonarQube result URL: ${BUILD_LOG_REGEX, regex=".*ANALYSIS SUCCESSFUL, you can browse (.*)", showTruncatedLines=false, substText=""}
,但这只适用于电子邮件扩展插件。
另外一个建议是URL这样写报告:ProjectURL = host + "/dashboard?id=" + ProjectID
,我们不容易得到ProjectID,因为projectID是从Pom.xml写成的:groupId:artifactId
.
也许有一些简单的方法可以获取 Sonar TaskId 或 Report URL,特别是是否有 waitForQualityGate() or other method
将 return Sonar TaskId 或 Report URL ?
阅读文件即可看到报告./target/sonar/report-task.txt
使用def getURL = readProperties file: './target/sonar/report-task.txt'
并通过调用类似 ${getURL['dashboardUrl']}
的方法提取,这将给出 url 的报告。上面的文件也有 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']}
}
对于windows,使用
./.scannerwork/report-task.txt
例如
waitForQualityGate abortPipeline: true
def getURL = readProperties file: './.scannerwork/report-task.txt'
sonarqubeURL = "${getURL['dashboardUrl']}"
echo "${sonarqubeURL }"
我在 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发送相应的notify,但是获取不到Sonar报告URL或TaskId
并且发现有人建议使用 BUILD_LOG_REGEX: SonarQube result URL: ${BUILD_LOG_REGEX, regex=".*ANALYSIS SUCCESSFUL, you can browse (.*)", showTruncatedLines=false, substText=""}
,但这只适用于电子邮件扩展插件。
另外一个建议是URL这样写报告:ProjectURL = host + "/dashboard?id=" + ProjectID
,我们不容易得到ProjectID,因为projectID是从Pom.xml写成的:groupId:artifactId
.
也许有一些简单的方法可以获取 Sonar TaskId 或 Report URL,特别是是否有 waitForQualityGate() or other method
将 return Sonar TaskId 或 Report URL ?
阅读文件即可看到报告./target/sonar/report-task.txt
使用def getURL = readProperties file: './target/sonar/report-task.txt'
并通过调用类似 ${getURL['dashboardUrl']}
的方法提取,这将给出 url 的报告。上面的文件也有 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']}
}
对于windows,使用
./.scannerwork/report-task.txt
例如
waitForQualityGate abortPipeline: true
def getURL = readProperties file: './.scannerwork/report-task.txt'
sonarqubeURL = "${getURL['dashboardUrl']}"
echo "${sonarqubeURL }"