Jenkinsfile:一次定义和分配多个变量的值似乎尚未实现。

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中使用?还是这是一个不支持的功能?或者是一个bug?

谢谢。


2
这个问题已经被解决了!https://issues.jenkins-ci.org/browse/JENKINS-44027 - rjohnston
2个回答

4
此处所解释的那样,Pipeline“脚本”不是简单的Groovy脚本,在运行之前会进行大量转换,有些部分在主服务器上,有些部分在从服务器上,它们的状态(变量值)会被序列化并传递到下一步。因此,并非所有Groovy特性都受支持。
我希望在Jenkins文档和演示中更加清晰地表述这一点(这就是为什么我发现自己重复上面的段落...人们对此存在很多困惑)。Pipeline看起来很简单,好像有点魔法... 好吧,确实有点儿。
似乎确实不支持多个赋值。我只找到了一个参考来确认它:这个提交的示例,其中作者将他的代码从多个赋值改为简单的赋值,因为有这个限制。
像@rjohnston建议的那样,在邮件列表上询问可能是个好主意。

我认为在Scripted Pipeline文档中,这个限制仍然有点令人困惑,因为它说“大多数Groovy语言提供的功能都可供用户使用...”。更有帮助的是,在某个地方定义Groovy在其中的真正范围。 - snaphuman

0

它应该是可用的(实际上从脚本控制台可以工作),但似乎还没有完成使其从管道脚本中工作所必需的任何操作。

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


网页内容由stack overflow 提供, 点击上面的
可以查看英文原文,
原文链接