Как скопировать задание из одного экземпляра в другой? - PullRequest
32 голосов
/ 27 января 2012

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

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

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

Ответы [ 9 ]

29 голосов
/ 27 января 2012

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

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

15 голосов
/ 01 февраля 2012

Существует очень плагин, который делает это онлайн без копий файлов (который также работает): плагин импорта задания: https://wiki.jenkins -ci.org / display / JENKINS / Job + Import + Plugin

привет

Didier

4 голосов
/ 20 мая 2016

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

  1. Каталог заданий на копирование
  2. Использовать плагин импорта https://wiki.jenkins -ci.org / дисплей / Дженкинс / Работа + Импорт + Plugin
  3. Используйте Jenkins CLI, чтобы составить список заданий, получить xml задания, а затем создать работа на новом сервере на основе xml
3 голосов
/ 18 июля 2016

Вы также можете сделать это в командной строке:

  1. Соберите токены API аутентификации из двух экземпляров jenkins для своего пользователя: http://<jenkins-server>/user/<username>/configure
  2. Команда 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 @-

(предоставлено https://stackoverflow.com/a/30575318/3891027)

3 голосов
/ 23 июня 2015

Плагин импорта заданий - это самый простой способ скопировать задания из одного экземпляра jenkins в другой. Если это не работает из-за некоторых проблем безопасности, вы можете просто скопировать весь каталог заданий из старого экземпляра jenkins в новый экземпляр jenkins. Задания присутствуют в {Jenkins_Home} \ jobs .. на сервере.

Когда вы закончите копирование, просто перезагрузите конфигурацию на новом экземпляре. Вы можете перезагрузить его из Jenkins-> Manage Jenkins-> Обновить конфигурацию с диска

Как только перезагрузка будет завершена, вы сможете увидеть свои рабочие места. :)

1 голос
/ 18 июля 2015

Вам просто нужно создать каталог с тем же именем, что и у задания, и скопировать файл config.xml из оригинального Jenkins.

Просто помните, что если вам нужно сохранить нумерацию сборок, вам нужно скопировать номер в файле номеров сборок и быть осторожным, если у вас есть разные плагины на обоих серверах Jenkins, как @LeeMeador говорит в своих комментариях.

0 голосов
/ 31 октября 2018

Я бы порекомендовал копировать каталоги вакансий из ~ jenkins / jobs прямо в место назначения с помощью scp:

scp -r ~jenkins/jobs/{sourceJobName} user@remote:~jenkins/jobs/
0 голосов
/ 02 октября 2017
  1. Скопировать работу в существующую папку
  2. Переместить задание в новую папку
0 голосов
/ 22 мая 2016

Я использовал 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`;
}

Удачи!

Добро пожаловать на сайт PullRequest, где вы можете задавать вопросы и получать ответы от других членов сообщества.
...