>我正在运行一个构建流作业,该作业并行执行多个构建,然后使用构建后操作发布 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
问题是,如果我在构建流并行作业中使用相同的逻辑,它将使用该作业的内部版本号,而不是创建报告的 Maven 作业。(我希望这是有道理的)
您可以将作业引用存储在变量中
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
}
)
然后你可以在需要时阅读地图
以下答案显示了如何将其导出为环境变量。
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
。
这个已解决的错误表明您可以在HTML发布者插件中使用它(我对插件并不熟悉)