Большие и корпоративные • Cloud-native application development • DPA- автоматизация мониторинга, анализа и составления репортов для backup и recovery окружений • Снижение сложности, затрат и устранение ручных усилий Используем Jenkins Server для решения задач: • Continuous Integration • Delivery • Releasing • Customization • Pipeline Cloud build infrastructure
& challenges • В облаке построение build инфраструктуры привычными flow не подходит • Разным микросервисам требуются разные инструменты сборки • В проекте используются скрипты, которые всегда соответствовать правильной версии • Снижение усилий направленных на настройку slave-ов
Generic build позволяет собирать проекты любого типа с нестандартной конфигурацией и применением различных build tool-ов и опций. Помимо этого: - Встроенный язык сценариев - Пользовательские custom-сбороки - Использование make-скриптов на post, pre-build steps - Input branch parameters & options
Groovy scripts Jenkins имеет встроенный язык сценариев, Groovy. Полезен когда необходимо сделать что- то что не предусмотрено каким-либо плагином или параметрами. GENERIC JOBS
JOBS Blue Green Deployment Jenkins Job 2 инстанса master-джобы позволяет работать над одним(синим), пока другой(зеленый) остается стабильным Алгоритм Джобы: 1. На каждом шаге проверяется наличие микросервисов указанных в параметрах в продакшен листе 2. Деплоится новый артефакт микросервиса в клауд 3. При добавлении каждого нового инстанса к приложению, проверяется его статус. При каждой ошибке, происходит rollback 4. Удаляется старый URL из нового приложения 5. Останавливается старое приложение 6. Обновляется продакшен лист микросервисов
Универсальные модули (как для *nix и windows систем) • Удобное дополнение для build server-ов, применимое в облаке, где контролировать построение build инфраструктуры обычным способом не подходит • Могут быть полезны когда разным сервисам требуются разные версии build tool • Если в проекте используются скрипты, ими удобно управлять используя wrapper • Support tools: Maven, Ant, Gradle (OS: Win 64, Linux) Как реализован wrapper: Указываем версию tool во wrapper.properties distributionUrl = http://distributions/tool-1.12-bin.zip Определяется место установки дистрибутива, откуда будет вызван tool-launcher.jar Скачивается/распаковывается архив Установка build tool Wrapper Build tools wrappers
Configuration as Code • Reproducible, stable & self-contained builds • Wrapper хранится в VCS : - Всегда соответствует версии build скрипта - В любой момент времени можно сделать checkout версии двух годовой давности • Тем не менее коммитить wrapper в VCS не совсем правильно • Если ваша организация добавляет скрипты, ими удобно управлять используя wrapper Wrapper Pros & cons
NOTES • Jenkins – это мощный инструмент непрерывной интеграции, который автоматизирует множество процессов и рутинных задач связанных с настройкой и мониторингом изменений при работе с сервером. • Но, помимо этого, Jenkins все же стоит рассматривать как настраиваемую платформу • Большое число «плагинов» позволяет использовать Jenkins во многих сценариях • Но если встает необходимость добавить что-то что не предусмотрено плагинами, то свободное определение настроек (generic jobs) и модули будут незаменимы.