Uploaded image for project: 'Jenkins'
  1. Jenkins
  2. JENKINS-59990

values set by environment directive are not captured for RunWrapper.getBuildVariables

XMLWordPrintable

      When using the environment directive in a declarative pipeline, the environment variables that are set are not captured and exposed via the RunWrapper.getBuildVariables method.

      For example, the following pipeline will yield an empty Map after execution.

      Jenkinsfile

      pipeline {
          environment {
              MY_ENVVAR = "example"
          }
      
          stages {
              stage("run job") {
                  steps {
                      sh 'printenv | sort'
                  }
              }
          }
      }

      Result

      [:]
      

        

      However, if we set this environment variable via the script directive it is captured and made available in the response of RunWrapper.getBuildVariables.

      Jenkinsfile

      pipeline {
         stages {
             stage("run job") {
                 steps {
                     script {
                         env.MY_ENVVAR = "example"
                     }
      
                     sh 'printenv | sort'
                 }
             }
         }
      }
      

      Result

      [MY_ENVVAR:example]

       

      I would expect that ALL custom set environment variables should be retrieved.

            Unassigned Unassigned
            savepointsam Sam Horton
            Votes:
            0 Vote for this issue
            Watchers:
            2 Start watching this issue

              Created:
              Updated: