如果 SonarQube 有错误,如何阻止 Pull Request 合并?

How to block Pull Request merges if SonarQube has errors?

我们已经在 J​​enkins 中为 bitbucket 服务器和 sonarqube 安装了插件,我们 运行 在 Jenkinsfile

中使用此命令的声纳

我也关注了这个community topic:

agent {
                docker {
                image 'sonar-scanner-cli:4'
                reuseNode true
                }
            }
            steps {
                sh "/usr/bin/entrypoint.sh sonar-scanner -Dsonar.login='<token>' -Dsonar.language=js  -Dsonar.projectKey=<project-key> -Dsonar.sources=test -Dsonar.profile=node -Dsonar.host.url=https://<sonarqube-url> -Dsonar.branch.name=<git-branch-name>" 
            }

SonarQube 版本:8.8

我在 bitbucket repo > pull requests > code insights 中添加了密钥 com.sonarsource.sonarqube 但我收到了此 doc

中提到的错误

There is 1 issue preventing you from merging this pull request. Report with key ‘com.sonarsource.sonarqube’ has not yet been created

很难提供解决您的具体问题的答案,因为您没有提供太多信息。不过,我可以为您提供一些背景知识,说明这通常是如何完成的。

关于您提供的内容,您引用了一篇关于装饰拉取请求的文档,其中包含很多信息。完全不清楚您指的是哪个错误。

如果 SonarQube 出现“错误”,您使用 SonarQube 和 Jenkins 阻止拉取请求合并的方法是质量门和 BitBucket 存储库的配置。

您使用扫描定义为“失败”的规则来定义 SonarQube 质量门。例如,您可以定义单元测试代码覆盖率的最小百分比,或漏洞的最大数量,或其他问题类型。

在 Jenkins 中,您需要使用“withSonarQubeEnv()”和“waitForQualityGate()”管道步骤。前者指定要使用的 SonarQube 实例的名称,后者从 Jenkins 配置中提取 SonarQube 凭证和 url(您应该在 Jenkins 配置中定义它们,而不是像您所做的那样在构建作业中定义)。后者等待 SonarQube 生成质量门分析,这是在 SonarQube 的后台作业中执行的。当后台作业完成时,它将调用“Webhook”,其中的 url 必须在 SonarQube 中配置,以指向 Jenkins(通常类似于“http://{jenkinshost}:{jenkinsport}/jenkins/sonarqube-webhook").在 Jenkins 管道脚本中,您检查来自“waitForQualityGate()”的 return 值,如果该对象的“状态”属性 不等于“OK”,则质量门失败,并且您的脚本应该调用“错误”来使构建失败。