Jenkinsfile: определение и присвоение значений нескольким переменным одновременно, похоже, не реализовано

Я использую Jenkins 2.6 в Red Hat Linux. Я хочу использовать следующее в своем файле 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]
}

Может ли кто-нибудь сказать мне, должно ли это работать в Дженкинсе, и если да, то в какой версии Дженкинса? Или это неподдерживаемая функция? Или ошибка?

Спасибо


person Will    schedule 26.07.2016    source источник
comment
Это было исправлено! issues.jenkins-ci.org/browse/JENKINS-44027   -  person rjohnston    schedule 06.10.2017


Ответы (2)


Как объяснено здесь, "скрипты" конвейера - это не простые скрипты Groovy, они сильно трансформируются перед запуском, некоторые части на master, некоторые части на подчиненных устройствах, их состояние (значения переменных) сериализуются и передаются на следующий шаг. Таким образом, не все функции Groovy поддерживаются.

Я хотел бы, чтобы это было более ясно в документах и ​​презентациях Дженкинса (поэтому я повторяю абзац выше... в этом много путаницы). Конвейер настолько прост, что кажется волшебством... ну, это как бы ;)

Кажется, что множественные назначения действительно не поддерживаются. Я нашел эту ссылку только для подтверждения: этот пример коммита где автор меняет свой код с нескольких назначений на простые из-за этого ограничения.

Вероятно, неплохо было бы попросить об этом в списке рассылки, как предложил @rjohnston.

person Hugues M.    schedule 06.05.2017
comment
Привет, я думаю, что это ограничение все еще немного сбивает с толку в сценарном конвейере docs, потому что в нем говорится, что большинство функций, предоставляемых языком Groovy, доступны пользователям .... Было бы полезнее определить где-нибудь, что является реальной областью применения Groovy. - person snaphuman; 16.08.2017

Он должен быть доступен (и действительно работает из консоли сценариев), однако похоже, что все необходимое, чтобы заставить его работать из сценария конвейера, не было сделано.

Список рассылки разработчиков (https://groups.google.com/forum/#!forum/jenkinsci-dev) может сказать вам, является ли это ошибкой или просто неподдерживаемой функцией!

person rjohnston    schedule 18.01.2017