Судьба снова свела меня с Jenkins, моим старым знакомым – хорошо известным в широких программистских кругах CD/CI инструментом.
Jenkins – трудяга, позволяющий компилировать, собирать и устанавливать на удаленные сервера (и не только) программные компоненты и системы. В то же время Jenkins – модник, держащий нос по ветру и частенько меняющий свою одежку – сборщики пакетов. От Apache Ant он перешёл своё время к Apache Maven, затем к Gradle и вот предстал свету со своим новым сборщиком Jenkins Pipeline
Как и другие сборщики, Jenkins Pipeline реализован в качестве плагина. Старые сборщики и просто скрипты по-прежнему в строю.
Любопытно проследить эволюцию синтаксиса и семантики сборщиков. В таблице внизу представлено личное, возможно спорное мнение автора:
Сборщик | Базовый синтакс | Базовая семантика | Тип (декларативный vs. императивный) |
Apache Ant | XML | Практически все возможности скриптинга | Императивность «завернутая в XML“ |
Apache Maven | XML | Семантика поставляется полностью узкоспециализированными плагинами | Стандартизованный декларативный |
Gradle | DSL на базе Groovy | Поставляется плагинами но может быть расширена | Декларативный расширяемый императивными операциями Groovy |
Jenkins Pipelines | Очень простой скобочный синтакс | Предоставляется в основном самим инструментом, но может быть расширена вызовом платформенных и собственных скриптов | Декларативный с возможностью расширения скриптами |
Мне язык Jenkins Pipeline чем-то напомнил Wolfram Language (https://en.m.wikipedia.org/wiki/Wolfram_Language) – совсем немного «синтаксического сахара» и огромная мощность встроенных функций.