Встреча со старым знакомым

Судьба снова свела меня с Jenkins, моим старым знакомым – хорошо известным в широких программистских кругах CD/CI инструментом. 

Jenkins – трудяга, позволяющий компилировать, собирать и устанавливать на удаленные сервера (и не только) программные компоненты и системы. В то же время Jenkins – модник, держащий нос по ветру и частенько меняющий свою одежку – сборщики пакетов. От Apache Ant он перешёл своё время к Apache Maven, затем к Gradle и вот предстал свету со своим новым сборщиком Jenkins Pipeline

Как и другие сборщики, Jenkins Pipeline реализован в качестве плагина. Старые сборщики и просто скрипты по-прежнему в строю.

Любопытно проследить эволюцию синтаксиса и семантики сборщиков. В таблице внизу представлено личное, возможно спорное мнение автора:

СборщикБазовый синтаксБазовая семантикаТип (декларативный vs. императивный)
Apache AntXMLПрактически все возможности скриптингаИмперативность «завернутая в XML“ 
Apache MavenXMLСемантика поставляется полностью узкоспециализированными плагинамиСтандартизованный декларативный
GradleDSL на базе GroovyПоставляется плагинами но может быть расширена Декларативный расширяемый императивными операциями Groovy
Jenkins PipelinesОчень простой скобочный синтаксПредоставляется в основном самим инструментом, но может быть расширена вызовом платформенных и собственных скриптов Декларативный с возможностью расширения скриптами

Мне язык Jenkins Pipeline чем-то напомнил Wolfram Language (https://en.m.wikipedia.org/wiki/Wolfram_Language) – совсем немного «синтаксического сахара» и огромная мощность встроенных функций.