我有一个共享的 jenkins 管道,目前通过它的 call()
运算符调用。
call 方法接受一组固定的参数。
我想更改 call()
签名以接受命名参数。这样以后可以更方便地扩展参数。
因为我无法一次更新所有调用共享管道的 Jenkinsfile,所以我必须保持签名兼容。
我的想法是覆盖 call()
方法,如:
// old call method
def call(String repo, String version) {
call(repo: repo, version: version)
}
def call (Map params) {
pipeline {
agent { label 'master' }
[...]
}
}
如果我通过 call("repo1", "master")
调用管道,它会失败:No such DSL method 'agent'
。
我似乎无法访问 Jenkinsfile (?) 的变量绑定。
如何确保在重载 call()
时仍然可以访问 jenkins 步骤?
是否有更好的解决方案可以在更改方法签名的同时保持共享管道的兼容性?