【问题标题】:How to parametrize job-dsl code blocks e.g. permissions如何参数化 job-dsl 代码块,例如权限
【发布时间】:2020-06-08 20:40:15
【问题描述】:

我想创建几个因某些属性而异的工作。纯字符串属性工作得很好,就像这里的例子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]]

【问题讨论】:

    标签: jenkins jenkins-job-dsl


    【解决方案1】:

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

    【讨论】:

      猜你喜欢
      • 1970-01-01
      • 2020-02-06
      • 2022-08-15
      • 2021-01-14
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      • 1970-01-01
      相关资源
      最近更新 更多