У меня очень длинный рабочий процесс для создания и тестирования нашего приложения. На самом деле так долго, что когда мы пытаемся загрузить основной сценарий рабочего процесса, мы получаем это исключение:
java.lang.ClassFormatError: Invalid method Code length 67768 in class file WorkflowScript
Я не горжусь этим. Я пытаюсь разделить рабочий процесс на более мелкие сценарии, которые мы загружаем из основного сценария рабочего процесса, но сталкиваемся с проблемой с областью видимости переменных. Например:
def a = 'foo' //some variable referenced in multiple workflow stages
node {
echo a
}
//... and then a whole bunch of other stages
может стать
def a = 'foo' //some variable referenced in multiple workflow stages
node {
git: ...
load 'flowPartA.groovy'
}()
где flowPartA.groovy выглядит так:
{ ->
node {
echo a
}
}
Основываясь на моем понимании документации, где потокPartA.groovy интерпретируется как замыкание, я ожидаю, что переменная 'a' останется в области видимости, но вместо этого я получаю обратное исключение.
groovy.lang.MissingPropertyException: No such property: a for class: groovy.lang.Binding
Я что-то упустил в том, как рабочий процесс интерпретирует сценарии потока? Есть ли хороший способ разделить огромный рабочий процесс, использующий множество параметров, на более мелкие части?