[英]Modify Sonar jdk in Jenkins job from groovy
如何从Groovy脚本中为Sonar设置jdk版本,以使其在Jenkins作业配置中使用。 我要求声纳jdk与用于通过maven构建的作业实际jdk不同。 我已经设法进入可以检索Sonar使用的Jobs JDK版本的阶段,但是找不到设置它的方法。 有什么建议么?
import hudson.util.*;
import hudson.tasks.Publisher;
def h = Hudson.getInstance();
def projects = h.getProjects();
for (project in projects) {
def DescribableList<Publisher,Descriptor<Publisher>> publishers = project.getPublishersList();
for (publisher in publishers) {
def desc = publisher.getDescriptor();
if (desc.getId().equals("hudson.plugins.sonar.SonarPublisher")) {
println(publisher.getJDK());
//((hudson.plugins.sonar.SonarPublisher) publisher).setJDK(h.getJDK("Sun JDK 1.7.45"));
}
}
}
由于SonarPublisher没有jdk的设置器,因此您需要用作业发布者中的新实例替换实际实例:
def jobs = Hudson.instance.getItems(AbstractProject.class)
jobs.each {
sonar = it.publishersList.get(hudson.plugins.sonar.SonarPublisher.class)
if(sonar){
newSonar = new hudson.plugins.sonar.SonarPublisher(
sonar.installationName,
sonar.branch,
sonar.language,
sonar.triggers,
sonar.jobAdditionalProperties,
sonar.mavenOpts,
sonar.mavenInstallationName,
sonar.rootPom,
"Oracle 1.8.0", //set your JDK name here
sonar.settings,
sonar.globalSettings,
sonar.usePrivateRepository)
it.publishersList.replace(newSonar)
}
}
在SonarPublisher的最新版本中(我使用的是SonarQube Scanner 2.8),您可以直接设置JDK,因此对我有用:
def jobs = Hudson.instance.getItems(AbstractProject.class)
jobs.each {
sonar = it.publishersList.get(hudson.plugins.sonar.SonarPublisher.class)
if(sonar) {
sonar.setJdk("jdk18") // set your JDK name here
it.publishersList.replace(sonar)
}
}
声明:本站的技术帖子网页,遵循CC BY-SA 4.0协议,如果您需要转载,请注明本站网址或者原文地址。任何问题请咨询:yoyou2525@163.com.