web-dev-qa-db-fra.com

Jenkins Variables d'environnement globales dans Jenkinsfile

Comment appeler des variables d'environnement globales dans Jenkinsfile?
Par exemple, si j’ai une variable -

 name:credentialsId 
 value:xxxx-xxxx-xxxxx-xxxxxxxxx

Comment puis-je l'utiliser dans le script groovy?

J'ai essayé ${credentialsId}, mais ça n'a pas marché. Cela donnera juste une erreur:

Java.lang.NoSuchMethodError: No such DSL method '$' found among steps [ArtifactoryGradleBuild, ........
16
ezlee

Dans un fichier Jenkins, vous avez le " Travailler avec l'environnement " qui mentionne:

La liste complète des variables d’environnement accessibles à partir du pipeline Jenkins est documentée à l’emplacement localhost: 8080/pipeline-syntax/globals # env,

La syntaxe est ${env.xxx} un péché:

node {
    echo "Running ${env.BUILD_ID} on ${env.JENKINS_URL}"
}

Voir aussi " Gestion de l'environnement ".

Comment puis-je transmettre les variables globales au fichier Jenkins?
Quand je parle de variables globales - je veux dire dans

Jenkins -> Manage Jenkins -> Configure System -> Global properties -> Environment variables

Voir " Définition des variables d'environnement "

La définition d'une variable d'environnement dans un pipeline Jenkins peut être effectuée à l'aide de l'étape withEnv, qui permet de remplacer des variables d'environnement spécifiées pour un bloc donné de script de pipeline, par exemple:

Jenkinsfile (Script de pipeline)

node {
    /* .. snip .. */
    withEnv(["NAME=value"]) {
        ... your job
    }
}
37
VonC

Pipeline scripté Pour lire une variable d’environnement dont vous connaissez le nom, utilisez env.NAME

Pour lire une variable d'environnement dont le nom n'est pas connu jusqu'à l'exécution, utilisez env.getProperty(name).

Par exemple, une valeur d'un fichier de configuration YAML représente un nom de variable d'environnement:

config.yaml (dans l'espace de travail)

myconfig:
  key: JOB_DISPLAY_URL

Jenkinsfile

node {
    println("Running job ${env.JOB_NAME}")
    def config = readYaml(file:'config.yaml')
    def value = env.getProperty(config.myconfig.key)
    println("Value of property ${config.myconfig.key} is ${value}")
}
2
Ed Randall

Lorsque vous faites référence à env dans la portée Groovy, utilisez simplement env.VARIABLE_NAME, par exemple, pour transmettre BUILD_NUMBER du travail en amont à un travail déclenché:

stage ('Starting job') {
    build job: 'TriggerTest', parameters: [
        [$class: 'StringParameterValue', name: 'upstream_build_number', value: env.BUILD_NUMBER]
    ]
}
2
Gudlaugur Egilsson