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


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.