J'essaie d'utiliser des variables d'environnement définies en dehors de tout nœud dans un fichier Jenkins. Je peux les inclure dans n'importe quelle étape du pipeline dans n'importe quel nœud, mais pas à l'intérieur d'une fonction. La seule solution à laquelle je peux penser pour l'instant est de les passer en paramètres. Mais je voudrais référencer les variables env directement à l'intérieur de la fonction pour ne pas avoir à passer autant de paramètres. Voici mon code. Comment puis-je obtenir la fonction pour afficher la valeur correcte de BRANCH_TEST
?
def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
Sortie console Jenkins:
[Pipeline]
[Pipeline] echo
null
[Pipeline] }
[Pipeline] // node
[Pipeline] End of Pipeline
Finished: SUCCESS
Les solutions sont
Utiliser l'annotation @Field
Supprimer def de la déclaration. Voir réponse de Ted pour une explication sur l'utilisation de def.
Solution 1 (en utilisant @Field)
import groovy.transform.Field
@Field def BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
Solution 2 (suppression de def)
BRANCH_TEST = "master"
node {
deploy()
}
def deploy(){
echo BRANCH_TEST
}
L'explication est ici,
https://groups.google.com/d/msg/jenkinsci-users/P7VMQQuMdsY/bHfBDSn9GgAJ
A également répondu en comment créer et accéder aux variables globales dans groovy