web-dev-qa-db-fra.com

Comment utiliser les variables d'environnement dans une fonction groovy à l'aide d'un fichier Jenkins

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
12
mdo123

Les solutions sont

  1. Utiliser l'annotation @Field

  2. 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

21
mdo123