Нельзя определить этапы вне декларативного конвейера.Основная цель декларативного конвейера - предоставить упрощенный и продуманный синтаксис, чтобы вы могли сосредоточиться на том, что нужно сделать (используя некоторые из доступных шагов ), а не на том, как это сделать.
Если вас интересует более гибкий способ реализации конвейера, вы можете выбрать Scripted Pipeline подход, который не настолько строг, если говорить о синтаксисе - он ограничен только Groovy и CPS-модулем исполнения.
Рабочий (скриптовый) конвейер из вашего примера будет выглядеть следующим образом:
#!groovy
def makeStage = {
stage('a') {
echo 'Hello World'
}
}
node {
makeStage()
}
Внимание : в скриптовом конвейере нет метода steps
внутри stage
,Если вы оставите его там, вы получите
java.lang.NoSuchMethodError: No such DSL method 'steps' found among
steps [archive, bat, build, catchError, checkout, deleteDir, dir,
dockerFingerprintFrom, ...
Сценарии в декларативном конвейере
Декларативный конвейер определяет script
шаг , который позволяет вам поставитьблок скриптового конвейера.Однако это все еще не позволяет вам определять этап динамически и / или извлекать определение этапа в функцию или замыкание.script
шаг выполняется внутри сцены, поэтому вы не можете контролировать внутри этого блока, если этап выполнен или нет.Однако в некоторых случаях этот шаг может быть очень полезен, если вы хотите сделать что-то более сложное, чем просто вызов предварительно определенного шага декларативного конвейера.