是否有可能在两个不同的詹金斯之间交换工作?我正在寻找出口/进口工作的方法.
可能使用jenkins命令行是另一种选择,请参阅https://wiki.jenkins-ci.org/display/JENKINS/Jenkins+CLI
create-job:通过将stdin作为配置XML文件读取来创建新作业.
get-job:将作业定义XML转储到stdout
所以你可以做到
java -jar jenkins-cli.jar -s http://server get-job myjob > myjob.xml java -jar jenkins-cli.jar -s http://server create-job newmyjob < myjob.xml
它适用于我,我习惯存储在我的版本控制系统内
Jenkins有一个相当不错的wiki,虽然你刚接触CI软件时很难阅读...
它们为在服务器之间移动作业提供了简单的解决方
诀窍可能是需要从Jenkins配置页面重新加载配置.
单行:
-H CRUMB
认证
-H CRUMB
使用Crumb,如果CSRF处于活动状态(请参阅此处的详细信息)
得到面包屑:
-H CRUMB
-H CRUMB
申请面包屑-H CRUMB
:
-H CRUMB
有一个名为Job Import Plugin的插件可能就是你想要的.我用过它.它确实存在从不允许匿名访问的服务器导入项目的问题.
完整性:如果您具有对两者的命令行访问权限,则可以执行Khez已提及的用于移动,复制和重命名Jenkins作业的过程.
转到Jenkins服务器的首页,单击页面底部的REST API:
创造工作
要创建新作业,请config.xml
使用query参数发布到此URL name=JOBNAME
.您需要发送Content-Type: application/xml
标题.200
如果创建成功,您将获得状态代码,4xx/5xx
如果失败则获得代码.config.xml
是Jenkins用于将项目存储在文件系统中的格式,因此您可以在Jenkins主目录中查看它们的示例,或者从中检索现有作业的XML配置/job/JOBNAME/config.xml
.
在我的Jenkins实例(版本1.548)中,配置文件位于:
/var/lib/jenkins/jobs/-the-project-name-/config.xml
由jenkins用户和jenkins组拥有644权限.在此处复制文件应该可以正常工作.我没有尝试直接更改它,但已经从这个位置备份配置,以防项目需要再次设置.
Job Import插件是从其他Jenkins实例导入作业的简便方法.只需要提供源Jenkins实例的URL.Remote Jenkins URL可以采用以下任何类型的URL:
http://$JENKINS
- 获取远程实例上的所有作业
http://$JENKINS/job/$JOBNAME
- 找一份工作
http://$JENKINS/view/$VIEWNAME
- 在特定视图中获取所有工作
感谢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