Есть ли способ в декларативном конвейере Jenkins иметь выбор типа агента Dynami c? - PullRequest
0 голосов
/ 08 апреля 2020

У меня проблема с декларативным конвейером 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, а затем определить его на каждом этапе ...

У меня есть проделал большой поиск и не нашел подсказки о том, как это сделать (и, возможно, это на самом деле невозможно).

Есть идеи, как этого добиться?

Заранее спасибо за помощь!

...