Jos*_*att 6 jenkins jenkins-pipeline
我在测试 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
}
Run Code Online (Sandbox Code Playgroud)
据我了解,当我使用构建步骤时,会返回一个 RunWrapper 对象。我正在尝试获取名为“Sample_Freestyle”的测试作业的构建变量,它现在运行一个简单的 Windows 批处理命令:
echo "Hello World"
Run Code Online (Sandbox Code Playgroud)
每当我运行它时,它都会正确执行,但是我留下了一张空地图。我测试了 getDuration() 方法并按预期返回。我在这里查看了 RunWrapper 类,可能是 env 为空(大约第 212 行),但这只是一个假设。
有谁知道为什么我在调用 getBuildVariables() 时会得到一张空地图?我是否以错误的方式解决这个问题?
小智 5
如果有人在声明性管道中寻找解决方案。我想获取下游作业环境变量(多分支声明性管道)我的下游作业设置了一个环境变量作为其构建的一部分。
所以我在上游这样做:
//downstream job kickoff
def buildResult = build job: "<downstreamjob>"
//downstream sets a new env variable env.PACKAGE_NAME
def packageName = buildResult.buildVariables.PACKAGE_NAME
Run Code Online (Sandbox Code Playgroud)
getBuildVariables() 返回作业的用户定义参数,而不是作业的环境变量,例如 WORKSPACE 或 BUILD_TAG。
根据Vitalii的评论,我做了一个实验,并向Sample_Freestyle作业添加了一个参数。当我添加测试字符串参数时,地图不再是空的!我有:
{TEST_PARAMETER=Test Parameter}
Run Code Online (Sandbox Code Playgroud)
我建议将方法名称从 getBuildVariables() 更改为 getJobParameters ( ) 或 getBuildParameters ( ) 以保持命名一致。
| 归档时间: |
|
| 查看次数: |
5037 次 |
| 最近记录: |