Как скопировать задание из одного экземпляра в другой?
Я создаю новый сервер для запуска Jenkins. У меня есть существующий сервер Jenkins с рабочими местами. Теперь я хочу скопировать задания из старого экземпляра в новый экземпляр.
В новом экземпляре я на экране New Job. Я замечаю, что есть опция "копировать существующее задание". Когда я помещаю путь к заданию в старом экземпляре, я продолжаю получать сообщение об ошибке "no this job at http://old-instance/job/jobName".
Как копировать задание из одного экземпляра в другой?
Ответы
Ответ 1
В соответствии с руководством https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins просто переместить соответствующую директорию заданий в новый экземпляр Jenkins.
Параметр "Копировать существующее задание" требует, чтобы задание существовало в текущем экземпляре Jenkins. Это возможность использовать существующее задание в качестве шаблона. Он не может использоваться для перемещения заданий между экземплярами.
Ответ 2
Существует очень плагин для этого онлайн без копий файлов (что также работает): плагин Import Import: https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin p >
рассматривает
Didier
Ответ 3
Есть по крайней мере три пути
Ответ 4
Вы также можете сделать это в командной строке:
- Собирайте токены API аутентификации из двух экземпляров jenkins для вашего пользователя:
http://<jenkins-server>/user/<username>/configure
- Команда Curl для создания задания в новом экземпляре из конфигурации старого экземпляра:
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 @-
(любезно предоставлено fooobar.com/questions/33946/...)
Ответ 5
Плагин Import Import - самый простой способ скопировать задания из одного экземпляра jenkins в другой. Если это не работает из-за некоторых проблем безопасности, вы можете просто скопировать весь каталог заданий из старого экземпляра jenkins в новый экземпляр jenkins. Задания присутствуют в {Jenkins_Home}\jobs.. на сервере.
Как только вы закончите с копией, просто перезагрузите конфигурацию в новом экземпляре. Вы можете перезагрузить его из Jenkins- > Manage Jenkins- > Обновить конфигурацию с диска
Как только перезагрузка будет завершена, вы сможете увидеть свои задания.:)
Ответ 6
Вам просто нужно создать каталог с тем же именем, что и задание, и скопировать файл config.xml из оригинального Jenkins.
Просто будьте осторожны, если вам нужно сохранить нумерацию сборки, вам нужно будет скопировать номер в файле номера сборки и быть осторожным, если у вас есть разные плагины на обоих серверах Jenkins, как @LeeMeador говорит в своих комментариях.
Ответ 7
Я использовал Perl для автоматизации таких процессов с помощью CLI (перейдите в $jenkins_URL/cli/и загрузите Jenkins-cli.jar) (script изменился на ваш сценарий)
Важно убедиться, что у вас есть все необходимые плагины, установленные на вашем новом 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`;
}
Удачи!
Ответ 8
- Скопируйте задание в существующую папку
- Переместите задание в новую папку