У меня проблема с декларативным конвейером Jenkins и другим "типом" агента, в моем случае, агентом docker или агентом "classi c".
Чего я хочу достичь использует один и тот же конвейер на другом мастере Jenkins, один, где я должен использовать docker агент , а другой, где я не могу иметь docker агент (потому что версии ОС) и в основном запускаются непосредственно на master. Идея заключается в том, чтобы динамически генерировать закрытие агента (либо с помощью функции, либо через разделяемую библиотеку), чтобы избежать дублирования кода и необходимости поддерживать 2 версии одного и того же конвейера.
Например, что-то вроде этого:
def agentSelector() {
def agentClosure
if (...) {
agentClosure = agent { docker { ... } }
} else {
agentClosure = agent any
}
return agentClosure
}
pipeline {
...
agentSelector()
...
}
По какой-то причине (главным образом, использование контейнера docker) я не могу установить для агента значение none, а затем определить его на каждом этапе ...
У меня есть проделал большой поиск и не нашел подсказки о том, как это сделать (и, возможно, это на самом деле невозможно).
Есть идеи, как этого добиться?
Заранее спасибо за помощь!