Подтвердить что ты не робот

Работа с плагином DSL Plug-Vs

В чем основное отличие между Job DSL Plugin и Pipeline Plugin

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

Ответ 1

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

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

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

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

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

Ответ 2

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

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

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

Ответ 3

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

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

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

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