Как переместить Дженкинс с одного компьютера на другой - PullRequest
141 голосов
/ 04 января 2012

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

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

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

Ответы [ 5 ]

162 голосов
/ 04 января 2012

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

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

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

44 голосов
/ 26 ноября 2015

Если ваш каталог JENKINS_HOME слишком велик для копирования , и все, что вам нужно, это настроить одинаковые конфигурации Jobs, Jenkins Plugins и Jenkins (и вам не нужны старые артефакты и отчеты Job), тогда вы можно использовать ThinBackup Plugin :

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

  3. На Sourse Jenkins перейдите в ThinBackup -> Резервное копирование сейчас

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

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

11 голосов
/ 30 мая 2016

Это помогло мне перейти с Ubuntu 12.04 (Jenkins ver. 1.628) на Ubuntu 16.04 (Jenkins ver. 1.651.2).Я сначала установил Jenkins из репозиториев .

  1. Остановите оба сервера Jenkins
  2. Копируйте JENKINS_HOME (например, / var / lib / jenkins) со старого сервера на новый.С консоли на новом сервере:

    rsync -av username@old-server-IP:/var/lib/jenkins/ /var/lib/jenkins/

  3. Запустите новый сервер Jenkins

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

  • Manage Jenkins и Reload Configuration from Disk.
  • Отключить и снова подключить все ведомые.что в Configure System > Jenkins Location Jenkins URL правильно назначен новому серверу Jenkins.
1 голос
/ 22 июня 2017

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

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

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

    final_url=`{DESTINATION_JENKINS_SERVER}/pluginManager/installNecessaryPlugins`
    
    data=`<jenkins><install plugin="{PLUGIN_NAME}@latest"/></jenkins>` (where, latest will fetch the latest version of the plugin_name)
    
    auth=`(destination_jenkins_username, destination_jenkins_password)`
    
    header=`{crumb_field:crumb_value,"Content-Type":"application/xml”}` (where crumb_field=Jenkins-Crumb and get crumb value using API call {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 для размещения содержимого XML-файла на {DESTINATION_JENKINS_URL}, и это создаст задание на {DESTINATION_JENKINS_URL}.

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

Вы можете ссылаться на JenkinsMigration.docx по этому URL

1 голос
/ 11 октября 2016

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

Шаг 1:

Настройте репозиторий для хранения дома Jenkins (заданий, конфигураций, плагинов и т. Д.) В локальном GitLab или в частном репозитории GitHub и регулярно обновляйте его, внося любые новые изменения в задания Jenkins, плагины и т. Д.

Шаг 2:

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

Шаг 3:

Раскрутите новую машину, используя конфигурацию Jenkins-puppet выше. Когда все установлено, захватите / клонируйте конфигурацию Jenkins из репозитория Git в домашнюю директорию Jenkins и перезапустите Jenkins.

Шаг 4:

Перейдите по URL-адресу Jenkins, Управление Jenkins Управление плагинами и обновите все плагины, для которых требуется обновление.

Готово

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

...