Использование класса совместно используемой библиотеки из пользовательского шага с совместно используемыми библиотеками 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, Может ли это быть проблемой?

Если это не сработает, вы, вероятно, захотите обновить версии плагинов вашего конвейера.

Другие вопросы по тегам