Общая библиотека Jenkins с intellij

Я начал реализовывать разделяемые библиотеки Jenkins и пытался написать свой jenkinsfile с intellij в качестве моей идеи.

Как передать функции из общего репозитория lib в другой репозиторий, в котором находится файл jenkins.

Просто чтобы прояснить, что у меня работает при запуске из jenkins, но мне нужен простой способ написать мой файл jenkins с использованием функций из репозитория shared-lib.


person Shahar Hamuzim Rajuan    schedule 18.11.2018    source источник


Ответы (3)


Вы можете попробовать использовать файл IntelliJ IDEA GDSL, предоставленный Jenkins, в своей среде IDE.

Загрузите содержимое из http://<JENKINS>/job/<PIPELINE_JOB>/pipeline-syntax/gdsl в pipline.gdsl файл и добавьте этот файл в исходную папку проекта IntelliJ Jenkins Pipeline. (Вы также можете добавить этот файл в список игнорирования SCM.)

Автозаполнение до и после добавления файла GDSL:

автозаполнение без GDSL  автозаполнение с GDSL

В пользовательском интерфейсе Jenkins вы найдете этот файл GDSL в своем проекте конвейера в разделе «Синтаксис конвейера> IntelliJ IDEA GDSL».

Jenkins GDSL

Тем не менее, я обнаружил некоторые недостатки этого решения, которые потребовали от меня вручную отредактировать файл pipeline.gdsl, но это могло быть связано с моей устаревшей установкой Jenkins (?):

  • пользовательские глобальные переменные (из папки /var) учитываются в файле GDSL, но методы, определенные для этой переменной , не учитываются.
  • шаг parallel не был экспортирован должным образом из-за ошибки (?) в классе ParallelStep

(Источник знаний: Блог Вячеслава Гайдаржи .)

person Markus Mitterauer    schedule 27.02.2019
comment
Я не могу найти http://<JENKINS>/job/<PIPELINE_JOB>/pipeline-syntax/gdsl. Как вы нашли эту ссылку? Есть ли ограничения для его получения (версия Дженкинса, нужен права администратора, ...)? Соответствует ли он структуре организации / проекта / подпроекта? - person Juh_; 11.09.2019
comment
Нашел: деталь job/<PIPELINE_JOB>/ не нужна. Он доступен прямо на http://<JENKINS>/pipeline-syntax/gdsl - person Juh_; 12.09.2019

У меня был хороший опыт работы с jenkins-pipeline-shared-libraries-gradle-plugin от mkobit в сочетании с IntelliJ IDEA.

Некоторые замечательные функции этого плагина:

  • Базовая компиляция Groovy для проверки исходного кода
  • Модульное тестирование с использованием Jenkins Pipeline Unit
  • Использование плагина и основных классов Jenkins в библиотеке
  • Поддержка @Grab для библиотек (тестирование ограничено интеграционными тестами стиля @JenkinsRule из-за проблемы)
  • Аннотацию @NonCPS можно использовать в основном исходном коде
  • Интеграционный тест с использованием Jenkins Test Harness

Лично я разрабатываю свои конвейеры в проекте общей библиотеки и интегрирую конвейер в целевой репозиторий после прохождения модульных тестов.

Существует также пример репозитория для демонстрации использования этого подключаемого модуля.

person SlashGordon    schedule 20.11.2018

Вы можете создать общую библиотеку jenkins как проект maven (или gradle, это не имеет значения) с определенным идентификатором группы, идентификатором артефакта и версией. Вы должны выполнять «mvn install» всякий раз, когда вы меняете свою общую библиотеку (эта цель использовалась для добавления артефакта jar общей библиотеки в локальный репозиторий maven). В другом репозитории, в котором вы будете писать свой файл jenkins, вы также должны создать проект maven и просто добавить свою общую библиотеку в качестве зависимости maven. И теперь вы можете использовать код из общей библиотеки в вашем файле jenkins.

person grolegor    schedule 19.11.2018