问题描述
我正在尝试使用groovy脚本读取旧的jenkins构建环境变量(以提取下游作业)。 我目前正在使用
build.getEnvVars()
但已过时警告。 有人可以告诉我什么是读取这些旧的构建环境变量的最佳方法吗?
解决方法
使用管道,这是一种从下游传播所有环境变量的方法,因此您可以使用getBuildVariables()
方法,包括在下游作业中调用makeEnvAvailable
之前所做的任何编辑。
注意:需要method 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
}
}
}
}
}
您的上游作业现在应该可以访问下游作业中的每个环境变量。
,这是根据javadoc所需的。 https://javadoc.jenkins-ci.org/hudson/model/Run.html#getEnvVars--
def listener = Jenkins.get()
.getItemByFullName(env.JOB_NAME)
.getBuildByNumber(Integer.parseInt(env.BUILD_NUMBER))
.getListener()
build.getEnvironment(listener)