Jenkins 插件中所有可能的返回值是什么 "Sonarqube scanner"

What are all possible returned value in Jenkins plugin "Sonarqube scanner"

我有一个 Jenkins 管道作业,它构建我的应用程序,进行 Sonar 分析,然后通过质量检查我用 mvn deploy.

部署在你的 Nexus 中

最初的设置是仅在成功的情况下发布(取自 official doc):

stage("Quality Gate"){
      timeout(time: 1, unit: 'HOURS') {
          def qg = waitForQualityGate()
          if (qg.status != 'OK') {
              error "Pipeline aborted due to quality gate failure: ${qg.status}"
          }
      }
    }

现在我们想稍微改变一下 Jenkins 中的逻辑门,如果没有错误我们想发布(但例如警告是可以接受的)。

为此,我将 Jenkins satge 更改为:

stage("Quality Gate"){
  timeout(time: 1, unit: 'HOURS') {
      def qg = waitForQualityGate()
      if (qg.status == 'Error') {
          error "Pipeline aborted due to quality gate failure: ${qg.status}"
      }
  }
}

stage('Deploy to Nexus') {
    sh "mvn deploy -DskipTests"
}

但现在,它似乎无法正常工作:即使 SonarQube 中的质量门出错,我的项目也总是被推送到 Nexus。

我可以通过更改条件来解决问题:

qg.status != 'OK' || qg.status != 'Warning' 

有人知道错误状态的确切值是多少(可能还有其他值)吗?

文档似乎不完整,除了猜测正确的 return 值别无他法。

为了防止出现此类问题,我建议在没有确切案例的情况下进行测试:

if ('error'.equalsIgnoreCase(qg.status) ) {
    error "Pipeline aborted due to quality gate failure: ${qg.status}"
} 

当使用这样的条件时,我的脚本运行良好,那么 returned 的值似乎全部为大写:'ERROR'.

可通过 SonarQube 管理设置中的 Webhooks 配置:https://docs.sonarqube.org/display/SONAR/Webhooks

因此,方法 returns 无论您为所有网关规则配置的是 OK 还是失败。