How to set and reference a variable in a Jenkinsfile How to set and reference a variable in a Jenkinsfile jenkins jenkins

How to set and reference a variable in a Jenkinsfile


The error is due to that you're only allowed to use pipeline steps inside the steps directive. One workaround that I know is to use the script step and wrap arbitrary pipeline script inside of it and save the result in the environment variable so that it can be used later.

So in your case:

pipeline {    agent any    stages {        stage("foo") {            steps {                script {                    env.FILENAME = readFile 'output.txt'                }                echo "${env.FILENAME}"            }        }    }}


According to the documentation, you can also set global environment variables if you later want to use the value of the variable in other parts of your script. In your case, it would be setting it in the root pipeline:

pipeline {  ...  environment {    FILENAME = readFile ...  }  ...}


We got around this by adding functions to the environment step, i.e.:

environment {    ENVIRONMENT_NAME = defineEnvironment() }...def defineEnvironment() {    def branchName = "${env.BRANCH_NAME}"    if (branchName == "master") {        return 'staging'    }    else {        return 'test'    }}