Groovy DSL в Jenkins и Pipeline

Часть 1:

Часть 2:

4 декабря 2017-го в офисе компании Oracle состоялась встреча с Олегом Ненашевым: разработчиком в компании CloudBees, которая является одним из основных контрибьюторов Jenkins.

Несмотря на появление новых средств CI/CD, Jenkins остается одним из наиболее популярных серверов автоматизации. Он фактически является распределенным веб-сервисом и предоставляет различные DSL, в том числе с доступом к JVM и внутренним API. Давать такой доступ нужно аккуратно, а то в продакшне будет мучительно больно: security, UX, performance, и т.д. О предотвращении этой боли и пошёл разговор.

Олег рассказал:

  • как в Jenkins реализованы Groovy DSL и почему их так много;
  • как в Jenkins Pipeline реализованы Groovy Sandbox, доступ к API Java, Script Security и персистентность контекста при рестарте;
  • какие архитектурные проблемы это вызывает;
  • как можно при всем этом расширять и поддерживать DSL для частных задач.

Disclaimer: Цель доклада — поговорить об архитектурных особенностях Jenkins, который в своей основе является распределённым Java-приложением. Разговор идёт о Jenkins Pipeline и его новомодных фичах (Declarative Pipeline, Blue Ocean), но только в контексте реализации.