Дженкинс помогает DevOps подключиться к автоматизации
Все хотят автоматизации, и имя, которое мы довольно часто слышим в отношении автоматизации, — Дженкинс. Мы слышим о заданиях Jenkins, каталогах Jenkins и плагинах Jenkins, но что такое Jenkins? Ну, это сервер непрерывной интеграции и непрерывной доставки (CI & CD) с открытым исходным кодом, с помощью которого организации могут автоматизировать свой процесс разработки программного обеспечения. Дженкинс делает это, управляя и контролируя процессы жизненного цикла разработки, разбивая их на задания Дженкинса.
Задания Jenkins — это любые конкретные задачи или этапы процесса сборки, которые Jenkins выполняет за вас. Это может включать в себя просто компиляцию исходного кода и запуск тестов или что-то более сложное, например измерение покрытия кода или показателей качества кода, или даже развертывание вашего приложения на веб-сервере.
Что касается каталогов Jenkins, домашний каталог Jenkins содержит все сведения о конфигурации вашего сервера Jenkins, которые хранятся в наборе файлов XML. Хорошим примером может служить основная конфигурация, которая хранится в файле config.xml, или сведения о ваших установках Maven, которые хранятся в файле с именем hudson.tasks.Maven.xml .
Полностью автоматизированная CI/CD
До того, как у нас появилась CI/CD, следование «старой школе» или водопадному подходу означало выпуск нескольких перегруженных релизов вместо частых облегченных. Мы все знаем, каким кошмаром может быть этот процесс старой школы, поэтому у нас есть DevOps и CI/CD. Непрерывная доставка — это привыкание к самой напряженной части доставки программного обеспечения — развертыванию. CD делает развертывания меньшими, более частыми и естественным продолжением разработки и тестирования, выполненных правильно.
Вот почему автоматизация всего процесса выпуска так важна, так как это значительно увеличивает частоту выпуска. Jenkins — это наиболее часто используемый инструмент для автоматизации от сборки до развертывания, и он существует уже некоторое время. Он также имеет одно из крупнейших сообществ с открытым исходным кодом и корпоративную версию для тех, кто в ней нуждается.
Познакомьтесь с плагинами
Помимо того, что установка также может быть автоматизирована, Jenkins значительно помогает повысить производительность команды за счет создания ярлыков. Хорошим примером может служить этап разработки, когда вы можете чаще проверять измененные базы кода с помощью заданий сборки и развертывания одним щелчком мыши. Однако именно плагины действительно расширяют возможности Jenkins от разработки до развертывания, и буквально тысячи из них добавляют инструменту множество интересных функций.
Дженкинс определяет точки расширения, которые моделируют аспект системы сборки, который необходимо реализовать. Затем Jenkins позволяет плагинам вносить свой вклад в эти реализации через точки расширения. Эти плагины предоставляют множество мощных функций, которые помогают повысить производительность и безопасность.
Плагин Job Generator, например, используется в довольно крупных организациях, где сложно отследить, кто над чем работает. Хотя вы хотите убедиться, что вы предоставляете доступ тем, кто в нем нуждается, вы также не хотите давать всем свободу действий делать все, что они хотят. Этот плагин позволяет вам определять шаблоны, чтобы убедиться, что все задания соответствуют определенному стандарту. Разработчики также могут создавать новые задания с помощью шаблона генератора заданий. Доступ к конфигурации также можно отключить с помощью плагина авторизации на основе ролей.
Еще несколько примеров подключаемых модулей: подключаемый модуль состояния сборки Embeddable или подключаемый модуль исключения. Первый плагин дает вам ссылку для отображения статуса сборки, а второй позволяет обрабатывать конфликты между заданиями. Disable-failed-job используется для определения максимального количества последовательных неудачных сборок, прежде чем система будет автоматически отключена.
Дженкинс в облаке
Одной из мало упоминаемых особенностей Jenkins является его способность масштабироваться до большого количества узлов и равномерно распределять рабочие нагрузки между ними. Если ваша собственная инфраструктура недостаточно велика, подключаемый модуль AWS или новые подключаемые модули Microsoft ACS и ACI позволяют вам использовать ресурсы общедоступного облака. Затем вы можете указать образы AMI, которые хотите использовать, предоставить учетные данные для подключения и протестировать подключение.
Microsoft только недавно анонсировала плагины Jenkins для своих платформ ACI и ACS и описала Jenkins как способную «инициировать и контролировать выполнение задачи, проверять результат и инициировать следующий этап».
Хотя Jenkins хорошо интегрируется с виртуальными машинами, такими как новая интеграция VMware AirWatch, ACI не нуждается в какой-либо инфраструктуре виртуальных машин для управления ею и, кроме того, позволяет развертывать контейнеры и оплачивать их посекундно. Плагин Jenkins для ACI начал предварительную версию в июле, и вместо виртуальной машины вы можете создать агент контейнера, подготовка которого занимает немного времени, поскольку он основан на образе Docker.
Дженкинс и Кубернетес
Пуи Чи Чан, старший программный менеджер Microsoft, сказал, что компания разработала плагин после того, как не смогла найти вариант, позволяющий осуществлять непрерывное развертывание с Jenkins на Kubernetes. Этот плагин позволяет пользователям использовать любые свои образы Docker в качестве шаблонов для экземпляров по требованию, которые Дженкинс сообщает Kubernetes запускать по мере необходимости.
Команда CloudBees и сообщество Jenkins также создали подключаемый модуль Kubernetes для Google Cloud Platform, который позволяет создавать ведомые устройства Jenkins в виде образов Docker и запускать их на узлах Docker, управляемых Kubernetes. Хотя этот плагин позволяет динамически инициализировать агенты Jenkins в любом кластере Kubernetes, на данный момент он работает только на GCP или локально.
Как это работает, так это то, что после развертывания модуля Kubernetes, на котором запущен подчиненный контейнер, задания Jenkins, запрашивающие это конкретное подчиненное устройство, создаются непосредственно внутри подчиненных контейнеров пода. Затем Kubernetes переводит подчиненные модули в автономный режим после завершения сборки.
Поскольку важно оставаться масштабируемым и прогнозировать будущий рост, вероятно, именно поэтому организации предпочитают такие среды, как образы Docker, которые можно легко заменить и создать по шаблону. Это также обеспечивает более высокую устойчивость в случае, если некоторые среды отключатся, когда спрос на мастер Jenkins возрастет. В таких случаях новые могут создаваться быстро и автоматически. Тот факт, что он также работает с Kubernetes, просто вишенка на торте.
Движок DevOps
Разработчики всегда ищут «последующие системы», которые они могут подключить к своей существующей среде разработки или программному обеспечению для управления проектами. Это привело к более широкому использованию таких инструментов, как Jenkins, Chef или Puppet, тем более что они имеют открытый исходный код. Еще один популярный инструмент с открытым исходным кодом, который вы можете подключить к Jenkins, называется Blue Ocean, подключаемый пользовательский интерфейс с открытым исходным кодом или «скин».
[tg_youtube video_id=”k_fVlU1FwP4″]
Работать в Blue Ocean намного проще, чем в Jenkins, и это еще больше упрощает автоматизацию конвейеров CI/CD. Blue Ocean 1.0 поставляется в комплекте с визуальным конвейерным редактором для доставки программного обеспечения, который обеспечивает возможность WYSIWYG для создания и фиксации конвейеров кода в Git или GitHub. Другие функции включают точное устранение неполадок и персонализацию, например, для настраиваемых информационных панелей.
Дженкинс определенно прошел долгий путь от проекта Hudson, который начался в Sun Microsystems и стал настолько популярным, что некоторые люди даже называют его движком DevOps. Благодаря более чем полумиллиону активных узлов Jenkins не показывает никаких признаков замедления благодаря обширной коллекции плагинов.