在Jenkinsfile中设置SonarQube Webhook

时间:2019-01-29 19:53:34

标签: sonarqube jenkins-pipeline multibranch-pipeline

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

我遇到的问题是,当SonarQube创建新项目时,默认情况下未设置报告质量门状态的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网址是正确的,我只希望Jenkinsfile设置它,而不是手动设置。

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

2 个答案:

答案 0 :(得分:1)

以管理员的身份访问“ https://my-sonarqube.tld/admin/webhooks” 将网址配置为https://my-jenkins-domain.tld/sonarqube-webhook/

这将随后应用于所有项目。如果您仍未收到交货,请检查最近的交货(在同一页面中的选项)并查看错误。

您的詹金斯将需要具有有效的证书才能建立安全连接

另请参阅: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/

答案 1 :(得分:0)

我在这里https://community.sonarsource.com/t/waitforqualitygate-timeout-in-jenkins/2116/9

看到了一种解决方法

在两者之间增加睡眠为我解决了这个问题

        }
        sleep(10)
        timeout(time: 5, unit: 'MINUTES') {