Я пытаюсь создать общую библиотеку Jenkins. Для этого я создал юнит тестируемые Groovy классы, такие как управление версиями. У меня есть шаблон регулярного выражения, и я хочу заменить строку версии соответствующими параметрами в закрытии groovy. В тестах Junit все работает нормально, но от Дженкинса у меня только нулевые значения по всем параметрам, если я использую многопараметрическое замыкание.
Моя функция управления версиями:
static String getNewVersion(String oldVersion, VersioningType type) {
Pattern pattern = ~/^(\d+)\.(\d+)\.(\d+)(-.*)?$/
switch (type) {
case VersioningType.INC_PATCH:
//Closure incPatchNotworkingFromJenkins = { _, major, minor, patch, postfix -> "${major}.${minor}.{(patch as int) + 1}{postfix :? ""}"}
Closure incPatch = { matchgroups -> "${matchgroups[1]}.${matchgroups[2]}.${(matchgroups[3] as int) + 1 }${matchgroups[4] ?: ""}" }
return oldVersion.replaceAll(pattern, incPatch)
}
}
Это работает, но с закрытием в комментарии Дженкинс получил только нулевые значения во всех параметрах, только параметр _ получает значение. Если я распечатаю параметры, я получаю [0.1.1, ноль, ноль, ноль, ноль], ноль, ноль, ноль, ноль.
Кто-нибудь может мне помочь с этим? Почему Дженкинс не понимает многопараметрических замыканий?
Заранее спасибо!