Рассказ о том, как в Jenkins реализован Groovy DSL для задач Configuration-as-Code. Какие DSL используются в Jenkins, и почему их так много? Мы поговорим о том, как в Jenkins Pipeline реализованы Groovy Sandbox, доступ к API Java, Script Security и персистентность контекста при рестарте. Какие проблемы это вызывает в пользовательских скриптах? И как можно расширять и поддерживать DSL для частных задач?