Skip to content

[JENKINS-59990] values set by environment directive are not captured for RunWrapper.getBuildVariables #418

@jenkins-infra-bot

Description

@jenkins-infra-bot

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.


Originally reported by savepointsam, imported from: values set by environment directive are not captured for RunWrapper.getBuildVariables
  • status: Open
  • priority: Minor
  • component(s): workflow-support-plugin
  • label(s): pipeline, plugin
  • resolution: Unresolved
  • votes: 0
  • watchers: 2
  • imported: 20260601-173816
Raw content of original issue

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 <span class="code-quote">'printenv | sort'</span>
       }
   }

}
}

Result

[MY_ENVVAR:example]

 

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

  • environment: jenkins-2.190.2-1.1.noarch, workflow-support:3.3

Metadata

Metadata

Assignees

No one assigned

    Type

    No fields configured for Bug.

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions