2013-11-04 28 views
1

我們想爲我的公司提供一個自動安裝程序。以便開發人員不必使用非常長的安裝指南來設置他們的工作臺。 我們設法提供90%。如何在部署之前設置Jenkins JDK /環境?

上週我們收到了一封電子郵件,我們應該在安裝過程中配置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文件,將使用詹金斯-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!"); 

     } 

有沒有設置這個環境有道?我真的很感激任何幫助。

編輯: 想要設置詹金斯位置以及電子郵件通知。

+1

爲什麼每個開發人員都需要設置自己的Jenkins實例?我不明白。 –

+0

到目前爲止,我聽說的答案是用於測試。 在安裝期間或之後是否有解決方案? – tr4pt

回答

0

我終於在安裝後找到了在Jenkins中設置LocationConfiguration的東西。 所以如果有人需要它,這是Groovy腳本可執行文件詹金斯-cli.jar

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!" 
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!" 
0

我來了在試圖獲得與詹金斯的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 
0

@ 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()