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)
        }
    }
}