我正在尝试创建一个 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/