Java 部署前如何设置Jenkins JDK/Environment?
我们想为我的公司提供一个自动安装程序。这样开发人员就不必用很长的安装指南来设置他们的工作台。 我们设法提供了90% 上周我们收到一封电子邮件,要求在安装过程中配置Jenkins。 配置代理设置的第一部分是通过groovy脚本 Groovy文件:Java 部署前如何设置Jenkins JDK/Environment?,java,groovy,jenkins,Java,Groovy,Jenkins,我们想为我的公司提供一个自动安装程序。这样开发人员就不必用很长的安装指南来设置他们的工作台。 我们设法提供了90% 上周我们收到一封电子邮件,要求在安装过程中配置Jenkins。 配置代理设置的第一部分是通过groovy脚本 Groovy文件: pc = new hudson.ProxyConfiguration(name, port, userName, password, noProxyHost); jenkins.model.Jenkins.instance.proxy = pc; pri
pc = new hudson.ProxyConfiguration(name, port, userName, password, noProxyHost);
jenkins.model.Jenkins.instance.proxy = pc;
println "Jenkins-Proxy settings updated!
jdk = new hudson.model.JDK(name, home, list);
jdklist = []
jdklist.add(jdk)
jenkins.model.Jenkins.instance.JDKs = jdk;
println "JDK settings updated!
命令行
type set setJenkinsProxy.groovy | java -jar jenkins-cli.jar -s
http://localhost:8080/jenkins groovy =
下一部分是设置已经安装的JDK。
第一个想法是使用groovy脚本来设置JDK
Groovy文件:
pc = new hudson.ProxyConfiguration(name, port, userName, password, noProxyHost);
jenkins.model.Jenkins.instance.proxy = pc;
println "Jenkins-Proxy settings updated!
jdk = new hudson.model.JDK(name, home, list);
jdklist = []
jdklist.add(jdk)
jenkins.model.Jenkins.instance.JDKs = jdk;
println "JDK settings updated!
即使有一个runnable.jar文件,它将使用jenkins-cli.jar,它也不起作用
JDK.jar
public static void main(String[] args) {
JDK jdk = new JDK(args[0], args[1]);
List<JDK> jdklist = new ArrayList<JDK>();
jdklist.add(jdk);
jenkins.model.Jenkins.jdks = jdklist;
System.out.println("Jenkins JDK set!");
}
publicstaticvoidmain(字符串[]args){
JDK JDK=newjdk(args[0],args[1]);
List jdklist=new ArrayList();
jdklist.add(jdk);
jenkins.model.jenkins.jdks=jdklist;
System.out.println(“Jenkins JDK set!”);
}
是否有适当的方法设置此环境?我真的很感激任何帮助
编辑:
希望设置Jenkins位置以及电子邮件通知。安装后,我终于在Jenkins中找到了设置位置配置的工具。 因此,如果有人需要它,这是带有jenkins-cli.jar的groovy脚本可执行文件
liste = new File('filename to read from').readLines()
jlc = new jenkins.model.JenkinsLocationConfiguration();
println jlc.getUrl()
println jlc.getAdminAddress()
jlc.setUrl("http://" + liste[0] + ":8080/jenkins/");
jlc.setAdminAddress(liste[1]);
println ("Set url to: http://" + liste[0] + ":8080/jenkins/")
println ("Set AdminAddress to: " + liste[1])
println "JenkinsLocation updated!"
下面是设置jdk(通过命令行执行的groovy脚本)的示例
我在尝试使用Jenkins的
init.groovy.d
脚本时遇到了这个问题。我能够使用以下脚本自动安装JDK:
import jenkins.model.*
import hudson.model.*
import hudson.tools.*
def inst = Jenkins.getInstance()
def desc = inst.getDescriptor("hudson.model.JDK")
def versions = [
"jdk8": "jdk-8u102-oth-JPR"
]
def installations = [];
for (v in versions) {
def installer = new JDKInstaller(v.value, true)
def installerProps = new InstallSourceProperty([installer])
def installation = new JDK(v.key, "", [installerProps])
installations.push(installation)
}
desc.setInstallations(installations.toArray(new JDK[0]))
desc.save()
// Required: enter credentials at http://l:8080/descriptorByName/hudson.tools.JDKInstaller/enterCredential
@杰森·米勒,谢谢你。但是我发现我需要添加
inst.save()
,或者安装没有保存到config.xml(因此不是永久的)
我有一个稍微不同的应用程序。我想指出/usr/java中现有的JDK安装,因此我对您的代码进行了如下修改:
#!groovy
// On GUI, this is on Configure Tools page, "JDK" section
// In config.xml, this is under <jdks>
import jenkins.model.*
import hudson.model.*
import groovy.io.FileType
def jdkDir = "/usr/java"
def inst = Jenkins.getInstance()
def desc = inst.getDescriptor("hudson.model.JDK")
def dirs = []
def currentDir = new File(jdkDir)
currentDir.eachFile FileType.DIRECTORIES, {
dirs << it.name
}
def installations = []
for (dir in dirs) {
def installation = new JDK(dir, jdkDir + "/" + dir)
installations.push(installation)
}
desc.setInstallations(installations.toArray(new JDK[0]))
desc.save()
inst.save()
#!棒极了
//在GUI上,这在配置工具页面的“JDK”部分
//在config.xml中,这是在
导入jenkins.model*
导入hudson.model*
导入groovy.io.FileType
def jdkDir=“/usr/java”
def inst=Jenkins.getInstance()
def desc=inst.getDescriptor(“hudson.model.JDK”)
def dirs=[]
def currentDir=新文件(jdkDir)
currentDir.eachFile FileType.DIRECTORIES{
dirs为什么每个开发人员都需要设置自己的Jenkins实例?我不明白。到目前为止,我听到的答案是测试。有没有解决方案在安装期间或之后执行此操作?只是为了补充一点,您现在还需要安装jdk工具插件,因为没有它JDKInstaller是未定义的。似乎这就是split将主代码导出为插件。