如何从 JobDSL 脚本中访问 Jenkins 作业参数列表?
How to access list of Jenkins job parameters from within a JobDSL script?
我想保存传递给 JobDSL 作业的参数。我知道我可以引用个别参数,但我想让代码通用。我将如何访问传递给作业的参数列表?
当前代码类似于:
final jobParameters = new File('parameters')
jobParameters.write("""
|AOEU=${AOEU}
|SNTH=${SNTH}
"""[1..-1].stripMargin().trim())
我希望能够让它看起来像:
final jobParameters = new File('parameters')
jobParameters.write(params.iterator().join('\n'))
params
在 Build Flow 插件中可用,但在 JobDSL 插件中不可用。
DSL 不提供对构建参数的访问。但脚本可以访问 Jenkins 对象模型,因此您可以使用 Jenkins API 检索当前构建及其参数:
import hudson.model.*
Build build = Executor.currentExecutor().currentExecutable
ParametersAction parametersAction = build.getAction(ParametersAction)
parametersAction.parameters.each { ParameterValue v ->
println v
}
这就是我调试的方式(我在某处读到过,我绝不是 Groovy 或 Job DSL 专家...):
binding.variables.each {
println "${it.key} = ${it.value}"
}
这显示了所有现有的环境变量,包括作业参数。
JOB_NAME = job-generator
...
NEXT_PROJECTS = baz,bat
...
PROJECT_TYPE = Software
...
PROJECTS = foo,bar
...
SHELL = /bin/bash
我想保存传递给 JobDSL 作业的参数。我知道我可以引用个别参数,但我想让代码通用。我将如何访问传递给作业的参数列表?
当前代码类似于:
final jobParameters = new File('parameters')
jobParameters.write("""
|AOEU=${AOEU}
|SNTH=${SNTH}
"""[1..-1].stripMargin().trim())
我希望能够让它看起来像:
final jobParameters = new File('parameters')
jobParameters.write(params.iterator().join('\n'))
params
在 Build Flow 插件中可用,但在 JobDSL 插件中不可用。
DSL 不提供对构建参数的访问。但脚本可以访问 Jenkins 对象模型,因此您可以使用 Jenkins API 检索当前构建及其参数:
import hudson.model.*
Build build = Executor.currentExecutor().currentExecutable
ParametersAction parametersAction = build.getAction(ParametersAction)
parametersAction.parameters.each { ParameterValue v ->
println v
}
这就是我调试的方式(我在某处读到过,我绝不是 Groovy 或 Job DSL 专家...):
binding.variables.each {
println "${it.key} = ${it.value}"
}
这显示了所有现有的环境变量,包括作业参数。
JOB_NAME = job-generator
...
NEXT_PROJECTS = baz,bat
...
PROJECT_TYPE = Software
...
PROJECTS = foo,bar
...
SHELL = /bin/bash