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, ........
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
}
}
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}")
}
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]
]
}