我正在尝试创建一个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的管理员,只有我的项目
答案 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') {