如何在不重新启动的情况下重新加载hudson配置?

时间:2011-03-07 06:29:11

标签: hudson

我面前有一项大任务......修改几个哈德森工作的配置。我想要的是从命令行执行它。但根据我的经验,除非你强制它“从磁盘重新加载配置”,否则hudson不会重新读取配置。

我不想重新启动hudson只是为了一个小小的改变...就像在apache中进行“重新加载”一样。不知道如何阅读java代码,但我猜测我保存的内容位于保存配置更改后的部分中。

4 个答案:

答案 0 :(得分:16)

以下是如何在Jenkins中重新加载作业,而无需使用groovy重新启动或重新加载完整配置。您还可以轻松修改脚本并重新加载某些特定或所有Jenkins作业,而无需重新启动。

Jenkins允许通过UI或CLI运行脚本。

用户界面:在Jenkins脚本页面中复制以下脚本,例如http://www.mydomain.com/jenkins/script

import java.io.InputStream;
import java.io.FileInputStream
import java.io.File;
import javax.xml.transform.stream.StreamSource

def hudson = hudson.model.Hudson.instance;

//to get a single job
//def job = hudson.model.Hudson.instance.getItem('my-job');

for(job in hudson.model.Hudson.instance.items) {   

    if (job.name == "my-job") {

        def configXMLFile = job.getConfigFile();
        def file = configXMLFile.getFile();

        InputStream is = new FileInputStream(file);

        job.updateByXml(new StreamSource(is));
        job.save();         
    }      
} 

CLI :您可以将上述脚本保存在文件中,并通过CLI远程执行它作为groovy脚本:

 java -jar jenkins-cli.jar -s http://www.mydomain.com/jenkins groovy reload-job.groovy

参考文献:
https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI(CLI) http://javadoc.jenkins-ci.org/hudson(API)

答案 1 :(得分:8)

http://[jenkins-server]/reload

取自Administering Jenkins

答案 2 :(得分:7)

Hudson / Jenkins在内存中保存它的运行时配置,只在启动时或“从磁盘重新加载配置”时重新加载它。

但是,从磁盘重新加载配置不是重新启动,只是重新读取配置。

这是你的所有选择,重新加载或重启。

将其隐藏为不同的工作将是一项重大任务,如果您还不能读取 Java代码,我建议您不要编写它。实际上你也需要从主项目中分叉,因此更新将不兼容。

如果您需要通过脚本执行所有更新,然后自动重新加载配置,请使用hudson_cli.jar执行此操作。

答案 3 :(得分:0)

扩展了Andreas Panagiotidis的概念,现在有了更简单,更简洁的方式来重新加载单个Item的配置

import jenkins.model.Jenkins;

def job_path = 'folder1/folder2/job_name'

Jenkins j = Jenkins.get()

def job = j.getItemByFullName(job_path)

if (job) {
  job.doReload()
}

请注意,路径可能只是'job_name'