How do I pass variables between stages in a declarative Jenkins pipeline?

后端 未结 3 1800
情书的邮戳
情书的邮戳 2020-12-01 01:01

How do I pass variables between stages in a declarative pipeline?

In a scripted pipeline, I gather the procedure is to write to a temporary file, then read the file

3条回答
  •  夕颜
    夕颜 (楼主)
    2020-12-01 01:42

    I had a similar problem as I wanted one specific pipeline to provide variables and many other ones using it to get this variables.

    I created a my-set-env-variables pipeline

    script
    {
        env.my_dev_version = "0.0.4-SNAPSHOT"
        env.my_qa_version  = "0.0.4-SNAPSHOT"
        env.my_pp_version  = "0.0.2"
        env.my_prd_version = "0.0.2"
        echo " My versions  [DEV:${env.my_dev_version}] [QA:${env.my_qa_version}] [PP:${env.my_pp_version}] [PRD:${env.my_prd_version}]"
    }
    

    I can reuse these variables in a another pipeline my-set-env-variables-test

    script 
    {
        env.dev_version = "NOT DEFINED DEV"
        env.qa_version  = "NOT DEFINED QA"
        env.pp_version  = "NOT DEFINED PP"
        env.prd_version = "NOT DEFINED PRD"
    }
    
    stage('inject variables') {
    
        echo "PRE DEV version = ${env.dev_version}"
        script 
        {
           def variables = build job: 'my-set-env-variables'
           def vars = variables.getBuildVariables()
          //println "found variables" + vars
          env.dev_version = vars.my_dev_version
          env.qa_version  = vars.my_qa_version
          env.pp_version  = vars.my_pp_version
          env.prd_version = vars.my_prd_version
        }
    }
    
    stage('next job') {
        echo "NEXT JOB DEV version = ${env.dev_version}"
        echo "NEXT JOB QA version = ${env.qa_version}"
        echo "NEXT JOB PP version = ${env.pp_version}"
        echo "NEXT JOB PRD version = ${env.prd_version}"
    
    }
    
    
    

提交回复
热议问题