我在测试Jenkinsfile中有以下代码:
node {
stage 'Build'
def job1 = build 'Sample_Freestyle'
def dur = job1.getDuration()
println dur
def vars = job1.getBuildVariables()
println vars
def myMap = [k1:'v1', k2:'v2', k3:'v3']
println myMap
}
据我了解,当我使用构建步骤时,返回一个RunWrapper对象。我正在尝试获取名为" Sample_Freestyle"的测试作业的构建变量,它们在这时会运行一个简单的Windows批处理命令:
echo "Hello World"
每当我运行它时,它都会正确执行,但是我留下了一张空地图。我测试了getDuration()方法,并按预期返回。我看了一下RunWrapper类here,它可能是env为空(大约212行),但这只是一个假设。
有人知道为什么我在调用getBuildVariables()时会得到一张空地图?我是以错误的方式解决这个问题吗?
答案 0 :(得分:0)
getBuildVariables()返回作业的用户定义参数,而不是作业的环境变量,如WORKSPACE或BUILD_TAG。
根据Vitalii的评论,我做了一个实验,并在Sample_Freestyle作业中添加了一个参数。当我添加测试字符串参数时,地图不再是空的!我得到了:
{TEST_PARAMETER=Test Parameter}
我建议将方法名称从getBuildVariables()更改为getJob 参数()或getBuild 参数()以获得一致的命名。
答案 1 :(得分:0)
万一有人在声明式管道中寻找解决方案。 我想获取下游作业环境变量(多分支声明式管道) 我的下游作业将环境变量作为其构建的一部分。
所以这是我的上游工作:
//downstream job kickoff
def buildResult = build job: "<downstreamjob>"
//downstream sets a new env variable env.PACKAGE_NAME
def packageName = buildResult.buildVariables.PACKAGE_NAME