一尘不染

jenkins管道:无法将构建参数传递给共享库变量

jenkins

基本上,没有多余的废话,我无法将构建属性传递给Library var调用。

jenkinsfile相关的块:

tc_test{
    repo = 'test1'
    folder = 'test2'
    submodules = true
    refs = params.GitCheckout
}

导致错误

java.lang.NullPointerException:无法在空对象上获取属性’GitCheckout’

但是,这可行:

def a1 = params.GitCheckout
tc_test{
    repo = 'test1'
    folder = 'test2'
    submodules = true
    refs = a1
}

共享库中vars / tc_test.groovy的内容:

def call ( body ) {

    def config = [:]
    body.resolveStrategy = Closure.DELEGATE_FIRST
    body.delegate = config
    try {
        body()
    } catch(e) {
        currentBuild.result = "FAILURE";
        throw e;
    } finally {

        config.each{ k, v -> println "${k}:${v}" }

    }
}

我对groovy不太满意,所以这可能很明显。


阅读 345

收藏
2020-07-25

共1个答案

一尘不染

得到詹金斯JIRA 的答案

一个小的解决方法是使用映射而不是闭包:

tc_test ([
  repo: 'test1',
  folder: 'test2',
  submodules: true,
  refs = params.GitCheckout
])

可能有缺点,但是对我来说效果很好。

仍然必须将params作为参数来访问它们,但是至少现在代码更有意义了。

2020-07-25