L'accès Groovy de la variable à l'intérieur de la coquille étape dans Jenkins pipeline
À l'aide de la Pipeline plugin Jenkins 2.x, comment puis-je accéder à un Groovy variable qui est définie quelque part, au stade ou un nœud au niveau de l'intérieur d'une sh
étape?
Exemple Simple:
node {
stage('Test Stage') {
some_var = 'Hello World' //this is Groovy
echo some_var //printing via Groovy works
sh 'echo $some_var' //printing in shell does not work
}
}
donne sur le Jenkins page de sortie:
[Pipeline] {
[Pipeline] stage
[Pipeline] { (Test Stage)
[Pipeline] echo
Hello World
[Pipeline] sh
[test] Running shell script
+ echo
[Pipeline] }
[Pipeline] //stage
[Pipeline] }
[Pipeline] //node
[Pipeline] End of Pipeline
Finished: SUCCESS
Comme on peut le voir, echo
dans le sh
étape imprime une chaîne vide.
Un travail autour de serait de définir la variable dans l'environnement portée par
env.some_var = 'Hello World'
et l'imprimer via
sh 'echo ${env.some_var}'
Cependant, ce genre d'abus de la portée environnementale pour cette tâche.
Double Possible de What la différence de chaînes à l'intérieur de guillemets simples ou doubles en groovy?
Pas exactement un doublon, mais je pense que c'est une simple question de l'utilisation correcte des citations. Les exemples donnés dans la page que vous avez lié l'utilisation des guillemets: jenkins.io/doc/livre/pipeline/vue d'ensemble/...
En effet, je vous remercie pour cela. Devrait avoir regardé plus attentivement... lors de l'utilisation de guillemets, de l'interpolation fonctionne comme prévu. Vous pouvez ajouter ce que une réponse si vous le souhaitez.
Pas exactement un doublon, mais je pense que c'est une simple question de l'utilisation correcte des citations. Les exemples donnés dans la page que vous avez lié l'utilisation des guillemets: jenkins.io/doc/livre/pipeline/vue d'ensemble/...
En effet, je vous remercie pour cela. Devrait avoir regardé plus attentivement... lors de l'utilisation de guillemets, de l'interpolation fonctionne comme prévu. Vous pouvez ajouter ce que une réponse si vous le souhaitez.
OriginalL'auteur Dirk | 2016-10-11
Vous devez vous connecter pour publier un commentaire.
D'utiliser un templatable chaîne, où les variables sont remplacées dans une chaîne, utilisez les guillemets.
Comment l'utiliser à l'intérieur multiligne sh code?
l'utilisation des aigus double-guillemets """code """
Merci pour le heads up!
OriginalL'auteur
Je suis ajoutant le commentaire de @Pedro comme une réponse parce que je pense que c'est important.
Pour sh env vars nous devons utiliser
OriginalL'auteur