Создатели открытого проекта Jenkins шагнули на новый уровень расширения своей экосистемы, представив после 2,5 месяцев активной работы очередной продукт в рамках концепции непрерывной интеграции и доставки.n
Предпосылки создания
Появление нового продукта Jenkins X спровоцировали такие факторы, как рост потребности в практичных и эффективных разработках для решения стратегических вопросов непрерывной интеграции и доставки, а также новые тенденции в мировой IT-сфере.nnСреди них — активизация эксплуатации неизменяемых «контейнерных» образов для продвижения ПО, рост значимости Kubernetes в качестве удобного «опенсорс» для руководства контейнерами в «облаках» разных типов, популяризация сервисов из разряда Cloud Native, нуждающихся в большом количестве компонентов и релизов, оптимизация практик DevOps.nnРазработка Jenkins X успешно ответила на все вызовы современности, что подтвердили аналитические результаты 2017 года, продемонстрировав продуктивность использования в облачных средах, высокий уровень организации процессов и возможность применения наиболее прогрессивных практических решений DevOps.n
Основная цель
Принцип, который взяли за основу создатели JX — сосредоточенность на создании ценности вместо рутины. То есть, на максимальной автоматизации промежуточных процессов. В данном контексте речь идет об упаковке приложений в образы, построении базовых конфигураций, подготовке дополнительных элементов окружения, а также о настройке пайплайнов.n
Что предлагает «Дженкинс Экс»?
Ниже приводим концептуальную схему продукта.nnnnОсновные процедуры проводятся через консольную программу jx. Документация содержит перечень соответствующих команд. Начало разработки подразумевает генерацию пайплайнов CI/CD. Для этого предусмотрены удобные спецкомплекты quickstarts, призванные облегчить начало процесса. Они включают простые приложения с описаниями, расположенные в раздельных репозиториях. Есть также возможность создавать их лично.nnПовышенное внимание создатели уделили работе со Spring Boot. Для реализованных проектов предусмотрен индивидуальный импорт, а для тех, которые создаются — упрощенная процедура старта. Для проектов, которые используют другие технологические решения, реализована возможность общего импорта действующего кода-исходника.nnНо главное «волшебство» Jenkins X в следующем. Для каждого упомянутого способа применения продукт генерирует дженкинс-файл определения пайплайнов, докер-файл «укладки» в «контейнерный» образ, а также хельм-чат в K8s.nnПлюс — осуществляется интеграция всего этого с Git. В ходе которой проверяется наличие средств оповещения о событиях для инициации пайплайна, обеспечивается деплой запросов на демо-площадке (сборка и тестирование), а в случае merge — генерация новых релизов с мастером и запуск на соответствующих площадках.nnПо умолчанию, их две. Впрочем, можно адаптировать условия под свои потребности. Каждая площадка получает свое пространство имен в K8s, то есть, работают и управляются отдельно. Выпуск релизов может осуществляется в авто-режиме или вручную.nnПлощадки Preview Environments выделены в отдельную категорию. В основе их функционирования — авто-сработка на pull-запросы, что добавляет оперативности при взаимодействии с коллегами (если есть потребность быстро продемонстрировать внесенные изменения). Также возможен запуск вручную.nnСоздатели Jenkins X особо подчеркивают прозрачность функционала, как одно из основных достоинств — любые важные изменения можно осуществлять в ручном режиме, ведь Jenkins file и Helm charts версионируются в Git с прочим кодом-исходником и full CI/CD.nnТакже реализована поддержка дополнительных компонентов, которые увеличивают возможности JX и упрощают задачи разработчиков проектов. Поскольку JX реализован на основе Jenkins, он может включаться в виде под-проекта (JEP, #400), который позволит расширить потенциал самого Дженкинс, применяя модели Git, внутренней структуры K8s, а также дополнительные опенсорс-инструменты.nnСхема, иллюстрирующая жизненный цикл кода, который обслуживается JX:n
Как это выглядит
Основная программа «написана» на языке Go с возможностью распространения под открытой лицензией Apache v2, что упрощает процесс интеграции. После этого создается кластер K8s. Конфигурационные требования подразумевают подключение RBAC и поддержку Docker.nnВсе соответствующие процедуры также реализуются очень легко. После развертки JS в кластере следует лишь добавить приложения одним из упомянутых способов, и продукт готов к применению. Просмотр возможен с помощью профильных команд, а после начальных релизов — с помощью интерфейса руководства репозиториями.nnnn