2012-01-04 3 views
114

В настоящее время я использую Jenkins на своем компьютере разработки. Я установил его на свой ПК разработки, потому что у меня были ограниченные знания об этом инструменте; поэтому я тестировал его на своем ПК разработки. Теперь я чувствую себя комфортно с Дженкинсом в качестве своего долгосрочного «партнера» в процессе сборки и хотел бы «переместить» этого Дженкинса на выделенный сервер.Как переместить Дженкинса с одного компьютера на другой?

До этого я сделал несколько сборок и архивировал артефакты из каждой сборки. В частности, номер сборки очень важен для меня для контроля версий.

Как я могу экспортировать всю информацию Дженкинса с моего текущего компьютера на мой новый сервер?

+6

Я просто сделал это. Я выполнил шаги из ответа Седрика Жюльена, но я обнаружил, что в Windows мне пришлось запустить установку Repair, прежде чем Jenkins сможет успешно начать работу после этого хода. После ремонта все в порядке. – Smurph269

ответ

127

После Jenkins wiki, вам придется:

  • установить свежий Дженкинс в новом сервере
  • быть уверены, что старые и новые Дженкинс остановлены
  • архивировать все содержимое из JENKINS_HOME экземпляра старые Дженкинс
  • извлечь из архива в новый каталог JENKINS_HOME
  • запуск нового Jenkins
  • не забудьте изменить документации/ссылки на ваш новый экземпляр Дженкинс :)
  • не забудьте изменить владельца новых файлов Дженкинс: chown -R jenkins:jenkins $JENKINS_HOME

EDIT: JENKINS_HOME по умолчанию по установке Linux расположенный в ~/.jenkins, но для того, чтобы точно найти, где он находится, зайдите на страницу http://your_jenkins_url/configure и проверьте значение первого параметра: Home directory, это JENKINS_HOME.

+0

Когда я запускал свои новые дженкинсы, мои узлы показывают вниз, что верно. Но когда я нажал на какой-то узел, URL-адреса указывают на старых дженкинсов, как показано ниже: Запуск из командной строки: javaws http: // old-jenkins-server: 8080/computer/slaveMachine1/slave-agent.jnlp Или если ведомое устройство безголовое: java -jar slave.jar -jnlpUrl http: // old-jenkins-server: 8080/computer/slaveMachine1/slave-agent.jnlp Теперь Как мне сделать эти URL-адреса для каждого узла, чтобы указать на новый-Дженкинс-сервер? – merlachandra

+11

Получил решение моей проблемы, упомянутое в моем предыдущем комментарии: Goto Manage Jenkins> настроить систему. Здесь, в разделе «Местоположение Jenkins» в поле «Jenkins URL», измените URL-адрес, чтобы указать его на новый сервер jenkins. – merlachandra

+2

обязательно скопируйте скрытые папки! – mohi

31

В случае, если ваш каталог JENKINS_HOME слишком большой, чтобы скопировать, и все, что вам нужно, это же установки Работа, Дженкинс Плагины и Дженкинс конфигурации (и не нужны старые артефакты вакансий и отчеты), то вы можете использовать ThinBackup Plugin :

  1. Установите ThinBackup как на источнике и цели Дженкинс серверов
  2. Каталог Настройка резервного копирования на обоих (в Управление Дженкинс -> ThinBackup -> Настройки)

  3. На SOURSE Дженкинс перейти к ThinBackup -> Backup Now

  4. Копирование из каталога Дженкинс резервного источника в Дженкинс целевой каталог резервного копирования
  5. На Target Дженкинс перейти к ThinBackup -> Восстановление, а затем перезапустить службу Дженкинс.
  6. Если отсутствуют какие-либо плагины или задания, скопируйте содержимое резервной копии прямо в целевой JENKINS_HOME.

  7. Если у вас была аутентификация пользователя на исходном Дженкинсе, а теперь заблокирована на целевой Jenkins, тогда отредактируйте Jenkins config.xml, установите <useSecurity> на false и перезапустите Jenkins.

+1

Почему каталог JENKINS_HOME когда-либо был бы слишком большим для копирования? О каких размерах мы говорим? – wotanii

+5

my jenkins_home - 100Gb или около того, не хотите копировать его на новый сервер, так как его в основном выкидывают вещи – user230910

8

