Использование класса совместно используемой библиотеки из пользовательского шага с совместно используемыми библиотеками Jenkins.
Я настраиваю разделяемую библиотеку для конвейеров Jenkins и пытаюсь выяснить, как импортировать класс из разделяемой библиотеки в пользовательский шаг, который я пишу.
Вот как выглядит структура каталогов:
src
--jenny
----util
------Versioning.groovy
vars
--calculateVersion.groovy
Файл Versioning.groovy определяет некоторые статические вспомогательные методы, которые делают некоторые вещи.
package jenny.util
class Versioner implements Serializable {
static bool checkForValidVersion(version) {
return true
}
}
Я хотел бы вызвать этот метод из calculateVersion.groovy
что-то вроде этого:
def call(version) {
return jenny.util.Versioner.checkForValidVersion(version)
}
Так что мой декларативный конвейер может вызвать: def valid = calculateVersion "1.0.0"
Но я получаю эту ошибку No such property: jenny for class: calculateReleaseVersions
Можно ли ссылаться на классы в общей библиотеке из файлов в файле vars для определения пользовательских шагов и как это сделать?
1 ответ
Да, это возможно. По крайней мере, для нас:
Так же, как в простой Java (или Groovy) мы помещаем оператор импорта в Groovy скрипт в vars
, В вашем случае это будет что-то вроде:
import jenny.util.Versioner
def call(version) {
return Versioner.checkForValidVersion(version)
}
Еще одна вещь, которую я только что нашел: похоже на имя файла класса Versioner
не соответствует имени класса: Versioning.groovy
, Может ли это быть проблемой?
Если это не сработает, вы, вероятно, захотите обновить версии плагинов вашего конвейера.