有可能在两个不同的詹金斯之间交换工作吗?我正在寻找一种输出/输入工作的方法。
当前回答
转到Jenkins服务器的首页,点击页面底部的REST API:
创建工作
要创建一个新作业,将config.xml发送到这个URL,查询参数name=JOBNAME。你需要发送一个Content-Type: application/xml报头。如果创建成功,您将获得200状态代码,如果创建失败,则获得4xx/5xx代码。config.xml是Jenkins用于在文件系统中存储项目的格式,因此您可以在Jenkins主目录中看到它们的示例,或者通过从/job/JOBNAME/config.xml中检索现有作业的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); }
有一个叫Job Import plugin的插件可能就是你要找的。我用过。它确实存在从不允许匿名访问的服务器导入项目的问题。
完整性: 如果您有命令行访问这两个任务,您可以执行Khez已经提到的移动、复制和重命名Jenkins作业的过程。
一行程序:
$ 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 @-
在web浏览器中访问:
http://[jenkinshost]/job/[jobname]/config.xml
只需将文件保存到磁盘即可。
Jenkins有一个相当不错的wiki,尽管对于CI软件新手来说很难阅读……
它们为在服务器之间移动作业提供了一种简单的解决方案
诀窍可能是需要从Jenkins Configuration Page重新加载配置。
更新2020.03.10
詹金科学的格局已经改变了很多…我已经使用工作DSL有一段时间了。 我们有一个SEED Job,它生成其余的Job。
这有助于我们在需要的时候为Jenkins服务器重新创建或移动:) 您还可以为这些文件设置版本,以获得更好的可维护性!