Подтвердить что ты не робот

Как скопировать задание из одного экземпляра в другой?

Я создаю новый сервер для запуска Jenkins. У меня есть существующий сервер Jenkins с рабочими местами. Теперь я хочу скопировать задания из старого экземпляра в новый экземпляр.

В новом экземпляре я на экране New Job. Я замечаю, что есть опция "копировать существующее задание". Когда я помещаю путь к заданию в старом экземпляре, я продолжаю получать сообщение об ошибке "no this job at http://old-instance/job/jobName".

Как копировать задание из одного экземпляра в другой?

4b9b3361

Ответ 1

В соответствии с руководством https://wiki.jenkins-ci.org/display/JENKINS/Administering+Jenkins просто переместить соответствующую директорию заданий в новый экземпляр Jenkins.

Параметр "Копировать существующее задание" требует, чтобы задание существовало в текущем экземпляре Jenkins. Это возможность использовать существующее задание в качестве шаблона. Он не может использоваться для перемещения заданий между экземплярами.

Ответ 3

Есть по крайней мере три пути

  • Скопировать каталог заданий
  • Использовать модуль импорта https://wiki.jenkins-ci.org/display/JENKINS/Job+Import+Plugin
  • Используйте CLI Jenkins для отображения заданий, получения задания xml, а затем создания работа на новом сервере на основе xml

Ответ 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

  • Скопируйте задание в существующую папку
  • Переместите задание в новую папку