Jenkins — Агент Перезапуска Для Каждой Сборки

  • Автор темы Dianocika26
  • Обновлено
  • 19, Oct 2024
  • #1

Как настроить Jenkins для перезапуска агента для каждый строить?

Я пытался использовать "метод запуска: запуск агента через выполнение команды на мастере"в сочетании с"доступность: переводите этого агента в онлайн-режим, когда он востребован, и в автономный режим, когда он простаивает.", но у него есть два недостатка:

  1. (не критично) сборка начинается с задержкой около минуты.
  2. (критично) узел отключается только через минуту после окончания сборки, и если в это время начнется другая сборка, одинаковый будет использоваться все еще работающий агент (даже если имеется несколько одинаково настроенных свободных узлов).

Есть даже плагин (скриптовый облачный плагин), который по описанию должен подойти, но он не работает, видимо потому, что его код устарел.

#дженкинс

Dianocika26


Рег
13 Feb, 2011

Тем
74

Постов
199

Баллов
599
  • 25, Oct 2024
  • #2

Слейв перезапускает сам агент после каждой сборки? Вы можете использовать плагин Conditional BuildStep, чтобы перезапустить его при определенном условии.

 

A1ex.k


Рег
29 Jan, 2008

Тем
62

Постов
185

Баллов
505
  • 25, Oct 2024
  • #3

Я до сих пор не понимаю, как запуск агента создает чистый образ. Расширение вашей настройки поможет нам предоставить лучший ответ.

Тем не менее, из того, что я могу здесь собрать, на ум приходит следующее предположение:

  • У вас есть агенты, предварительно заполненные в образе виртуальной машины. Запуск этого образа, в свою очередь, запустит агент, в котором вы хотите запустить сборку.

Итак, теперь у вас есть проблема «курица против яйца», когда вам нужен запущенный агент для запуска задания, но вам нужно запускать агент при запуске задания.

Почему бы не иметь другой агент, чья работа - запустить изображение. Этот новый агент больше не чувствителен к чистоте образа и может работать бесконечно.

Мой подход заключается в том, чтобы сделать еще один шаг вперед и не включать агент в состав образа вообще, а скорее заставить агента сначала запустить образ, каким-либо образом снабдить его всем необходимым для сборки, а затем запустить сборку.

Простая общая папка на образе с хостом могла бы помочь. Такие инструменты, как Vagrant, также могут быть полезны. Но без дополнительной информации действительно трудно идти дальше.

Этот ответ при переполнении стека также может быть некоторая помощь в этом отношении. По сути, по запросу создается новый образ докера.

Другой возможный способ при вашей текущей настройке — убедиться, что сборка всегда заканчивается выключением образа. Таким образом, в следующем задании обязательно будет использоваться свежее изображение. должен никогда не пережить сборку. Вы даже можете проверить его ситуацию и полностью провалить сборку, если обнаружите, что образ перезапускался между сборками, а не перезапускался.

 

Vovchik12


Рег
03 Feb, 2009

Тем
85

Постов
195

Баллов
650
Похожие темы Дата
Похожие темы
Ошибка При Попытке Запустить Образ Docker Redis В Alpine Linux 3.7.0
Добавление Разрешений Для Читателей (Веб-Портал Devops)
Docker – Как Общедоступный Узел Haproxy Может Видеть Локальный Контейнер Haproxy?
Amazon Ec2 — Ansible Aws Windows Ec2 — Внутренняя Ошибка: Этот Модуль Подключения Не Поддерживает Запуск Команд Через Sudo
Архитектура. Можно Ли Иметь Сервер Jenkins Без Подчиненного Узла?
Веб-Сервисы Amazon. Каковы Некоторые Методы Улучшения Обслуживания Кластера Redshift?
Ssl — Как Добавить Дополнительный Ip-Адрес/Имя Хоста В Мой Сертификат Kubernetes?
Терминология. Какие Аспекты Управления Релизами Помогают Объяснить Разницу Между Waterfall И Agile?
Дженкинс – Как Добавить Новый Столбец С Пользовательским Значением, Извлеченным Из Задания?
Конвейер Дженкинса. Наш Код Находится За Брандмауэром, И Мы Не Хотим Размещать Исходный Код В Облаке. Есть Ли Хорошие Ci/Cd, Использующие Локальные Агенты Для Действий Azure/Github?
Тем
403,760
Комментарии
400,028
Опыт
2,418,908

Интересно