J'essaie de créer un script de pipeline Jenkins déclaratif mais j'ai des problèmes avec une simple déclaration de variable.
Voici mon script:
pipeline {
agent none
stages {
stage("first") {
def foo = "foo" // fails with "WorkflowScript: 5: Expected a step @ line 5, column 13."
sh "echo ${foo}"
}
}
}
Cependant, j'obtiens cette erreur:
org.codehaus.groovy.control.MultipleCompilationErrorsException: startup failed:
WorkflowScript: 5: Expected a step @ line 5, column 13.
def foo = "foo"
^
Je suis sur Jenkins 2.7.4 et Pipeline 2.4.
jenkins
groovy
jenkins-pipeline
Malcolm Crum
la source
la source
Je pense que l'erreur ne vient pas de la ligne spécifiée mais des 3 premières lignes. Essayez plutôt ceci:
Je pense que vous aviez des lignes supplémentaires qui ne sont pas valides ...
ÉDITER
D'après la documentation du modèle de pipeline déclaractif , il semble que vous deviez utiliser un
environment
bloc de déclaration pour déclarer vos variables, par exemple:la source
D'accord avec @ Pom12, @abayer. Pour compléter la réponse, vous devez ajouter un bloc de script
Essayez quelque chose comme ceci:
la source
Dans Jenkins 2.138.3, il existe deux types différents de pipelines.
Pipelines déclaratifs et scriptés.
"Les pipelines déclaratifs sont une nouvelle extension du pipeline DSL (il s'agit essentiellement d'un script pipeline avec une seule étape, une étape de pipeline avec des arguments (appelés directives), ces directives devraient suivre une syntaxe spécifique. L'intérêt de ce nouveau format est qu'il est plus strict et devrait donc être plus facile pour ceux qui découvrent les pipelines, permet l'édition graphique et bien plus encore. Les pipelines scriptés sont la solution de secours pour les exigences avancées. "
pipeline jenkins: agent vs nœud?
Voici un exemple d'utilisation des variables d'environnement et globales dans un pipeline déclaratif. D'après ce que je peux dire, l'environnement est statique une fois défini.
la source
Vous utilisez un pipeline déclaratif qui nécessite un script pour exécuter le code Groovy. C'est une énorme différence par rapport au pipeline scripté où cela n'est pas nécessaire.
La documentation officielle dit ce qui suit:
la source