Jenkins: CI/CD «на блюдце»

Jenkins – популярный инструмент CI/CD. Благодаря открытому исходному коду находится в списке лучших тулов для автоматизации. Jenkins облегчает жизнь разработчикам, потому что предлагает набор плагинов для непрерывной интеграции. С Jenkins CI легко интегрировать сборку и тестирование с рядом технологий, повышая эффективность доставки кода. В официальном Jenkins Tutorial доступна документация по этапам, пакетам, сборке, тестированию, анализу. Много информации и инструкции можно найти на странице GitLab Jenkins. Jenkins успешно дружит с другими инструментами, которые применяются в DevOps-культуре. Один из таких примеров – интеграция с Докер.

docker jenkins

Рабочая пара Docker Jenkins

Поговорим о том, как работать с контейнерами Docker, используя их в качестве Jenkins-нод. Ноды можно связать с нужными операционными системами и назначать им задачи. Есть три варианта реализации CI Docker в Jenkins:

  • Использовать ноды на инстансах или компьютерах
  • Использовать гипервизор
  • Использовать контейнеры (Linux Containers, Jail FreeBSD)

Jenkins распространяется в виде файлов WAR, «родных» пакетов, установщиков и Docker images. 

Перед тем, как делать Jenkins download, выполните несколько пред-установочных шагов: ознакомьтесь со списком Jenkins Tutorial на официальном сайте проекта, изучите требования к оборудованию и программному обеспечению, определитесь с подходящим пакетом для загрузки. После загрузки пакета перейдите к установке.

Jenkins Plugins и Extensions

У Jenkins большой выбор плагинов. Это позволяет сообществу создавать Jenkins plugins для разных аспектов работы с системой. Большинство базовых функций написаны как раз-таки в виде Jenkins plugins и расширений. Подобрать нужный плагин можно в библиотеке по названию либо по функциям, которые необходимы. Что умеют делать плагины? Благодаря плагинам и расширениям возможности Jenkins CI постоянно растут. Настройка интерфейса и инструментов сборки, аутентификация и интеграция с системами единого входа, выход во внешние каталоги и т.д. Из более сложных – реализация конвейеров в плагинах, предупреждение о выводе консоли, назначение сборки агентам.

devops курсы

Чем полезен Jenkins Pipeline?

Набор модулей в Jenkins, который обеспечивает реализацию и интеграцию CI-конвейеров, известен как Jenkins Pipeline. Конвейер Jenkins являет собой всю суть автоматизации, направляющей код от системы контроля версий до пользователя. Процесс, который проходит программное обеспечение на пути доставки, довольно сложный. Jenkins Pipeline обеспечивает надежность протекания этого процесса и его повторяемость. Также в нем есть этапы тестирования и развертывания. Можно моделировать конвейеры доставки Pipeline благодаря расширению набора инструментов. Для уточнения сценариев в этапы можно добавлять Jenkins Environment Variables. Описание конвейера содержится в текстовом файле, который можно хранить в репозитории проекта. При работе с несколькими проектам есть возможность связи конвейеров с внешними репозиториями – Jenkins Shared Library.

jenkins tutorial

Jenkins X – следующий шаг эволюции CI/CD?

Когда программные возможности Jenkins изменили воплощение в жизнь DevOps-философии, разработчики не могли нарадоваться находке. Все гуглили ответ на вопрос «Jenkins – что это?». Но постоянные изменения в технологиях и в самом подходе DevOps стимулировали к созданию нового продукта. Сейчас сообщество разбирается с Jenkins X и ее сходством с «классической» версией. Вместо запроса «Jenkins – что это?» все чаще встречается поиск информации о Jenkins X.

Jenkins X ориентирована в первую очередь на изменения в IT-технологиях и методиках DevOps. Задача Jenkins X – автоматизировать сторонние приложения, которые могут использоваться вместе Jenkins. Например, упаковка приложений в Docker Images, создание конфигураций YAML в Kubernetes или подготовка Environments. Также это может быть настройка типовых CI/CD Jenkins Docker Pipeline.

jenkins install ubuntu

Запуск Jenkins X – своеобразный restart Jenkins в классической версии. Благодаря этому решению достигается принцип DevOps-философии – автоматизируй рутину и сосредоточься на идеях. Дополнением к удобной реализации CI/CD стал релиз интерфейса Blue Ocean Jenkins. Решение построено на персонализированной настройке интерфейса с современным, функциональным дизайном. Blue Ocean позволяет разработчикам с любым опытом создавать конвейеры с помощью понятной визуализации. Pipelines, созданные с помощью Blue Ocean, прозрачны и легки к восприятию, что полезно для кросс-команд. У интерфейса широкие возможности кастомизации дашбордов, поэтому работать будет вдвойне приятно.

Jenkins – популярный инструмент для реализации CI/CD. С его помощью выстраивается конвейер доставки программного обеспечения, начиная с этапа разработки и заканчивая этапом продакшена. Конвейер (Jenkins Pipeline) обеспечивает плавное и безопасное протекание процесса доставки кода. Тестирование и развертывание также можно включать в конвейер. Это решение еще называют CI-конвейер, и работает он благодаря набору Jenkins модулей. Преимуществом этого программного обеспечения является большой выбор плагинов и расширений. С их помощью DevOps-евангелисты решают разные типы задач автоматизации.

