Jenkins 脚本管道声纳集成
Jenkins Script Pipeline sonar Integration
我想用 Jenkins 2.x Groovy 脚本构建管道开始 Sonar 项目分析。
我在 Maven 中配置了声纳,所以这没什么大不了的:
withEnv(["JAVA_HOME=${javaHome}", "PATH + MAVEN=${mavenHome}/bin:${env.JAVA_HOME}/bin", "MAVEN_OPTS=${mavenOpts}"]) {
sh 'mvn -B sonar:sonar'
}
但是我怎样才能得到声纳的结果呢?或者更好的是,我如何确定是否达到了质量门,以便我可以停止构建管道。
据我所知,构建破坏者的概念已经过时,因为某些版本的声纳。或者你会如何处理这个。
我仍然认为如果项目的底层代码太糟糕,stop/pause 构建管道是个好主意。
不知道这是否理想,但我通过请求从 SonarQube api 获取状态(您可以使用 HttpRequest 插件)。
def response = httpRequest 'https://SONAR_USER:SONAR_PASSWORD@SONAR_URL/api/qualitygates/project_status?projectKey=PROJECT_KEY'
def slurper = new groovy.json.JsonSlurper()
def result = slurper.parseText(response.content)
if (result.projectStatus.status == "ERROR") {
currentBuild.result = 'FAILURE'
}
我想用 Jenkins 2.x Groovy 脚本构建管道开始 Sonar 项目分析。
我在 Maven 中配置了声纳,所以这没什么大不了的:
withEnv(["JAVA_HOME=${javaHome}", "PATH + MAVEN=${mavenHome}/bin:${env.JAVA_HOME}/bin", "MAVEN_OPTS=${mavenOpts}"]) {
sh 'mvn -B sonar:sonar'
}
但是我怎样才能得到声纳的结果呢?或者更好的是,我如何确定是否达到了质量门,以便我可以停止构建管道。
据我所知,构建破坏者的概念已经过时,因为某些版本的声纳。或者你会如何处理这个。
我仍然认为如果项目的底层代码太糟糕,stop/pause 构建管道是个好主意。
不知道这是否理想,但我通过请求从 SonarQube api 获取状态(您可以使用 HttpRequest 插件)。
def response = httpRequest 'https://SONAR_USER:SONAR_PASSWORD@SONAR_URL/api/qualitygates/project_status?projectKey=PROJECT_KEY'
def slurper = new groovy.json.JsonSlurper()
def result = slurper.parseText(response.content)
if (result.projectStatus.status == "ERROR") {
currentBuild.result = 'FAILURE'
}