Jenkins 如何参数化作业dsl代码块,例如权限
我想创造几个不同性质的工作岗位。纯字符串属性工作得很好,如这里的示例所示 此外,我想参数化授权块内的权限 我创建了一个闭包(Jenkins 如何参数化作业dsl代码块,例如权限,jenkins,jenkins-job-dsl,Jenkins,Jenkins Job Dsl,我想创造几个不同性质的工作岗位。纯字符串属性工作得很好,如这里的示例所示 此外,我想参数化授权块内的权限 我创建了一个闭包(auth),并希望在作业定义中调用它,但这不起作用 [ [ environment : 'qa', auth: { permissions('dev', [ 'hudson.model.Item.Read' ]) } ],
auth
),并希望在作业定义中调用它,但这不起作用
[
[
environment : 'qa',
auth: {
permissions('dev', [
'hudson.model.Item.Read'
])
}
],
[
environment : 'prod',
auth: {
permissions('admin', [
'hudson.model.Item.Read',
'hudson.model.Item.Build',
'hudson.model.Item.Cancel'
])
}
]
].each { Map config ->
pipelineJob("job-${config.environment}") {
displayName("job ${config.environment}")
authorization {
config.auth()
}
}
}
我得到以下错误:
ERROR: (script, line 5) No signature of method: script.permissions() is applicable for argument types: (java.lang.String, java.util.ArrayList) values: [admin, [hudson.model.Item.Read]]
作业dsl声明中的每个闭包都有一个
委托
对象。
因此,如果将该对象作为闭包中的参数传递,则可以使用它来调用该方法
[
[
environment : 'qa',
auth: { authorization ->
authorization.permissions('dev', [
'hudson.model.Item.Read'
])
}
],
[
environment : 'prod',
auth: { authorization ->
authorization.permissions('admin', [
'hudson.model.Item.Read',
'hudson.model.Item.Build',
'hudson.model.Item.Cancel'
])
}
]
].each { Map config ->
pipelineJob("job-${config.environment}") {
displayName("job ${config.environment}")
authorization {
config.auth(delegate)
}
}
}