Вызов служебной функции из служебной функции в общей библиотеке конвейера Дженкинса

#jenkins #groovy #jenkins-pipeline

#дженкинс #groovy #дженкинс-конвейер

Вопрос:

Я следую примеру в разделе «Шаги доступа«. В src/org/foo/Zot.groovy я хотел бы вызвать служебную функцию, определенную, например src/org/foo/Bar.groovy , в . Как это сделать?

Я безуспешно пробовал несколько вещей, например:

 // src/org/foo/Zot.groovy
package org.foo;

def bar = new org.foo.Bar()

def checkOutFrom(repo) {
  bar.someFunction()
  git url: "git@github.com:jenkinsci/${repo}"
}
  

В этом случае Дженкинс зависает при загрузке глобальной библиотеки. Я также попробовал import файл.

Ответ №1:

Здесь была воспроизведена аналогичная и, вероятно, связанная с ней проблема: https://issues.jenkins-ci.org/browse/JENKINS-31484

Я воспроизвел аналогичную ситуацию, используя глобальную библиотеку CPS. Трассировка стека исполнителя показывает, что поток блокируется в InvokerInvocationException, как в предоставленной ссылке.

Я смог обойти свой небольшой случай воспроизведения, добавив аннотацию @NonCPS ко всем вызываемым методам в дальнейшем.