Как работает расширение DSL в плагине Jenkins

Я хочу создать расширение DSL для моего плагина Jenkins (построенного с использованием maven), как в примере плагина Docker для Jenkins. Я вижу, что отличный файл Docker.groovy находится в: src / main / resources / org / jenkinsci / plugins / docker / workflow / Docker.groovy

Должен ли этот отличный файл находиться внутри org.jenkinsci.plugin.docker.workflow, или я могу просто поместить его в ресурсы? В чем разница?

Кроме того, если я определю свое расширение DSL в файле groovy таким образом, доступно ли расширение DSL для неявного вызова в файле конвейера?


person Rijo Simon    schedule 12.12.2017    source источник


Ответы (1)


Чтобы сделать шаг доступным в Pipeline DSL через ваш плагин, вам необходимо определить подкласс Step, который выполняет необходимую задачу. Это может быть полностью выполнено в Java, и это предпочтительный метод добавления расширения Pipeline DSL в подключаемый модуль Jenkins.

Пример Docker, который вы связали, необычен в этом случае и не определяет типичный шаг конвейера DSL (директива docker в функциях конвейера как нечто среднее между блоком agent, step и context). Кроме того, похоже, что он включает класс Java, который динамически загружает сценарий Groovy, который действует как точка входа в директиву.

Groovy можно использовать для расширения конвейерного DSL; однако это делается в контексте общей библиотеки, что означает чтобы быть более стандартным инструментом сокращения для внутреннего использования.

person cstarner    schedule 03.01.2018