Как переместить Дженкинса с одного ПК на другой?
В настоящее время я использую 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-адреса
jenkins jenkinsmigration jenkinsrestapi