Як перемістити Дженкінса з одного ПК на інший


154

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

До цього я зробив декілька побудов і артефакти архівували з кожної збірки. Зокрема, номер збірки дуже важливий для мене для контролю версій.

Як я можу експортувати всю інформацію про Дженкінс з мого поточного ПК на новий сервер?


6
Я щойно це зробив. Я дотримувався кроків з відповіді Седріка Жульєна, але виявив, що в Windows мені довелося запустити інсталяцію для відновлення, перш ніж Дженкінс міг успішно запуститись після переїзду. Після ремонту все добре.
Smurph269

Відповіді:


175

Після вікі Дженкінса вам доведеться:

  • Встановіть новий екземпляр Jenkins на новий сервер
  • Будьте впевнені, що старі та нові екземпляри Дженкінса зупинені
  • Заархівуйте весь вміст старого екземпляра Дженкінса JENKINS_HOME
  • Витягніть архів у новий каталог JENKINS_HOME
  • Запустіть новий екземпляр Дженкінса
  • Не забудьте змінити документацію / посилання на ваш новий екземпляр Дженкінса :)
  • Не забудьте змінити власника нових файлів Jenkins: chown -R jenkins:jenkins $JENKINS_HOME

JENKINS_HOME за замовчуванням , розташований в ~/.jenkinsна установці Linux, але точно визначити , де він розташований, перейдіть на Http: // your_jenkins_url / Configure сторінки і перевірте значення першого параметра: Home directory; це JENKINS_HOME.


1
Коли я запускав свої нові дженкіни, мої вузли з’являються внизу, що правильно. Але коли я натиснув якийсь вузол, URL-адреси вказують на старі дженкіни, як показано нижче: Запустити з командного рядка раб: javaws old-jenkins-server: 8080 / комп'ютер / slaveMachine1 / slave-agent.jnlp Або якщо раб без голови: java -jar slave.jar -jnlpUrl old-jenkins-server: 8080 / computer / slaveMachine1 / slave-agent.jnlp Тепер як мені зробити ці URL-адреси для кожного вузла, щоб вказати на new-jenkins-сервер?
merlachandra

13
Отримав рішення моєї проблеми, згаданої в попередньому коментарі: Goto Manage Jenkins> configure system. Тут, у розділі "Місцезнаходження Дженкінса", у полі "Дженкінс URL" змініть URL-адресу, щоб вказати її на новий сервер дженкінса.
мерлахандра

3
не забудьте скопіювати і приховані папки!
Мохі

7
ха-ха +1 на "не забудьте змінити документацію / посилання на ваш новий екземпляр Дженкінса"
Iain Smith

2
У мене виникли проблеми з правильними дозволами на файли та правом власності, щоб виправити це, я використав цей скрипт докера
marcinj

53

Якщо ваш каталог JENKINS_HOME занадто великий для копіювання , і все, що вам потрібно, це налаштувати ті ж конфігурації Джобкіна , Дженкінс плагіни та Дженкінса (і не потрібні старі артефакти та звіти), ви можете використовувати плагін ThinBackup :

  1. Встановіть ThinBackup як на вихідний, так і на цільовий сервери Jenkins
  2. Налаштуйте Каталог резервних копій на обох (у Manage Jenkins -> ThinBackup -> Settings)

  3. Звичайно, Дженкінс перейдіть до ThinBackup -> Резервне копіювання зараз

  4. Скопіюйте з каталогу резервного копіювання джерела Дженкінса в каталог резервного копіювання Дженкінса
  5. Націлене Дженкінс перейдіть до ThinBackup -> Відновити, а потім перезапустіть службу Дженкінса.
  6. Якщо деякі додатки або завдання відсутні, скопіюйте вміст резервної копії безпосередньо в цільовий JENKINS_HOME.

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


2
Чому каталог JENKINS_HOME коли-небудь буде занадто великим для копіювання? Про які розміри ми говоримо?
wotanii

9
мій jenkins_home складає 100 Гбіт або більше, не хочу копіювати це на новий сервер, оскільки його в основному викидають речі
user230910

3
Мій Jenkins_home становить ~ 4 ТБ, тому тонка копія, яка містить лише конфігурацію, і жодна історія збірки або / вміст користувача не є корисною.
VolleyJosh

Дивовижні, плагіни ... Дійсно заощадили багато часу .. впоратися з 100 Гб непроста робота
Swapnil Kotwal

11

Це допомогло мені перейти від Ubuntu 12.04 (Jenkins ver. 1.628) до Ubuntu 16.04 (Jenkins ver. 1.651.2). Я вперше встановив Дженкінса із сховищ .

  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, the Jenkins URLправильно призначений новий сервер Jenkins.

Чи мав новий Дженкінс таку ж версію, як і стару?
Якуб Чаплічки

@JakubCzaplicki - Обидва Дженкінса були 1.6, але не зовсім однаковою версією. Відповідь оновлено. Потім я оновив Ubuntu 16.04 до Jenkins 2.6, замінивши файл jenkins.war, і він добре працював. stackoverflow.com/questions/11062335/…
Кату

Після виконання вищезазначеного та відвідування /configureSecurityя отримуюjava.lang.AssertionError: InstanceIdentity is missing its singleton
maxisme

@maxisme, пізно, але ця тема говорить про те, що згадана вами проблема пов'язана з версією Java. issues.jenkins-ci.org/browse/JENKINS-46182
Кату

1

Автоматизація сервера Дженкінса:

Крок 1:

Налаштуйте сховище для зберігання будинку Дженкінса (завдання, конфігурації, плагіни тощо) в локальному сховищі GitLab або в приватному сховищі GitHub і регулярно його оновлюйте, натискаючи будь-які нові зміни в завдання Дженкінса, плагіни тощо.

Крок 2:

Налаштування лялькового хоста групи / ролі Дженкінс , який може бути використаний для розкрутки нових серверів Дженкінс. Виконайте всі основні конфігурації в рецепті ляльок і переконайтеся, що в ньому встановлена ​​остання версія Дженкінса і встановлено окремий каталог / кріплення дляJENKINS_HOME .

Крок 3:

Закрутіть нову машину, використовуючи вищевказану конфігурацію Дженкінса. Коли все встановлено, захопіть / клонуйте конфігурацію Дженкінса з сховища Git до домашньої дирекції Дженкінса та перезапустіть Дженкінс.

Крок 4:

Перейдіть за URL-адресою Дженкінса, Керуйте ДженкінсомКеруйте плагінами та оновіть усі плагіни, які потребують оновлення.

Зроблено

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


1

Іноді ми можемо не мати доступу до машини Дженкінса, щоб скопіювати папку безпосередньо в інший екземпляр Дженкінса. Тому я написав утиліту, керовану меню, яка використовує дзвінки API REST API для встановлення плагінів та завдань з одного екземпляра Jenkins в інший.

Для міграції плагінів:

  1. Отримати запит: {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 утиліту, керовану меню, яка просить користувача запустити плагін або міграцію Дженкінса і використовує дзвінки API REST API для цього.

Ви можете посилатися на JenkinsMigration.docx з цієї URL-адреси


Хоча це посилання може відповісти на питання, краще включити сюди суттєві частини відповіді та надати посилання для довідки. Відповіді лише на посилання можуть стати недійсними, якщо пов’язана сторінка зміниться.
vich
Використовуючи наш веб-сайт, ви визнаєте, що прочитали та зрозуміли наші Політику щодо файлів cookie та Політику конфіденційності.
Licensed under cc by-sa 3.0 with attribution required.