有可能在两个不同的詹金斯之间交换工作吗?我正在寻找一种输出/输入工作的方法。
当前回答
最简单的方法,直接访问机器是复制作业文件夹从第一个jenkins到另一个(你可以排除工作区-工作区文件夹),因为整个作业配置存储在磁盘上的xml文件(config.xml在作业路径文件夹)
然后在新的jenkins中只需重新加载配置中的全局设置(管理员权限是必需的)就应该足够了,如果不行,那么你就需要重新启动jenkins工具。
另一种方法是使用上面提到的插件。
编辑:
在这种情况下,你可能也可以排除模块文件夹和管道以及共享库文件夹,如workspace@libs
其他回答
作业导入插件是这里从另一个Jenkins实例导入作业的简单方法。只需要提供源Jenkins实例的URL。Remote Jenkins URL可以接受以下任何类型的URL:
http://$JENKINS -获取远程实例上的所有作业 http://$JENKINS/job/$JOBNAME -找一份工作 http://$JENKINS/view/$VIEWNAME -获取特定视图中的所有作业
下载插件名非常简单
作业导入插件
输入Remote Jenkins服务器的URL,它将自动导入作业
在web浏览器中访问:
http://[jenkinshost]/job/[jobname]/config.xml
只需将文件保存到磁盘即可。
简单的php脚本为我工作。
Export: // add all job codes in the array $jobs = array("job1", "job2", "job3"); foreach ($jobs as $value) { fwrite(STDOUT, $value. " \n") or die("Unable to open file!"); $path = "http://server1:8080/jenkins/job/".$value."/config.xml"; $myfile = fopen($value.".xml", "w"); fwrite($myfile, file_get_contents($path)); fclose($myfile); } Import: <?php // add all job codes in the array $jobs = array("job1", "job2", "job3"); foreach ($arr as $value) { fwrite(STDOUT, $value. " \n") or die("Unable to open file!"); $cmd = "java -jar jenkins-cli.jar -s http://server2:8080/jenkins/ create-job ".$value." < ".$value.".xml"; echo exec($cmd); }
多亏了Larry Cai的回答,我成功地创建了一个脚本来备份我所有的Jenkins作业。我创建了一个每周运行这个的作业。如果有人发现它有用,这里是:
#!/bin/bash
#IFS for jobs with spaces.
SAVEIFS=$IFS
IFS=$(echo -en "\n\b")
for i in $(java -jar /run/jenkins/war/WEB-INF/jenkins-cli.jar -s http://server:8080/ list-jobs);
do
java -jar /run/jenkins/war/WEB-INF/jenkins-cli.jar -s http://server:8080/ get-job ${i} > ${i}.xml;
done
IFS=$SAVEIFS
mkdir deploy
tar cvfj "jenkins-jobs.tar.bz2" ./*.xml
推荐文章
- 如何使用GitHub Org Plugin从jenkins管道(jenkinsfile)触发另一个作业?
- 在GitHub repo上显示Jenkins构建的当前状态
- Hudson支持的JUnit XML格式规范是什么?
- Maven依赖项失败,出现501错误
- 我怎么能让詹金斯CI与Git触发器推到主人?
- 如何从命令行重置Jenkins安全设置?
- 如何在不重启服务器的情况下停止詹金斯上不可阻挡的僵尸工作?
- Jenkins:注释可以添加到Jenkins文件中吗?
- 如何在Jenkins中设置发件人地址?
- 为某些代码关闭声纳
- 如何在Jenkins中设置环境变量?
- 我如何在詹金斯克隆一份工作?
- 如何在本地测试对詹金斯文件所做的更改?
- 在Git中更改电子邮件地址
- 从docker内部运行docker是否可以?