Настройка инструментов для конкретных агентов Дженкинс

#jenkins

#Дженкинс

Вопрос:

В Jenkins у вас есть «Глобальная конфигурация инструментов» на странице «Управление Jenkins». Там вы можете настроить всевозможные инструменты, то есть настроить их расположение в агентах сборки, а затем в вашем конвейере использовать tool шаг для получения этих путей.

Мне было интересно — почему нет способа настроить эти инструменты специфичным для агента образом, т. Е. Настроить пути на странице каждого агента, а затем в вашем конвейере при повторном запуске определенного инструмента вы получите путь к этому инструменту для этого конкретного агента. Разве это не будет намного эффективнее?

Ответ №1:

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

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

Определение инструментов и ожидаемого местоположения Глобальные уровни

Узлы могут перезаписать это местоположение, если у них есть инструменты в другом местоположении. Это можно сделать, перейдя в узлы и настроив узлы. Вот снимок для того же самого. Расположение инструментов на уровне узла для инструментов, определенных в глобальной конфигурации

Итак, если вы посмотрите на снимок, то увидите, что в глобальной конфигурации инструмента определены два инструмента. GIT и JDK. А на уровне узла мы можем настроить или перезаписать местоположение как для GIT, так и для JDK.

Комментарии:

1. Спасибо за ответ! Я заметил, что только если вы настроите инструмент в глобальной конфигурации инструментов, только тогда вы сможете перезаписать его местоположение. Почему бы просто не позволить вам настраивать инструменты для конкретного агента, независимо от глобальной конфигурации инструмента?

2. Я не знаю точного ответа, но на случай, если мне придется догадываться, я бы сказал, что удобнее иметь одну глобальную конфигурацию инструмента, а затем отдельный уровень узла. Дженкинс, которым я управляю, значительно мал и имеет около 40 узлов. 30 из них представляют собой виртуальные контейнеры с точно таким же изображением и точно таким же расположением инструментов . Только 10 являются физическими машинами, которые имеют некоторый уровень вариаций. Поэтому я думаю, что для меня проще определить местоположение инструмента в одном месте, чем в 40 разных местах. Но это всего лишь предположение из опыта использования 🙂

3. Я это понимаю. Что мне интересно, скажем, в моей глобальной конфигурации не указан инструмент Gradle. Почему это невозможно настроить только в конфигурации узла? Но это просто чудо 🙂

4. можно ли настроить расположение инструментов для узла в конвейере Дженкинса?

5. Для настройки инструмента для конкретного узла я нашел это withEnv довольно полезным, прочитав об этом jenkins.io/doc/pipeline/steps/workflow-basic-steps /… возможно, это также решит вашу проблему.