Как переместить Дженкинса с одного ПК на другой?

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

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

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

Ответ 1

Следуя Jenkins wiki, вам нужно будет:

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

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

Ответ 2

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

  • Установите ThinBackup как на исходный, так и на целевой серверы Jenkins.
  • Настройте каталог резервного копирования на обоих (в разделе Управление Jenkins → ThinBackup → Настройки)

  • В Sourse Jenkins перейдите в ThinBackup → Backup Now

  • Копирование из каталога резервного копирования Jenkins в каталог резервного копирования Jenkins Target
  • В Target Jenkins перейдите в ThinBackup → Восстановить, а затем перезапустите службу Jenkins.
  • Если некоторые плагины или задания отсутствуют, скопируйте содержимое резервной копии непосредственно в целевой JENKINS_HOME.

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

Ответ 3

Это сработало для меня, чтобы перейти от Ubuntu 12.04 (Jenkins ver. 1.628) к Ubuntu 16.04 (Jenkins, версия 1.651.2). Я сначала установил Jenkins из хранилищ.

Возможно, вам это не понадобится, но мне пришлось

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

Ответ 4

Автоматизация сервера Jenkins:

Шаг 1:

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

Шаг 2:

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

Шаг 3:

Разверните новую машину, используя вышеприведенную конфигурацию Jenkins. Когда все будет установлено, выберите Grab/Clone the Jenkins Configuration из репозитория Git в директорию Jenkins Home и перезапустите Jenkins.

Шаг 4:

Перейдите на страницу Jenkins, Управление Jenkins → Управление плагинами и обновите все плагины, требующие обновления.

Готово

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

Ответ 5

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

Для миграции плагинов:

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

    final_url = {DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins

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

    AUTH = (destination_jenkins_username, destination_jenkins_password)

    header = {crumb_field:crumb_value,"Content-Type":"application/xml"} (где crumb_field = Jenkins-Crumb и получить значение crumb с помощью вызова API {DESTINATION_JENKINS_SERVER}/crumbIssuer/api/json

Для переноса задания:

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

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

Вы можете ссылаться на JenkinsMigration.docx из этого URL-адреса