Я пытаюсь преобразовать конвейер сценария в декларативный трубопровод и работать в некоторых основных (я думаю) проблемах.Назначение переменных в параллельном шаге с использованием шагов декларативного трубопровода в Jenkins
stage ('Deploy to Docker') {
steps {
parallel (
"instance1" : {
environment {
containerId = sh(script: "docker ps --quiet --filter name=${fullDockerImageName}", returnStdout: true).trim()
}
steps {
....
}
}
)
}
}
Это вызывает следующее исключение:
WorkflowScript: 197: Expected a step @ line 197, column 29.
containerId = sh(script: "docker ps --quiet --filter name=${fullDockerImageName} ", returnStdout: true).trim()
Поскольку я не позволил сделать переменное присвоение внутри steps {}
блока, я переехал его в environment {}
блока, но это, кажется, не сделайте трюк.
Любая идея о том, как установить такие переменные?
Спасибо за ответ, попробуем это скоро. Это намеренно? Я предполагаю, что это то же самое с if-statements (возможно, они не могут использоваться в «шагах»). Невозможно найти какую-либо документацию, была ли она разработана таким образом (и почему), или если это просто функция, которая есть. –
Да, подумайте, что это намеренно, т. Е. Есть причина, по которой они добавили шаг 'script'. Если вы посмотрите здесь, https://jenkins.io/doc/book/pipeline/syntax/#declarative-steps, есть некоторые рассуждения об этом. Я думаю, что основной причиной этого «ограничения» является то, что они добавляют графическое редактирование декларативных конвейеров, и, следовательно, в разделе «шаги» должен быть ограничен набор конструктов. –