Это работает для меня, чтобы перейти от Ubuntu 12.04 (Jenkins вер. 1.628) в Ubuntu 16.04 (Jenkins вер. 1.651.2). Я первый installed Jenkins from the repositories.

  1. Stop both Jenkins servers
  2. Copy JENKINS_HOME (например,/вар/Lib/Jenkins) со старого сервера на новый. С консоли в новом сервере:

    rsync -av [email protected]:/var/lib/jenkins/ /var/lib/jenkins/

  3. Start your new Jenkins server

Вы не могли бы нуждаться в этом, но я должен был

  • Manage Jenkins и Reload Configuration from Disk.
  • Отключите и снова подключите все ведомые устройства.
  • Проверьте, что в Configure System > Jenkins LocationJenkins URL правильно назначен новому серверу Jenkins.
+0

Были ли у новой Дженкинса ту же версию, что и у старой? –

+0

@JakubCzaplicki - Оба Дженкинса были 1.6, но не совсем такая же версия. Ответ обновлен. Затем я обновил Ubuntu 16.04 до Jenkins 2.6, заменив файл jenkins.war, и он работал хорошо. http://stackoverflow.com/questions/11062335/update-jenkins-from-a-war-file – Katu

1

Дженкинс Automation Server:

Шаг 1:

Setup хранилище для хранения Jenkins Home [Работа, Configs, плагины и т.д.] в Git-лаборатории локального или на GitHub частном хранилище и регулярно обновляйте его, нажимая любые новые изменения в Jenkins Jobs или Plugins и т. д.

Шаг 2:

Настройка кукольный хост-группа/роль Дженкинс, которая может быть использована для раскрутки новых серверов Дженкинс. Есть все основные конфигурации в кукольном рецепте и убедитесь, что он устанавливает последнюю версию Дженкинс и устанавливает отдельную директорию/крепление для JENKINS_HOME

Шага 3:

Спина новой машины с помощью Jenkins-марионетку конфигурации выше. Когда все будет установлено, Grab/Clone Конфигурация Jenkins из Git Repository в Jenkins Home direcotry и Restart Jenkins.

Шаг 4:

Перейти к Дженкинс URL, Управление Дженкинс -> Управление плагинов и обновление всех плагинов, которые требуют обновления.

Совершено

Вы можете использовать Docker Swarm или Kubernetes для автоматического масштаба подчиненных узлов.

1

Иногда у нас может не быть доступа к машине Дженкинса для копирования папки непосредственно в другой экземпляр jenkins. Поэтому я написал утилиту, управляемую меню, которая использует вызовы API Jenkins REST для установки плагинов и Джобсов из одного экземпляра jenkins в другой.

Для Plugin миграции:

  1. запрос GET: {SOURCE_JENKINS_SERVER}/pluginManager/api/json?depth=1 получите вам список установленных плагинов с их версией.
  2. вы можете отправить запрос POST со следующими параметрами для установки этих плагинов.

    final_url = {DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins

    данных = <jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins> (где, последняя будет получать самую последнюю версию plugin_name)

    AUTH = (destination_jenkins_username, destination_jenkins_password)

    заголовок = {crumb_field:crumb_value,"Content-Type":"application/xml”} (где crumb_field = Дженкинс-Крошка и получить значение крошки с использованием вызова API {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json

для задания миграции:

  1. Вы можете получить список заданий, установленных на {SOURCE_JENKINS_URL} с помощью REST вызова {SOURCE_JENKINS_URL}/view/All/api/json
  2. Затем вы можете получить каждый файл config.xml задания из заданий на {SOURCE_JENKINS_URL}, используя работа URL {SOURCE_JENKINS_URL}/job/{JOB_NAME}
  3. Используйте этот config.xml файл POST содержимое XML-файла на {DESTINATION_JENKINS_URL} и что будет создавать работу на {} DESTINATION_JENKINS_URL

Я создал утилиту, управляемую меню в python, которая запрашивает у пользователя возможность начать миграцию плагинов или дженкинсов и использовать вызовы API Jenkins REST для этого.

Вы можете передать JenkinsMigration.docx из этого URL

+0

Хотя эта ссылка может ответить на вопрос, лучше включить здесь основные части ответа и предоставить ссылку для справки , [Link-only] (https://meta.stackexchange.com/tags/link-only-answers/info) ответы могут стать недействительными, если связанная страница изменится. – mmichael

+1

отредактировал ответ с подробностями – psalvi21