Программное обеспечение Jenkins используется для непрерывной интеграции, а точнее, сборки и тестирования кода. Это облегчает специалистам, вовлеченным в процесс разработки ПО, интеграцию изменений и обеспечивает регулярное обновление версий. Jenkins интегрируется со многими инструментами и технологиями тестирования и развертывания, что повышает эффективность и скорость доставки кода. ПО Jenkins помогает организациям выстраивать автоматизацию процессов и ускорять разработку программных продуктов. 

Jenkins настраивает процесс (Jenkins build job) с определенным списком шагов, где триггер основывается на событии или времени. Например, можно настроить этапы компиляции исходного кода Java каждые 30 минут или после появления новой версии в репозитории. Что еще делает Jenkins?

  • Выполняет сборку ПО
  • Реализует сценарий оболочки
  • Архивирует результат сборки
  • Запускает тесты

Система отслеживает выполнение шагов и может остановить сценарий, если на каком-то этапе произошла ошибка. В случае успешной сборки или наличия ошибок Jenkins отправляет соответствующее уведомление.

Чтобы запустить Jenkins вручную, откройте строку Console/Command и пройдите в директорию установки. Там есть ряд команд, которые помогут работать с системой:

  • Запуск Jenkins: jenkins.exe start
  • Остановка Jenkins: jenkins.exe stop
  • Перезапуск Jenkins: jenkins.exe restart.

Чтобы запустить Jenkins можно использовать встроенный контейнер Jetty servlet и использовать следующую команду: $ java -jar jenkins.war. Если вы используете Unix и хотите сделать output Jenkins в файл с логами, используйте nohup: $ nohup java -jar jenkins.war > $LOGFILE 2>&1. Чтобы получить доступ к Jenkins через браузер, пройдите по ссылке http://myServer:8080, где myServer – это имя системы, запускающей Jenkins.

Jenkins – это система, которая позволяет автоматизировать сценарии доставки программного обеспечения. Для того, чтобы описать процесс доставки кода от разработчиков до продакшена, используются Jenkins Pipelines. Ниже показываем Jenkins Pipeline example с плагином Ansi Color Build Wrapper:

// This shows a simple build wrapper example, using the AnsiColor plugin.

node {

    // This displays colors using the ‘xterm’ ansi color map.

    ansiColor(‘xterm’) {

        // Just some echoes to show the ANSI color.

        stage “\u001B[31mI’m Red\u001B[0m Now not”

    }

}

Пример показывает использование инкапсулирования, когда ANSI coloring добавляется в output консоли.

Jenkins обычно запускается как отдельное приложение со своим процессом вместе со встроенным контейнером/сервером приложения Java servlet (Jetty). Также можно запустить программу как servlet в других servlet контейнерах Java, например, Apache Tomcat или GlassFish. 

Чтобы запустить Jenkins откройте командную строку и откройте файл jenkins.war через команду D:\>Java –jar Jenkins.war. После запуска начнется извлечение файла war:

D:\>Java –jar Jenkins.war

Running from: D:\jenkins.war

Webroot: $user.home/ .jenkins

Sep 29, 2015 4:10:46 PM winstone.Logger logInternal

INFO: Beginning extraction from war file

После обработки появится такая строка: INFO: Jenkins is fully up and running. После запуска можно переходить к панели управления по ссылке http: // localhost: 8080.

Самый простой способ запуска Jenkins – через команду Jenkins.war. Скачиваете и запускаете файл Jenkins.war как приложение Java. Для этого открываете консоль cmd на Windows или терминал Unix и запускаете команду java -jar jenkins.war. После этого открывается jetty сервер. Когда увидите сообщение Jenkins is fully configured and running, можно открывать строку браузера и проходить по пути http: // localhost: 8080. Если все сделали правильно, откроется главная страница Jenkins.

Чтобы запустить Jenkins используйте команду Jenkins.war (более подробно об этом мы рассказали в предыдущих вопросах). К примеру, вы запустили систему и все работает. Что нужно сделать, если вы хотите остановить Jenkins? Необходимо открыть консоль (командную строку), перейти в каталог установки и выполнить нужную команду: safeRestart – ожидает пока выполнятся все jobs и делает перезапуск restart – немедленная перезагрузка exit – отключает все службы reload – перезагружает конфигурацию Например, если локальный компьютер работает на порту 8080, то команда будет выглядеть так: http://localhost:8080/exit.

Планировщик Cron или его аналог Jenkins jobs позволяют создать тот сценарий задачи, который вам нужен. Jenkins позволяет выполнять задачи в виде jobs. Например, вы создаете job для тестирования при отправке кода в репозиторий. Для этого вы создаете shell script или устанавливаете соответствующий плагин. Задание можно запланировать на определенное время как периодическую операцию на основе даты и времени. Например, чтобы создать job на выполнение каждый час, используйте 0 * * * * (формат планировщика Cron). После этого job будет выполняться каждый час (01:00, 02:00, 03:00 и т.д.). 

error: Контент защищен.