[英]Groovy script to set SonarQube server settings in Jenkins programatically
我設置了SonarQube服務器,並為Jenkins設置了SonarQbue插件。 我知道我必須設置兩個設置。 一個在“管理Jenkins”>“配置系統”>“ SonarQube服務器”中,另一個(即“ SonarQube掃描儀設置”)在“管理Jenkins”>“全局工具配置”>“ SonarQube掃描儀”中。
我搜索了如何使用Groovy腳本設置上述設置的值。 當我在Groovy腳本控制台中嘗試時, 來自GitHub的腳本沒有幫助,因為出現以下錯誤:
groovy.lang.GroovyRuntimeException: Could not find matching constructor for: hudson.plugins.sonar.SonarInstallation(java.lang.String, java.lang.Boolean, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, java.lang.String, hudson.plugins.sonar.model.TriggersConfig, java.lang.String, java.lang.String)
我也找不到這些API的任何文檔。 正在尋求幫助。 謝謝。
找到以下解決方案:
import hudson.model.*
import jenkins.model.*
import hudson.plugins.sonar.*
import hudson.plugins.sonar.model.TriggersConfig
import hudson.tools.*
// Required environment variables
def sonar_name = "New setting"
def sonar_server_url = "http://sonarqube:9000"
def sonar_auth_token = "<token>"
def sonar_mojo_version = ''
def sonar_additional_properties = ''
def sonar_triggers = new TriggersConfig()
def sonar_additional_analysis_properties = ''
def sonar_runner_version = '3.1.0.1141'
def instance = Jenkins.getInstance()
Thread.start {
sleep(10000)
println("Configuring SonarQube...")
// Get the GlobalConfiguration descriptor of SonarQube plugin.
def SonarGlobalConfiguration sonar_conf = instance.getDescriptor(SonarGlobalConfiguration.class)
def sonar_inst = new SonarInstallation(
sonar_name,
sonar_server_url,
sonar_auth_token,
sonar_mojo_version,
sonar_additional_properties,
sonar_triggers,
sonar_additional_analysis_properties
)
// Only add the new Sonar setting if it does not exist - do not overwrite existing config
def sonar_installations = sonar_conf.getInstallations()
def sonar_inst_exists = false
sonar_installations.each {
installation = (SonarInstallation) it
if (sonar_inst.getName() == installation.getName()) {
sonar_inst_exists = true
println("Found existing installation: " + installation.getName())
}
}
if (!sonar_inst_exists) {
sonar_installations += sonar_inst
sonar_conf.setInstallations((SonarInstallation[]) sonar_installations)
sonar_conf.save()
}
// Step 2 - Configure SonarRunner
println("Configuring SonarRunner...")
def desc_SonarRunnerInst = instance.getDescriptor("hudson.plugins.sonar.SonarRunnerInstallation")
def sonarRunnerInstaller = new SonarRunnerInstaller(sonar_runner_version)
def installSourceProperty = new InstallSourceProperty([sonarRunnerInstaller])
def sonarRunner_inst = new SonarRunnerInstallation("New Setting SonarRunner " + sonar_runner_version, "", [installSourceProperty])
// Only add our Sonar Runner if it does not exist - do not overwrite existing config
def sonar_runner_installations = desc_SonarRunnerInst.getInstallations()
def sonar_runner_inst_exists = false
sonar_runner_installations.each {
installation = (SonarRunnerInstallation) it
if (sonarRunner_inst.getName() == installation.getName()) {
sonar_runner_inst_exists = true
println("Found existing installation: " + installation.getName())
}
}
if (!sonar_runner_inst_exists) {
sonar_runner_installations += sonarRunner_inst
desc_SonarRunnerInst.setInstallations((SonarRunnerInstallation[]) sonar_runner_installations)
desc_SonarRunnerInst.save()
}
// Save the state
instance.save()
}
希望它可以幫助某人。 謝謝。
聲明:本站的技術帖子網頁,遵循CC BY-SA 4.0協議,如果您需要轉載,請注明本站網址或者原文地址。任何問題請咨詢:yoyou2525@163.com.