Несмотря на появление новых средств 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), но только в контексте реализации.
Страничка митапа: https://www.meetup.com/St-Petersburg-Jenkins-Meetup/events/245462046/