Я пытаюсь создать декларативный сценарий конвейера Jenkins, но возникают проблемы с простым объявлением переменной.
Вот мой сценарий:
pipeline {
agent none
stages {
stage("first") {
def foo = "foo" // fails with "WorkflowScript: 5: Expected a step @ line 5, column 13."
sh "echo ${foo}"
}
}
}
Однако я получаю эту ошибку:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected a step @ line 5, column 13.
def foo = "foo"
^
Я использую Jenkins 2.7.4 и Pipeline 2.4.
jenkins
groovy
jenkins-pipeline
Малькольм Крам
источник
источник
Я думаю, что ошибка исходит не из указанной строки, а из первых трех строк. Попробуйте вместо этого:
Я думаю, у вас были лишние строки, которые недействительны ...
РЕДАКТИРОВАТЬ
Из документации по
environment
декларативной модели конвейера кажется, что вам нужно использовать блок объявления для объявления ваших переменных, например:источник
Согласитесь с @ Pom12, @abayer. Для завершения ответа вам необходимо добавить блок скрипта
Попробуйте что-то вроде этого:
источник
В Jenkins 2.138.3 есть два разных типа конвейеров.
Декларативные и скриптовые конвейеры.
«Декларативные конвейеры - это новое расширение конвейерного DSL (это, по сути, конвейерный сценарий с одним шагом, шаг конвейера с аргументами (называемыми директивами), эти директивы должны следовать определенному синтаксису. Суть этого нового формата в том, что он является более строгим и, следовательно, должен быть проще для тех, кто плохо знаком с конвейерами, допускает графическое редактирование и многое другое. конвейеры со сценариями - это запасной вариант для расширенных требований ".
Конвейер Дженкинса: агент против узла?
Вот пример использования окружения и глобальных переменных в декларативном конвейере. Из того, что я могу сказать, enviroment статичны после того, как они установлены.
источник
Вы используете декларативный конвейер, который требует шага сценария для выполнения кода Groovy. Это огромная разница по сравнению со скриптовым конвейером. где в этом нет необходимости.
В официальной документации сказано следующее:
источник