Java 部署前如何设置Jenkins JDK/Environment?

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

我们想为我的公司提供一个自动安装程序。这样开发人员就不必用很长的安装指南来设置他们的工作台。 我们设法提供了90%

上周我们收到一封电子邮件,要求在安装过程中配置Jenkins。 配置代理设置的第一部分是通过groovy脚本

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!
命令行

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将主代码导出为插件。