Jenkins SonarQube 步骤转到警告

标签 jenkins sonarqube jenkins-pipeline

我正在慢慢地深入了解 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

它不会将其设置为OKError,而是使该构建步骤也变为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/

相关文章:

amazon-web-services - 在 Jenkinsfile 中对 ECR 进行身份验证,以便我可以提取图像来运行构建?

jenkins - 使用 currentBuild.rawBuild.getLog 获取当前 Jenkins 构建的所有日志

c# - C# 的 Sonarqube 5.4 自定义规则

build - 错误 : Sonar server 'http://localhost:9000' can not be reached

Jenkins slack发送漂亮的网址

Jenkins ,如何检查对另一项工作的回归

jenkins - 如何在 jenkins 管道脚本中使用 helm 命令

php - Sonar 分析不起作用

jenkins-pipeline - 无法在 Jenkins 中删除管道作业

docker - 如何在Jenkins管道中设置postgres数据库?