#jenkins #jenkins-pipeline
Вопрос:
есть ли способ проверить в конвейере Дженкинса, выполняет ли исполнитель задание?
Я хотел бы использовать различные переменные среды в зависимости от этого условия.
Псевдокод нужного мне конвейера выглядит следующим образом
ЕСЛИ
запускается сборка задания-A, ЗАТЕМ
Используйте Environment_Variable_1
ИСПОЛЬЗУЙТЕ Исполнителя-1 для задания-A
, ИНАЧЕ, ЕСЛИ
ЗАДАНИЕ-A выполняется на Исполнителе-1 И сборка ЗАДАНИЯ-A запускается снова
, ЗАТЕМ
Используйте Environment_Variable_2
ИСПОЛЬЗУЙТЕ Исполнителя-2 для задания-A
Переменная среды будет содержать пути к разным папкам, поскольку задание будет вносить изменения в папку. Поэтому, когда задание снова запускается на исполнителе 2, я бы хотел, чтобы оно изменило другую папку.
Ответ №1:
есть ли способ проверить в конвейере Дженкинса, выполняет ли исполнитель задание?
ДА. С jenkins.model.Jenkins.instance.nodes
помощью вас можно получить все настроенные узлы. Из этих узлов вы можете получать Computer
объекты с node.toComputer()
помощью . Из Computer
объекта можно извлечь все Executors
, что находится на этом компьютере.
for (node in jenkins.model.Jenkins.instance.nodes) {
def computer = node.toComputer() /* computer behind the node */
def executors = computer.getExecutors()
for (executor in executors) {
println("Node name: " node.getDisplayName())
println("Computer name: " computer.getDisplayName())
println("Executor name: " executor.getDisplayName())
println("Executor number: " executor.getNumber())
println("Is executor busy: " executor.isBusy())
}
}
Документация Jenkins Core API:
Класс Узел
Класс Компьютерный
Класс Исполнитель
Комментарии:
1. Вау. Большое спасибо. Это именно то, что я искал. Я буду читать документацию дальше, чтобы выяснить, есть ли способ проверить, какое задание выполняется на исполнителе.
2. Может ли это быть реализовано непосредственно в сценарии конвейера?
3. Я реализовал его на этапе разработки, и это сработало для меня. Если это не работает для вас, вы можете реализовать его в функции за пределами конвейера и вызвать функцию на этапе.
4. Можно ли найти, на каком исполнителе выполняется задание. Выполняется ли Задание Исполнителем 1 или Исполнителем 2?