我正在设置一个新服务器来运行Jenkins。我有一个现有的Jenkins服务器,里面有工作。现在,我想将作业从旧实例复制到新实例。
在新实例上,我处于“新建作业”屏幕。我注意到有一个“复制现有工作”选项。当我在旧实例上放置作业路径时,我不断收到错误消息“http://old-instance/job/jobName处没有这样的工作”。
如何将作业从一个实例复制到另一个实例?
答案 0 :(得分:29)
根据手册https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins,只需将相应的作业目录移动到新的Jenkins实例。
“复制现有作业”选项要求作业存在于当前Jenkins实例上。可以选择将现有作业用作模板。它不能用于在实例之间移动作业。
答案 1 :(得分:15)
有一个非常插件可以在线进行,没有文件副本(也可以):作业导入插件:https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin
问候
迪迪埃
答案 2 :(得分:4)
至少有三种方式
答案 3 :(得分:3)
Job Import Plugin是将作业从一个jenkins实例复制到其他实例的最简单方法。如果由于某些安全问题而无法正常工作,您可以将整个jobs目录从旧的jenkins实例复制到新的jenkins实例中。作业存在于{Jenkins_Home} \ jobs ..服务器上。
完成复制后,只需在新实例上重新加载配置即可。您可以从Jenkins->管理Jenkins->从磁盘重新加载配置
重新加载它重新加载完成后,您可以看到自己的工作。 :)
答案 4 :(得分:3)
您也可以在命令行上执行此操作:
http://<jenkins-server>/user/<username>/configure
curl -k -s http://<user>:<token>@OLD_JENKINS/job/JOBNAME/config.xml | curl -k -X POST https://<user>:<token>@http://NEW_JENKINS/createItem?name=JOBNAME --header "Content-Type: application/xml" -d @-
答案 5 :(得分:1)
您只需创建一个与作业同名的目录,然后从原始Jenkins复制config.xml文件。
请注意,如果您需要保留构建编号,则需要在构建号文件中复制该编号,并且如果您在两个Jenkins服务器上都有不同的插件,请小心,正如@LeeMeador在他的评论中所说的那样。 / p>
答案 6 :(得分:0)
我使用Perl使用CLI自动执行此类流程(转到$ jenkins_URL / cli /并下载Jenkins-cli.jar)(脚本已更改为您的方案)
确保在新的Jenkins上安装了所有必要的插件非常重要,否则任何迁移方法都无法正常工作......
my $newJobPrefix = "New_Jenkins";
my $jobPrefix = "Old_Jenkins";
my $result = `"$java" -jar old-jenkins-cli.jar -noKeyAuth -s $jenkins_URL list-jobs All`;
@jobList = split("\n", $result);
foreach my $job (@jobList)
{
# ---- Getting configuration of jobs ----
print "Getting config for: $job \n";
my $config = `"$java" -jar $jenkinsJar -noKeyAuth -s $jenkins_URL get-job $job`;
my $file = "$jobPrefix\\$job.xml";
unless(open FILE, '>', $file) {die "Unable to open $file";}
print FILE $config;
close FILE;
# ---- Adding Job to new Jenkins ----
my $result = `"$java" -jar new-jenkins-cli.jar -noKeyAuth -s $New_jenkins_URL create-job $job< $file`;
}
祝你好运!
答案 7 :(得分:0)
答案 8 :(得分:0)
我建议使用scp将作业目录从〜jenkins / jobs直接复制到目的地:
scp -r ~jenkins/jobs/{sourceJobName} user@remote:~jenkins/jobs/
答案 9 :(得分:0)
.jenkins-cli 和 .jenkins-cli_newserver 是包含
的单行文件
username:userapikey
将旧服务器 get-job
响应中的XML输出管道到新服务器 create-job
请求中。
java -jar ~/jenkins-cli.jar \
-s http://oldserver:8080 \
-auth @/.jenkins-cli \
get-job "job name" \
| java -jar ~/jenkins-cli_newserver.jar \
-s http://newserver:8080 \
-auth @/.jenkins-cli_newserver \
create-job "new or existing job name"
⚠️请注意, create-job
可以重命名作业⚠️