如何参数化 job-dsl 代码块,例如权限
How to parametrize job-dsl code blocks e.g. permissions
我想创建几个不同属性的工作。纯字符串属性工作得很好,就像这里的例子 https://github.com/sheehan/job-dsl-gradle-example/blob/master/src/jobs/example4Jobs.groovy
此外,我想参数化授权块中的权限。
我创建了一个闭包 (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 声明中的每个闭包都有一个 delegate
对象。
因此,如果您将该对象作为参数传递给您的闭包,您可以使用它来调用该方法。
[
[
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)
}
}
}
我想创建几个不同属性的工作。纯字符串属性工作得很好,就像这里的例子 https://github.com/sheehan/job-dsl-gradle-example/blob/master/src/jobs/example4Jobs.groovy
此外,我想参数化授权块中的权限。
我创建了一个闭包 (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 声明中的每个闭包都有一个 delegate
对象。
因此,如果您将该对象作为参数传递给您的闭包,您可以使用它来调用该方法。
[
[
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)
}
}
}