如何在詹金斯中将变量从管道传递到工作?

时间:2019-10-21 11:55:45

标签: jenkins jenkins-pipeline

我需要在管道中创建一个唯一标识符,然后从该管道开始的所有作业都应该可以访问该唯一标识符。
我不想参数化这些工作。

我认为可以在作业中访问在管道级别定义的环境变量,但不是。

pipeline {
   agent any
   environment {
       TEST_VAR = 'TEST_VAR'
   }
   stages {
      stage('Stage1') {
         steps {
            build (job: 'job1')
         }
      }
   }
}

2 个答案:

答案 0 :(得分:1)

您实际上不需要参数化下游管道,但仍然可以从上游将变量作为参数传递并在下游访问它。

上游管道

pipeline {
    agent any
    environment {
       TEST_VAR = 'hello_world'
    }
    stages {
        stage('Build-downstream-job') {
            steps {
                build job: 'downstream-job', parameters: [string(name: 'TEST_VAR', value: env.TEST_VAR)], wait: false
            }
        }
    }
}

下游管道

pipeline {
    agent any
    stages {
        stage('Get-test-var') {
            steps {
                println(params.TEST_VAR)
            }
        }
    }
}

下游管道控制台输出

[Pipeline] stage
[Pipeline] { (Get-test-var)
[Pipeline] echo
hello_world
[Pipeline] }
[Pipeline] // stage

答案 1 :(得分:0)

您应该尝试在TEST_VAR之前添加“ $”:

environment {
     TEST_VAR = '$TEST_VAR'
}