3

我们想为我的公司提供一个自动安装程序。这样开发人员就不必使用很长的安装指南来设置他们的工作台。我们设法提供了 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!

即使使用 jenkins-cli.jar 的可运行 .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!");

        }

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

编辑:也想设置詹金斯位置以及电子邮件通知。

4

4 回答 4

2

这里是设置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!"
于 2013-11-08T09:21:00.587 回答
2

我在尝试让同样的事情与 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
于 2016-10-12T21:35:42.200 回答
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()
于 2016-12-29T18:21:59.907 回答
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!"
于 2013-11-07T15:14:31.500 回答