我正在慢慢地深入了解 Jenkins 的管道 groovy dsl。我正在尝试弄清楚如何创建一个步骤来执行 Sonar 并在 Jenkins 构建服务器中反射(reflect)质量门消息。
此时我为 Sonar 定义了以下步骤:
stage ('sonar') {
mvn "-Dsonar.lang.patterns.jsp=notverified -Dsonar.host.url=http://sonar.server.example:9494 org.sonarsource.scanner.maven:sonar-maven-plugin:3.3.0.603:sonar -Dsonar.login=key
}
现在我希望当 Maven 得到:
[INFO] Quality gate status: WARN
它不会将其设置为OK
或Error
,而是使该构建步骤也变为WARN
(因此而不是漂亮的绿色或红色(黄色的漂亮颜色)。我一直在挖掘文档,但据我所知,没有真正的方法可以使步骤以任何方式进入 WARN 状态(在本质二进制文件中)。任何人之间都存在一个想法吗?
最佳答案
根据CloudBees support ,您可以通过自己设置 currentBuild.result
来设置构建结果,因此,要获得表示不稳定状态(失败的单元测试)的黄色球体,您可以这样做:
currentBuild.result = 'UNSTABLE'
现在,您希望在 Sonar 质量门状态为“WARN”时执行此操作。
他们document how to do it :首先使用 withSonarQubeEnv('Your Sonar server')
包装 Sonar 执行,然后等待服务器使用 waitForQualityGate()
给您回电并提供结果:
stage("Build & SonarQube analysis") {
node {
withSonarQubeEnv('My SonarQube Server') {
sh 'mvn clean package sonar:sonar'
}
}
}
stage("Quality Gate Check"){
timeout(time: 20, unit: 'MINUTES') {
def qg = waitForQualityGate()
if (qg.status == 'WARN') {
currentBuild.result = 'UNSTABLE'
}
}
}
我还没有测试过这个,我有一个过时的版本,我打算在有时间的时候升级,使用比上面复杂10倍的手动脚本方法,我想摆脱它并替换使用此解决方案...尚未完成,但我正在分享我收集的笔记。
关于Jenkins SonarQube 步骤转到警告,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/45714525/