有可能在两个不同的詹金斯之间交换工作吗?我正在寻找一种输出/输入工作的方法。


当前回答

作为web用户,您可以通过转到作业配置历史记录导出XML。

我现在无法访问Jenkins正在运行的机器,我想把它作为备份导出。

至于以web用户身份导入xml,我还是想知道。

其他回答

有一个叫Job Import plugin的插件可能就是你要找的。我用过。它确实存在从不允许匿名访问的服务器导入项目的问题。

完整性: 如果您有命令行访问这两个任务,您可以执行Khez已经提到的移动、复制和重命名Jenkins作业的过程。

转到Jenkins服务器的首页,点击页面底部的REST API:

创建工作

要创建一个新作业,将config.xml发送到这个URL,查询参数name=JOBNAME。你需要发送一个Content-Type: application/xml报头。如果创建成功,您将获得200状态代码,如果创建失败,则获得4xx/5xx代码。config.xml是Jenkins用于在文件系统中存储项目的格式,因此您可以在Jenkins主目录中看到它们的示例,或者通过从/job/JOBNAME/config.xml中检索现有作业的XML配置。

在web浏览器中访问:

http://[jenkinshost]/job/[jobname]/config.xml

只需将文件保存到磁盘即可。

作业导入插件是这里从另一个Jenkins实例导入作业的简单方法。只需要提供源Jenkins实例的URL。Remote Jenkins URL可以接受以下任何类型的URL:

http://$JENKINS -获取远程实例上的所有作业 http://$JENKINS/job/$JOBNAME -找一份工作 http://$JENKINS/view/$VIEWNAME -获取特定视图中的所有作业

一行程序:

$ curl -s http://OLD_JENKINS/job/JOBNAME/config.xml | curl -X POST 'http://NEW_JENKINS/createItem?name=JOBNAME' --header "Content-Type: application/xml" -d @-

身份验证:

$ curl -s http:///<USER>:<API_TOKEN>@OLD_JENKINS/job/JOBNAME/config.xml | curl -X POST 'http:///<USER>:<API_TOKEN>@NEW_JENKINS/createItem?name=JOBNAME' --header "Content-Type: application/xml" -d @-

使用Crumb,如果CSRF是活动的(参见这里的详细信息):

获取面包屑:

$ CRUMB_OLD=$(curl -s 'http://<USER>:<API_TOKEN>@OLD_JENKINS/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')
$ CRUMB_NEW=$(curl -s 'http://<USER>:<API_TOKEN>@NEW_JENKINS/crumbIssuer/api/xml?xpath=concat(//crumbRequestField,":",//crumb)')

使用-H crumb涂抹crumb:

$ curl -s -H $CRUMB_OLD http:///<USER>:<API_TOKEN>@OLD_JENKINS/job/JOBNAME/config.xml | curl -X POST -H $CRUMB_NEW 'http:///<USER>:<API_TOKEN>@NEW_JENKINS/createItem?name=JOBNAME' --header "Content-Type: application/xml" -d @-