Próbuję utworzyć deklaratywny skrypt potoku Jenkins, ale mam problemy z prostą deklaracją zmiennej.
Oto mój skrypt:
pipeline {
agent none
stages {
stage("first") {
def foo = "foo" // fails with "WorkflowScript: 5: Expected a step @ line 5, column 13."
sh "echo ${foo}"
}
}
}
Jednak pojawia się ten błąd:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected a step @ line 5, column 13.
def foo = "foo"
^
Jestem na Jenkins 2.7.4 i Pipeline 2.4.
jenkins
groovy
jenkins-pipeline
Malcolm Crum
źródło
źródło
Myślę, że błąd nie pochodzi z określonej linii, ale z pierwszych 3 linii. Spróbuj tego zamiast tego:
Myślę, że miałeś kilka dodatkowych wierszy, które są nieprawidłowe ...
EDYTOWAĆ
Z deklarowanej dokumentacji modelu potoku wynika , że
environment
do zadeklarowania zmiennych należy użyć bloku deklaracji, np .:źródło
Zgadzam się z @ Pom12, @abayer. Aby uzupełnić odpowiedź, musisz dodać blok skryptu
Spróbuj czegoś takiego:
źródło
W Jenkins 2.138.3 istnieją dwa różne typy rurociągów.
Potoki deklaratywne i oparte na skryptach.
„Deklaratywne potoki to nowe rozszerzenie potoku DSL (w zasadzie jest to skrypt potoku z tylko jednym krokiem, krokiem potoku z argumentami (zwanymi dyrektywami). Te dyrektywy powinny mieć określoną składnię. Celem tego nowego formatu jest to, że jest bardziej rygorystyczny i dlatego powinien być łatwiejszy dla nowych użytkowników potoków, umożliwiać edycję graficzną i nie tylko. Potoki skryptowe to rozwiązanie zastępcze dla zaawansowanych wymagań ”.
Jenkins Pipeline: Agent kontra Węzeł?
Oto przykład użycia zmiennych środowiskowych i globalnych w potoku deklaratywnym. Z tego, co mogę powiedzieć, środowisko jest statyczne po ustawieniu.
źródło
Używasz Declarative Pipeline, który wymaga kroku skryptu, aby wykonać kod Groovy. Jest to ogromna różnica w porównaniu ze skryptem potokowym, w którym nie jest to konieczne.
Oficjalna dokumentacja mówi, co następuje:
źródło