我正在运行一个Build Flow作业,它并行执行多个构建,然后使用Post-build Action发布HTML报告。
如何将每个作业的内部版本号作为变量获取,以便在获取HTML报告时使用?
修改
这就是我的并行代码:
parallel (
{ uarr = build("Baseline - Secure - UARR", param1: build.properties.get("number")) },
{ login = build("Baseline - Secure - Login", param2: build.properties.get("number")) }
)
这是我在使用“发布HTML”报告进行索引页面时尝试使用的内容,但它没有看到$ {param1}作为变量并尝试按字面意义找到它:
*Secure Baseline*Secure_UARR-${param1}.html
这就是我在Maven构建作业中使用的内容,它可以很好地查找包含内部版本号的正确文件名的报告:
*Secure Baseline*Secure_UARR-${BUILD_NUMBER}.html
问题是,如果我在Build Flow并行作业中使用相同的逻辑,它将使用该作业的内部版本号,而不是创建报告的Maven作业。 (我希望这是有道理的)
答案 0 :(得分:0)
您可以将作业参考存储在变量
中parallel(
job1: { def n = build("JOB_NAME", PARAM_1: "value-1", PARAM_2: true, ...) }
...
)
如果你愿意,甚至可以将它们存储在一个数组中
def jobs = [:]
parallel(
job1: {
def n1 = build("job1", param1: "value1", ...)
jobs["job1"] = n1.number
},
job1: {
def n2 = build("job2", param1: "value1", ...)
jobs["job2"] = n2.number
},
job1: {
def n3 = build("job3", param1: "value1", ...)
jobs["job3"] = n3.number
},
jobm: {
def nm = build("jobm", param1: "value1", ...)
jobs["jobm"] = n1.number
}
)
然后你可以在想要的时候阅读地图
以下answer显示了如何将其导出为环境变量。
def buildEnv = build.getEnvVars();
buildEnv.putAll(jobs)
import org.jenkinsci.plugins.envinject.EnvInjectPluginAction
def envInjectAction = build.getAction(EnvInjectPluginAction.class);
envInjectAction.overrideAll(buildEnv)
您可以在$job1
,$job2
,...,$jobm
作为后期制作步骤使用它。
这resolved bug表示您可以在HTML-publisher plugin中使用它(我不熟悉插件)