在Jenkins文件中设置SonarQube webhook

在Jenkins文件中设置SonarQube webhook,sonarqube,jenkins-pipeline,multibranch-pipeline,Sonarqube,Jenkins Pipeline,Multibranch Pipeline,我正在尝试创建一个Jenkins多分支管道,在该管道中,每次推送到bitbucket时,都会对项目的该分支执行SonarQube分析。Jenkins正确地为每个分支创建了新作业,并在SonarQube中创建了一个新项目,项目名称后面附加了分支名称 我遇到的问题是,当SonarQube创建新项目时,默认情况下不会设置报告质量门状态的webhook,因此我必须手动进入每个SonarQube项目并设置webhook url。当我的团队每天创建多个分支时,这是一个问题 有没有办法在我的Jenks文件中指

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

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

有没有办法在我的Jenks文件中指定我希望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}"
                    }
                }
            }
        }
    }
目前,我的詹金斯构建在5分钟后超时。设置webhook后,需要几秒钟才能听到回复。我的webhook url是正确的,我只想让Jenkins文件设置它,而不是手动设置

编辑:
不幸的是,我不是SonarQube的管理员,只有我的项目作为SonarQube的管理员转到
https://my-sonarqube.tld/admin/webhooks
将url配置为
https://my-jenkins-domain.tld/sonarqube-webhook/

这应该适用于所有项目。如果您仍然没有收到交付,请检查最近的交付(同一页面中的选项)并查看错误

您的jenkins需要有有效的证书才能建立安全连接

另见:

或者,您可以为每个项目的调用/扫描设置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/

我在这里看到了一个解决方法

在两者之间加上睡眠对我来说是解决问题的办法

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

不幸的是,我不是SonarQube的管理员,只是我创建的项目。我应该早点说明。谢谢您也许可以试试
-Dsonar.webhooks.project=https://my-jenkins-domain.tld/sonarqube-webhook/
正在运行?(暗中捅了捅)如果做不到这一点,文档就相当清楚了。您可能需要让管理您的应用程序的团队为您添加webhook。根据文档,您最多可以配置20个。您的第一条评论成功了!如果你把它写在你的答案里,我会把它标记为正确答案。谢谢这件事可能是我干的。我第一次运行构建时,SonarQube可能会报告回来,但现在它被困在“正在进行中”。接收进程中的声音似乎至少是在回音,所以我不确定它为什么会卡在那里。最好使用webhook-如果你的声纳很忙,并且在10秒内返回“进程中”,它会再次失败