I'm trying to set environment variables in a jenkins pipeline script.
I want to use the section "Prepare an environment for the run" in configure. So, in this section, I put the following groovy script:
instance = Jenkins.getInstance()
def globalNodeProperties = instance.getGlobalNodeProperties()
def envVarsNodePropertyList = globalNodeProperties.getAll(hudson.slaves.EnvironmentVariablesNodeProperty.class)
def newEnvVarsNodeProperty = null
def envVars = null
if ( envVarsNodePropertyList == null || envVarsNodePropertyList.size() == 0 ) {
newEnvVarsNodeProperty = new hudson.slaves.EnvironmentVariablesNodeProperty();
globalNodeProperties.add(newEnvVarsNodeProperty)
envVars = newEnvVarsNodeProperty.getEnvVars()
} else {
envVars = envVarsNodePropertyList.get(0).getEnvVars()
}
envVars.put("DEFCONFIG", "Name_of_Defconfig")
instance.save()
And, the pipeline script is shown below :
def get_name() {
return env.DEFCONFIG
}
pipeline {
agent {
node {
label 'BSP'
}
}
environment {
defconfig_name = get_name()
}
stages {
stage('test var') {
steps {
sh '''
echo ${defconfig_name}
echo "Hello word"
'''
}
}
}
}
But, instead of reading the value of DEFCONFIG I find "null" in the console:
[Pipeline] sh
+ echo null
null
Probably I am missing something but I cannot find what.
Any idea please?
question from:
https://stackoverflow.com/questions/65952643/set-global-variable-in-jenkins-pipeline-with-prepare-an-environment-for-the-run 与恶龙缠斗过久,自身亦成为恶龙;凝视深渊过久,深渊将回以凝视…