sonarqube - 在 Jenkinsfile 中设置 SonarQube webhook

标签 sonarqube jenkins-pipeline multibranch-pipeline

我正在尝试创建一个 Jenkins 多分支管道,在每次推送到 bitbucket 时,都会在该项目的该分支上执行 SonarQube 分析。 Jenkins 为每个分支正确创建新作业,并在 SonarQube 中创建一个新项目,并将分支名称附加到项目名称。

我遇到的问题是,当 SonarQube 创建新项目时,默认情况下未设置报告 Quality Gate 状态的 webhook,因此我必须手动进入每个 SonarQube 项目并设置 Webhook url。当我的团队每天创建许多分支时,这是一个问题。

有没有办法在我的 Jenksfile 中指定我希望 SonarQube 项目有一个 webhook?

stage('SonarQube Analysis') {
        steps {
            withSonarQubeEnv('Sonarqube Server') {
                script {
                    def sonarScanner = tool name: 'SonarQube Scanner', type: 'hudson.plugins.sonar.SonarRunnerInstallation'
                    sh "${sonarScanner}/bin/sonar-scanner " +
                    "-Dsonar.projectKey=ProjectName-${GIT_BRANCH} " +
                    "-Dsonar.projectName=ProjectName-${GIT_BRANCH} " +
                    "-Dsonar.projectVersion=0.0.0 " +
                    "-Dsonar.sources=**/src " +
                    "-Dsonar.java.binaries=**/build " +
                    "-Dsonar.exclusions=excluded_dirs/** " +
                    "-Dsonar.sourceEncoding=UTF-8"
                }
            }
            timeout(time: 5, unit: 'MINUTES') {
                script {
                    def qg = waitForQualityGate()
                    if (qg.status != 'OK') {
                        error "Pipeline aborted due to a quality gate failure: ${qg.status}"
                    }
                }
            }
        }
    }

目前,我的 Jenkins 构建在 5 分钟后超时。设置 webhook 后,需要几秒钟才能听到回音。我的 webhook url 是正确的,我只是想让 Jenkinsfile 设置它,而不是我手动设置。

编辑:
不幸的是,我不是 SonarQube 的管理员,只是我的项目

最佳答案

作为 sonarqube 的管理员,转到 https://my-sonarqube.tld/admin/webhooks将 url 配置为 https://my-jenkins-domain.tld/sonarqube-webhook/
这应该适用于所有项目。如果您仍未收到货件,请检查最近的货件(同一页面中的选项)并查看错误。

你的 Jenkins 需要有一个有效的证书才能建立安全连接

另见:https://docs.sonarqube.org/latest/project-administration/webhooks/

或者,您可以为项目的每次调用/扫描设置一个 webhook。
要么在 cli 上 -Dsonar.webhooks.project=https://my-jenkins-domain.tld/sonarqube-webhook/或在 sonar-project.properties onar.webhooks.project=https://my-jenkins-domain.tld/sonarqube-webhook/

关于sonarqube - 在 Jenkinsfile 中设置 SonarQube webhook,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/54428685/

相关文章:

javascript - 将 JSHint 规则转换为 Sonar

sonarqube - 我们有一个案例, Sonar 中配置了多个项目。所有项目都有相同名称的不同模块?

sonarqube - 获取 SonarQube 服务器中的所有项目名称

git - Jenkins 插件失败错误

Jenkins 多分支管道扫描而不执行

git - Jenkins 中多分支管道的 merge 请求触发器

Sonarqube Maven 插件 : "The ' report' parameter is missing"when analyzing Maven Project

jenkins - Jenkins 管道中有没有办法改变 'almost complete' 的措辞

jenkins - 如何将 Jenkins Heavy Job 属性与管道作业结合使用

git - 在 Jenkins 多分支管道上进行存储库扫描后未触发作业构建(检测到更改)