Set global variable in jenkins pipeline with Prepare an environment for the run

Viewed 411

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?

0 Answers
Related