Плагин Job DSL против плагина конвейера

В чем основное различие между плагином Job DSL и Плагин конвейера

  1. оба обеспечивают возможность программного создания рабочих мест
  2. что лучше всего использовать для продвижения вперед и почему?
  3. если оба имеют схожую функциональность, есть ли у них разные варианты использования?
  4. Поскольку Jenkins 2.0 фокусируется на конвейерах как на коде, означает ли это, что у job-dsl нет будущего или подключаемый модуль конвейера является следующим шагом в подключаемом модуле Job DSL?

person Mr.Pramod Anarase    schedule 06.06.2016    source источник
comment
Прочтите этот jenkins.io/solutions/pipeline   -  person CSchulz    schedule 06.06.2016
comment
Они дополняют друг друга, и конвейер может в конечном итоге заменить Job DSL, но пока не так. Хорошее чтение - marcesher.com / 2016/08/04 /   -  person Felipe    schedule 08.06.2017
comment
Будьте осторожны issues.jenkins-ci.org/browse/JENKINS-33846   -  person Robinho    schedule 23.01.2018


Ответы (4)


У меня большой опыт работы с обоими. Краткий ответ заключается в том, что Job DSL существует гораздо дольше и был решением Netflix с открытым исходным кодом для «кодирования» Дженкинса. Это позволило вам ввести логику и переменные в сценарии ваших заданий Jenkins, и обычно эти задания можно использовать для формирования своего рода «конвейера» для конкретного проекта. Этот плагин получил довольно много внимания как обычный способ включения шаблонов заданий и написания сценариев.

Jenkins Pipeline (2.0) - это новое воплощение задания Jenkins, которое полностью основано на DSL и пытается устранить необходимость сшивать несколько заданий для заполнения одного конвейера, который на сегодняшний день был наиболее распространенным использованием Job DSL. Первоначально, поскольку конвейерный DSL не предлагал многих функций, которые предоставлял Job DSL, и, как упоминалось выше, Job DSL позволял вам создавать конвейерные задания, их можно было использовать вместе для определения конвейера.

Сегодня у IMO мало причин для использования Job DSL, потому что Pipeline - это поддерживаемый Jenkins механизм для написания сценариев конвейеров Jenkins, и он соответствует или превосходит многие функции Job DSL. Новые плагины разрабатываются изначально для Pipeline, а те, которые этого не делают, разработчики Jenkins поощряют к интеграции с Pipeline. И у Pipeline есть несколько преимуществ:

  • Нет необходимости «засеивать» задания с помощью конвейера, как в случае с Job DSL, поскольку конвейер является самим заданием. С Job DSL это просто сценарий, который создает другие задания.
  • С конвейером у вас есть такие функции, как параметризованный шаг ручного ввода, позволяющий указать логику промежуточного потока внутри конвейера.
  • Логика, которую можно включить в Job DSL, ограничивается созданием самих заданий; тогда как с конвейером вы можете включить логику непосредственно в задание.
  • Job DSL просто намного сложнее создать базовый конвейер доставки, используя, например, подключаемый модуль Build Pipeline; при использовании конвейера ваш файл будет меньше, а синтаксис короче. И если вы используете Job DSL для создания заданий конвейера, я больше не вижу в этом особой ценности, учитывая готовые функции шаблонов, доступные в Jenkins Pipeline.

Наконец, Jenkins Pipeline - безусловно, самая распространенная функция Jenkins прямо сейчас. Ознакомьтесь с повесткой дня Jenkins World 2016, и вы увидите прибл. 50% сессий связаны с конвейером. Нет для Job DSL.

person Neil    schedule 29.08.2016
comment
Отличный ответ. Одна из проблем, с которыми я столкнулся при первой попытке Jenkins 2.0 и плагина Pipeline, заключалась в том, что некоторые плагины, которые я использовал на этапах сборки, были несовместимы. Я уверен, что это изменится в ближайшем будущем - person Robert Hutto; 07.09.2016
comment
Да, это все еще так, и определенно было тем более в первые дни. Они начинают заполняться. - person Neil; 08.09.2016
comment
Я думаю, что это опечатка, вы написали: логика, которую можно включить в конвейерный DSL, такова ... тогда как я думаю, вы имели в виду рабочий DSL? Возможно, чтобы избежать путаницы в других частях вашего текста, просто поговорите о конвейере вместо конвейерного DSL. - person Rabarberski; 15.09.2016
comment
Спасибо @Rabarberski, исправил - person Neil; 15.09.2016
comment
Причина, по которой не было Job DSL, заключается в том, что плагин Job DSL намного более зрелый и делает из коробки почти все, что необходимо для создания логики для большого количества заданий. Не потому, что людям это неинтересно, он имеет большое количество применений, и во многих случаях использование как Pipeline, так и Job DSL может быть объединено для максимальной эффективности. - person Highway of Life; 08.03.2017
comment
Можно ли использовать в конвейере такие функции DSL, как managedScript? - person lvthillo; 28.11.2017
comment
Как возобновить работу с неудачного этапа или повторить этап развертывания с помощью версии Pipeline с открытым исходным кодом? - person Robinho; 23.01.2018
comment
Пожалуйста, ответьте, как возобновить работу с неудачного этапа или повторить этап развертывания с помощью версии с открытым исходным кодом Pipeline? @Robinho не могли бы вы посоветовать - person Ripunjay Godhani; 08.01.2019
comment
@RipunjayGodhani, вам просто нужно определить задания и их зависимости. - person Robinho; 20.01.2019

