Jenkins Declarative Pipeline: How to inject properties

You can use the script step inside the steps tag to run arbitrary pipeline code.

So something in the lines of:

pipeline {
    agent any
    stages {
        stage('A') {
            steps {
                writeFile file: 'props.txt', text: 'foo=bar'
                script {
                    def props = readProperties file:'props.txt';
                    env['foo'] = props['foo'];
                }
            }
        }
        stage('B') {
            steps {
                echo env.foo
            }
        }
    }
}

Here I'm using env to propagate the values between stages, but it might be possible to do other solutions.


The Jon S answer requires granting script approval because it is setting environment variables. This is not needed when running in same stage.

pipeline {
  agent any
  stages {
    stage('A') {
      steps {
        writeFile file: 'props.txt', text: 'foo=bar'
        script {
           def props = readProperties file:'props.txt';
        }
        sh "echo $props['foo']"
      }
    }
  }
}