8

我在 Red Hat Linux 上使用 Jenkins 2.6。我想在我的 Jenkinsfile 中使用以下内容,但是当我尝试时,Jenkins 抱怨得很厉害。(似乎只是不喜欢 = 运算符左侧的语法。):

def (a, b) = [6, 7]

它似乎不喜欢多重分配,但根据这篇文章,Groovy 1.6 及更高版本显然支持它们:

http://mrhaki.blogspot.co.uk/2009/09/groovy-goodness-multiple-assignments.html

我想这样做,以便当我调用返回 [6, 7] 的方法时,我可以这样调用它:

def (a, b) = mymethod()

def mymethod()
{
    return [6, 7]
}

谁能告诉我这是否应该在 Jenkins 中工作,如果可以,在 Jenkins 的哪个版本中?或者它是一个不受支持的功能?还是一个错误?

谢谢

4

2 回答 2

4

正如这里所解释的,管道“脚本”不是简单的 Groovy 脚本,它们在运行之前进行了大量转换,一些部分在 master 上,一些部分在 slave 上,它们的状态(变量值)被序列化并传递到下一步。因此,并不支持所有 Groovy 功能​​。

我希望在 Jenkins 文档和演示文稿中更清楚地说明(这就是为什么我发现自己在重复上面的段落......对此有很多困惑)。管道是如此简单,看起来很神奇......好吧,它有点;)

似乎确实不支持多个分配。我只是找到了这个参考来确认它:这个提交示例,由于该限制,作者将他的代码从多个分配更改为简单的分配。

按照@rjohnston 的建议,在邮件列表中请求它可能是一个好主意。

于 2017-05-06T00:05:06.733 回答
0

它应该是可用的(实际上它可以在脚本控制台中工作),但是看起来使它从管道脚本工作所需的一切都还没有完成。

开发邮件列表 ( https://groups.google.com/forum/#!forum/jenkinsci-dev ) 可能会告诉您这是一个错误还是只是一个不受支持的功能!

于 2017-01-18T10:28:37.887 回答