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

时间:2013-11-04 09:19:44

标签: java groovy jenkins

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

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

Groovy文件:

pc = new hudson.ProxyConfiguration(name, port, userName, password, noProxyHost);
jenkins.model.Jenkins.instance.proxy = pc;
println "Jenkins-Proxy settings updated!

命令行

type set setJenkinsProxy.groovy | java -jar jenkins-cli.jar -s 
http://localhost:8080/jenkins groovy =

下一部分是设置已安装的JDK。 首先想到的是使用groovy脚本来设置JDK。

Groovy文件:

jdk = new hudson.model.JDK(name, home, list);
jdklist = []
jdklist.add(jdk)
jenkins.model.Jenkins.instance.JDKs = jdk;
println "JDK settings updated!

即使有一个可运行的.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!");

        }

有没有正确的方法来设置此环境?我真的很感激任何帮助。

编辑: 想设置Jenkins位置以及电子邮件通知。

4 个答案:

答案 0 :(得分:2)

我在尝试与Jenkins一起工作时遇到了同样的问题&#39; 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

答案 1 :(得分:1)

这里是设置jdk(通过命令行执行groovy脚本)的示例

name = "Java";
home = "C:\\Program Files\\Java\\jdk1.7.0_40";
list = null;

dis = new hudson.model.JDK.DescriptorImpl();
dis.setInstallations( new hudson.model.JDK(name, home));

println "JDK settings updated!"

答案 2 :(得分:1)

@ jason-miller谢谢你。但是我发现我需要添加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()

答案 3 :(得分:0)

我终于在安装后找到了在Jenkins中设置LocationConfiguration的东西。 因此,如果有人需要它,这是使用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!"