Я считаю, что идеальным подходом является использование обоих. Pipeline - это новая встроенная функция Jenkins, позволяющая выполнять задания в виде кода. Однако при создании Jenkins с нуля эти рабочие места все равно необходимо создать. Это означает, что Jenkins не может быть полностью написан по сценарию и построен из кода.

Что вы можете сделать, так это использовать JOB DSL для построения каркасной структуры всех заданий, а затем использовать конвейер для реализации заданий. Это позволит вам на 100% использовать скрипт Jenkins за вычетом создаваемого начального задания.

Возможно, со временем мы сможем использовать конвейер для полного управления Jenkins (безопасность, конфигурация и даже плагины). Но до тех пор я думаю, что это хороший подход - использовать DSL и конвейер.

person CodyK    schedule 29.06.2017
comment
Это очень важно учитывать. Вы не можете создать полностью автоматизированную установку Jenkins, используя только конвейер. Чтобы поддерживать полностью автоматизированную установку Jenkins с помощью Pipeline, вам (в настоящее время) необходимо использовать как Netflix DSL, так и Pipeline (или создавать свои конвейерные задания в отличных сценариях инициализации). Я не знаю, изменится ли это в будущем, но прямо сейчас вы не можете полностью автоматизировать Jenkins, используя только Pipeline. - person Brandon; 01.08.2017
comment
Точно. Вот чем мы сейчас занимаемся. Использование комбинации DSL и Pipeline. - person CodyK; 01.08.2017
comment
Я думаю, что над этим работают: github.com/jenkinsci/jep/tree/ master / jep / 201 - person phant0m; 18.05.2018

Мой предварительный ответ, основанный на очень ограниченном опыте:

  • Каждый использует свой Groovy DSL.
  • Job DSL позволяет создавать другие задания в соответствии со сценарием Groovy. Итак, если вам нужен набор заданий, связанных с X (например, конвейер), вы создадите одно задание DSL задания, напишите сценарий, запустите это задание, и тогда у вас будут эти задания X плюс одно для создания этих заданий. . В этот момент было запущено только задание, которое вы создали напрямую, а созданные этим заданием - нет. OOTB, эти задания не скрыты, как модули Maven в многомодульном задании Maven, но я понимаю, что есть, по крайней мере, способ создать представление и прикрепить туда задания.
  • Pipeline DSL просто зависает на неопределенное время в двух очень разных средах, в которых я его пробовал. : '(Насколько я понимаю, это известная ошибка showstopper - ищите, и вы найдете здесь несколько открытых сообщений об ошибках. В любом случае, выполнение создаваемого вами задания Pipeline фактически запускает конвейер, а не создает кучу заданий, таких как Job DSL Таким образом, триггеры для запуска задания конвейера - это триггеры для запуска конвейера, а не просто обновления заданий, которые он определяет.
  • Судя по количеству загрузок, конвейер используется более широко. Конечно, Pipeline является функцией Jenkins 2.0 по умолчанию, что может объяснить недавний всплеск загрузок. Сопровождающие Jenkins обязательно хотят, чтобы вы использовали его.

Итак, резюмируем: DSL Job DSL предназначен для создания заданий, которые образуют конвейер, DSL плагина Pipeline определяет сам конвейер.

И чтобы ответить на ваш вопрос (ы): Pipeline должен получить более широкую поддержку в будущем, выглядит более простым для меня (работа - это работа, а не метазадание) и, похоже, имеет больше функций (включая рабочий процесс). Я бы использовал его, если вы не столкнетесь с вышеупомянутой ошибкой showstopper о гибели и не сможете найти исправление / обходной путь.

person Jason Young    schedule 23.06.2016
comment
У меня нет опыта работы с плагином Pipeline, но я использую Job DSL в нескольких проектах. Я бы не сказал, что Job DSL предназначен для создания рабочих мест , которые образуют конвейер. Это для создания рабочих мест, любых рабочих мест. Кстати, я использую его для создания похожих (изменчивость решается через входные параметры) произвольных заданий, которые выполняют сборку .NET. - person odalet; 24.06.2016
comment
Вы даже можете использовать Job DSL для создания конвейерных заданий. См. stackoverflow.com/questions/ 35898020 / - person odalet; 24.06.2016
comment
@odalet Вы правы по обоим комментариям. Job DSL не знает, воспринимаете ли вы создаваемые с его помощью задания как часть одного конвейера, хотя, конечно, вы хотели бы использовать задание Job DSL для создания связанных заданий (независимо от того, образуют ли они на самом деле конвейер). - person Jason Young; 25.06.2016

Есть одно важное отличие, о котором здесь пока не упоминалось: тестирование. С помощью job-dsl есть средства тестирования кода DSL перед его фиксацией в SCM: https://github.com/sheehan/job-dsl-gradle-example - это позволяет запускать локальный набор тестов в коде DSL, а также в Jenkins перед запуском кода. Насколько мне известно, в подходе "native Pipeline" нет эквивалента.

person Andrew    schedule 28.02.2018
comment
Расширение Jenkins Pipeline Linter Connector для VisualStudio Code берет файл, который вы в настоящее время открыли, отправляет его на сервер Jenkins и отображает результат проверки в VS Code. (Здесь сервер Jenkins может находиться на вашем локальном / тестовом компьютере.) jenkins.io/doc/book/pipeline/development / Подобные расширения теперь также доступны для редакторов Atom и Sublime. - person Swapnil jaiswal; 19.07.2019