Як безпечно перезапустити Дженкінса?


19

Мені потрібно внести деякі зміни конфігурації на наш екземпляр Дженкінса, які включатимуть перезапуск Дженкінса пару разів. Однак наші розробники докладають досить часто, щоб я не бачив Дженкінса без роботи, яка працює протягом трьох днів.

Чи існує рідний спосіб (або через GUI, або через командний рядок), щоб безпечно перезапустити Дженкінса? IE: дочекайтеся завершення поточних завдань, перш ніж спуститися, і слідкуйте за тим, щоб чергові завдання почалися, як тільки Дженкінс повернеться.

Я знаю, що є плагін, але для його встановлення мені потрібно перезапустити Дженкінс ...


Здогадуйтесь, що в моїй голові, але чи не відключає рабів варіант? (наскільки я пам’ятаю, це не зупиняє поточних робочих місць, але заважає запускати додаткові роботи в черзі)
Тенсібай

Теоретично, при правильно налаштованому екземплярі Дженкінса, який виконує завдання Pipeline, ви можете перезапустити головний або ведений вузли, коли хочете. Однак мій досвід говорить інакше.
jayhendren

Відповіді:


14

Якщо ви переходите до $YOUR_JENKINS_URL/updateCenter/вас, ви повинні побачити таку сторінку:

Тут ви можете перевірити, Restart Jenkins when installation is complete and no jobs are runningщо має бути досить безпечним.


Наскільки я розумію, що перезапуск відбувається лише в тому випадку, якщо плагіни знаходяться в процесі встановлення ... немає ніякого способу змусити це перезапуститись без встановлення плагінів, чи не так?
Олексій

1
@ Алекс я щойно перевірив це на своєму прикладі, і мені здається, він завжди працює, незалежно від установки плагіна. Відповідно до stackoverflow.com/a/8077830 , повинні бути /safeRestartі /restartкінцеві точки.
eyalzek

1
Але хіба не питання про перезапуск під час виконання завдань?
Дан Корнілеску

@DanCornilescu в запитанні зазначено: IE: wait for current jobs to finish before going down, and keep track of queued jobs to start once Jenkins comes back up.це саме те, що відбувається, коли ви встановите цей прапорець.
eyalzek

Я запитав, оскільки в питанні також зазначено Jenkins without jobs running in three days- а це означає, що буде мати вплив, оскільки деякі робочі місця затягнуться. Але все-таки краще, ніж втратити роботу.
Дан Корнілеску

15

Відвідавши https: // youjenkinsdomain / safeRestart, він встановить його в режимі, коли він очікує припинення завдань, а потім перезавантаження.


2
Мені потрібно було скористатися цією конкретною відповіддю, коли наш сервер Дженкінса вийшов з ладу і не вдалося перезапустити, коли плагін вимагав цього.
kayleeFrye_onDeck

8

Ви можете виконати команду safeRestart за допомогою API відпочинку Jenkins ( [jenkins_url] / safeRestart ), або ви можете виконати команду за допомогою CLI Jenkins .

sudo /etc/init.d/jenkins safeRestart

Запуск команди CLI

Загальний синтаксис такий (конструкція схожа на такі інструменти, як svn / git):

java -jar jenkins-cli.jar [-s JENKINS_URL] команда [параметри ...] [аргументи ...]

JENKINS_URL можна вказати через змінну середовища $ JENKINS_URL. Ця змінна середовище встановлюється автоматично, коли Дженкінс розщеплює процес під час збирання, що дозволяє використовувати CLI Jenkins всередині збірки без явного налаштування URL-адреси.

ПРИМІТКА. Під час виконання команди safeRestart будь-які завдання, встановлені під час перезавантаження, будуть встановлені в чергу і виконані, коли сервер знову в мережі. Переконайтеся, що це не викликає конфліктів при перезавантаженні!


1

Я думаю, що це реальна проблема, яку багато хто намагається вирішити. Бувають випадки, коли бажано перезапустити Дженкінс після встановлення плагіна. Однією з пропозицій, яку я можу надати на основі свого досвіду, є:

  • Обмежте доступ до модуля адміністратора, щоб не кожен розробник міг встановлювати плагіни
  • Інструктуйте розробників про час простою та повідомте їх достроково
  • Встановіть усі необхідні плагіни оптом і перезапустіть Дженкінс
  • Повідомте розробників, що Дженкінс готовий до використання

Я розумію, що для цього потрібні ручні зусилля та координація. Але це настільки добре спрацювало в нашому проекті, що згадувати не було шкоди.


1

Щоб перезапустити Дженкінс вручну, ви можете скористатися однією з наступних команд (ввівши їх URL-адресу в браузері):

(jenkins_url)/safeRestart- Дозволяє виконувати всі запущені завдання. Нові завдання залишатимуться в черзі для запуску після завершення перезапуску.

(jenkins_url)/restart - Змушує перезапуск, не чекаючи завершення збірок.


0

Відвідування " https: // jenkins / safeRestart " не чекає, коли "робочі місця / будівлі " будуть завершені повністю у разі роботи з трубопроводами.

Здається, чекають кроків, щоб закінчити і виконати перезапуск дженкінів та відновити трубопровід після того, як знову з'явилися джинкіни.


1
Я думаю, це розуміється як коментар до відповіді @Nakilon?
hagello

0

Дженкінс призначений для того, щоб не впливати на перезавантаження. З мого досвіду, можливо, що збірка може вийти з ладу через перезавантаження, але вони рідкісні.

Там, де я працюю, нам довелося регулярно перезапускати Дженкінса. У нас є всі види роботи, які ви можете собі уявити, якісь невеликі, якісь величезні. Лише одного разу ми побачили збій, коли соління не регідратація.

Після цього ми завжди робимо безпечні перезавантаження зараз.

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