我正在尝试使用groovy脚本读取旧的jenkins构建环境变量(以提取下游作业)。 我目前正在使用
build.getEnvVars()
但收到弃用警告。 有人可以告诉我读取这些旧构建环境变量的最佳方法是什么吗?
最佳答案
使用管道,这是一种从下游传播所有环境变量的方法,以便您可以使用 getBuildVariables()
方法,包括在调用 makeEnvAvailable
之前进行的任何编辑> 在下游作业中。
注意:方法 org.jenkinsci.plugins.workflow.support.actions.EnvironmentAction getEnvironment
需要脚本批准
// Downstream job 'down' Jenkinsfile
@NonCPS
def makeEnvAvailable() {
// Goes through every environment variable and sets it again
// This will populate 'downstreamBuild.getBuildVariables()'
env.getEnvironment().each { k,v -> env.setProperty(k, v) }
}
pipeline {
agent any
parameters {
booleanParam(name: 'QUICK_BUILD', defaultValue: false,
description: 'Skip running git clean and perform a quick build' )
}
environment {
TEST_VER="${TEST_VER}"
VIVARIUM="/tools/pancake"
}
stages {
stage("Env set") {
steps {
script {
// Will be visible upstream regardless
env.THIS_IS_A_TEST = "test_env_set"
// Not set on env. Not available
ANOTHER_TEST = "not_env_set"
// Does not modify the param or env. Not available
QUICK_BUILD = "not_actually_modifying_params"
// Set to the same value, but now available upstream
env.GIT_COMMIT = env.GIT_COMMIT
// Makes every other environment variable available
makeEnvAvailable()
}
}
}
}
}
// Upstream job 'Up' Jenkinsfile
pipeline {
agent any
stages {
stage ("Downstream") {
steps {
script {
def down = build job: "down"
echo down.getBuildVariables().toString()
echo down.buildVariables
}
}
}
}
}
您的上游作业现在应该可以访问下游作业中的每个环境变量。
关于jenkins-groovy - 如何读取 Jenkins 旧构建注入(inject)的环境变量,我们在Stack Overflow上找到一个类似的问题: https://stackoverflow.com/questions/63511622/