我面前有一项大任务......修改几个哈德森工作的配置.我想要的是从命令行执行它.但根据我的经验,除非你强制它"从磁盘重新加载配置",否则hudson不会重新读取配置.
我不想重新启动hudson只是为了一个小小的改变...就像在apache中进行"重新加载"一样.不知道如何阅读java代码,但我猜测我保存的内容位于保存配置更改后的部分中.
And*_*dis 16
以下是如何在不使用groovy重新启动或重新加载完整配置的情况下重新加载Jenkins中的作业.您还可以轻松修改脚本并重新加载某些特定或所有Jenkins作业,而无需重新启动.
Jenkins允许通过UI或CLI运行脚本.
UI:在Jenkins Script页面中复制以下脚本,例如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();
}
}
Run Code Online (Sandbox Code Playgroud)
CLI:您可以将上述脚本保存在文件中,并通过CLI远程执行它作为groovy脚本:
java -jar jenkins-cli.jar -s http://www.mydomain.com/jenkins groovy reload-job.groovy
Run Code Online (Sandbox Code Playgroud)
参考文献:
https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI(CLI)
http://javadoc.jenkins-ci.org/hudson (API)
小智 10
http://[jenkins-server]/reload
Run Code Online (Sandbox Code Playgroud)
取自管理詹金斯.
Hudson/Jenkins在内存中保存了它的运行时配置,只在启动时或"从磁盘重新加载配置"时重新加载它.
但是,从磁盘重新加载配置不是重新启动,只是重新读取配置.
这是你的所有选择,重新加载或重新启动.
将其分解为不同的工作将是一项重大任务,如果您还不能阅读 Java代码,我建议您不要编写它.实际上你也需要从主项目中分叉,因此更新将不兼容.
如果您需要通过脚本执行所有更新,然后自动重新加载配置,请使用hudson_cli.jar它.
延续Andreas Panagiotidis的想法,现在有一种更简单、更干净的方法来重新加载单个配置,Item只需调用doReload()该项目:
import jenkins.model.Jenkins;
Jenkins j = Jenkins.get()
def job_path = 'folder1/folder2/job_name'
def job = j.getItemByFullName(job_path)
job?.doReload()
Run Code Online (Sandbox Code Playgroud)
请注意,路径可能只是'job_name'.
| 归档时间: |
|
| 查看次数: |
23741 次 |
| 最近记录: |