Jenkins Declarative Pipeline: How to inject properties

前端 未结 3 1346
逝去的感伤
逝去的感伤 2021-01-12 19:26

I have Jenkins 2.19.4 with Pipeline: Declarative Agent API 1.0.1. How does one use readProperties if you cannot define a variable to assign properties read to?

For e

相关标签:
3条回答
  • 2021-01-12 19:35

    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.

    0 讨论(0)
  • 2021-01-12 19:35

    The @jon-s solution 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']"
          }
        }
      }
    }
    
    0 讨论(0)
  • 2021-01-12 19:55

    To define general vars available to all stages, define values for example in props.txt as:

    version=1.0
    fix=alfa
    

    and mix script and declarative Jenkins pipeline as:

    def props
    def VERSION
    def FIX
    def RELEASE
    
    node {
       props = readProperties file:'props.txt'
       VERSION = props['version']
       FIX = props['fix']
       RELEASE = VERSION + "_" + FIX
    }
    
    pipeline {
       stages {
          stage('Build') {
             echo ${RELEASE}
          }
       }
    }
    
    0 讨论(0)
提交回复
热议问题