ћерион Ќетворкс

1 минута чтени€

¬ данной статье мы рассмотрим процессы CI\CD автоматизации.

–азберем роль такого продукта, как Jenkins и его аналогов. ѕрограммное обеспечение Jenkins написано на €зыке программировани€ Java, по отзывам »“ сообщества, данный продукт написан очень хорошо. Ќо самое главное данное программное обеспечение полностью бесплатное. ћногие энтузиасты в мире дл€ данного продукта пишут плагины, которые расшир€ют функционал Jenkins.

–ассмотрим 2 ключевых пон€ти€ CI\CD јвтоматизации.

CI Ц Continuous Integration. Ёто DevOps модель, в которой разработчики делают commit кода в репозиторий (обычно используетс€ github или gitlab, дл€ хранени€ кода) и автоматически запускаетс€ build или компил€ци€ этого кода, после этого запускаютс€ автоматические тесты кода: Unit Test, Integration Test, Functionality Test.

CD Ц Continuous Delivery and Deployment. Ёто DevOps модель, в которой разработчики делают commit кода в репозиторий и автоматически запускаетс€ build или компил€ци€ этого кода, после этого запускаютс€ автоматические тесты кода и готовый Artifact (скомпилированный код, например если это Java, то артефактом €вл€етс€ var, если это Android приложение, то apk файл) делает деплой в Staging и Production, т.е происходит установка кода в развернутую вашу среду в необходимом контуре. –ассмотрим процесс на примере.


ѕроцесс CI\CD автоматизации

ѕервым шагом в процессе €вл€етс€ Commit to Source Control (github, gitlab или bitbucket), система определ€ет наличие нового кода, срабатывает триггер и автоматически запускаетс€ следующий этап Build\Compile - компил€ци€ кода.

—истема скачивает новый код, например, если код попал в master branch (основную ветку). ѕосле получени€ ответа от сборки, что все прошло успешно, запускаетс€ следующий этап тестов. ¬се тесты пишут все те же программисты, дл€ того, чтобы проверить на сколько корректно отработал код. ¬есь этот процесс называетс€ Continuous Integration. Ёто классическа€ схема содержит 3 этапа, иногда включаютс€ дополнительные шаги, но они не принципиальны. ¬ результате данного процесса мы получаем скомпилированный и протестированный код.

ƒавайте рассмотрим последующие шаги. —ледующий шаг мы можем сделать deployment кода. ѕо сути это тот же процесс копировани€ файлов кода на сервера. ѕроцесс депло€ можно делать в разные места, можно делать в AWS или Azure, можно делать в свое частное облако, развернутое на VMware. ¬есь процесс с добавочными шагами называетс€ Continuous Delivery and Deployment.

ѕолучаетс€ следующее: за Source Control Ц отвечает git. «а шаг build и compile будет отвечать Jenkins. —ледовательно, Jenkins запуститс€, когда кто-нибудь сделает комит в систему контрол€ версий, в основную ветку или не основную, смотр€ как настроено. —ледующим шагом Jenkins выполнит все необходимые тесты, которые подготовили программисты. —ледующий шаг Deploy так же запустит Jenkins и скопирует код на необходимые сервера, с помощью скрипта или scp если это Linux сервер. —уществуют вариации с использованием Puppet или Ansible если мы делаем Deploy артефакта или конфигурации в целом.

—уществуют альтернативы Jenkins, например, Bamboo, Circleci, Gitlab CI\CD, TeamCity.


”становка Jenkins

ƒл€ развертывани€ Jenkins нам понадобитс€ виртуальна€ машина на Ubuntu версии 18 или выше.

»дем на официальный сайт Jenkins,в разделе Download мы можем увидеть 2 версии. Ќа момент написании статьи актуальна€ верси€ Jenkins 2.319.2LTS и во второй колонке мы можем увидеть недельные версии Jenkins 2.333

¬ерсии Jenkins

 ак видите дистрибутивы есть практически под все операционные системы. ћы будем использовать стабильную версию под Ubuntu\Debian. ќзнакомимс€ с требовани€ми к установке продукта Jenkins. ƒл€ инсталл€ции потребуетс€ минимум 256 ћЅ RAM, места 1 √Ѕ, а также на сайте написаны рекомендованные требовани€, с которыми будет достаточно комфортно работать с продуктом.

“ак как Jenkins написан на Java, то дл€ запуска и работы потребуетс€ непосредственно установленна€ на сервере Java. ƒл€ начала проверим версию java на сервере.

java Цversion 

≈сли сервер свежий или Java не установлена, то операционна€ система сообщит, что така€ команда не найдена и предложить установить Java. Java устанавливаетс€ достаточно просто:

  • sudo apt update Ц oбновл€ем репозиторий
  • sudo apt search openjdk Ц ищем необходимый пакет
  • sudo apt install openjdk-11-jdk Ц запускаем установку java в процессе система попросит подтвердить. „тобы предупреждение не выскочило мы можем запустить установку с ключем Цy

ѕо окончанию установки мы оп€ть провер€ем версию. —истема покажет версию и билд Java. “еперь наш сервер готов к началу установки Jenkins.

ƒобавл€ем ключ и репозиторий в операционную систему:

curl -fsSL https://pkg.jenkins.io/debian-stable/jenkins.io.key | sudo tee \
  /usr/share/keyrings/jenkins-keyring.asc > /dev/null
echo deb [signed-by=/usr/share/keyrings/jenkins-keyring.asc] \
  https://pkg.jenkins.io/debian-stable binary/ | sudo tee \
  /etc/apt/sources.list.d/jenkins.list > /dev/null
  • sudo apt-get update Ц обновл€ем репозиторий
  • sudo apt-get install Jenkins Ц инсталлируем непосредственно сам Jenkins

“еперь мы можем сделать пост настроечные меропри€ти€ непосредственно в Jenkins.

ќткрываем браузер и переходим на веб интерфейс http://ipaddr:8080, где вместо ipaddr Ц подставл€ем IP адрес сервера. ¬ ответ получаем вот такое сообщение - Unlock Jenkins

Unlock Jenkins

—истема просит ввести дополнительный ключ, который был сгенерирован при установке сервера. Ќайти его достаточно просто достаточно ввести в консоли сервера

sudo cat /var/lib/jenkins/secrets/initialAdminPassword

 опируем и вставл€ем в веб форму. ѕосле прохождени€ этой несложной системы безопасности мы можем начать базовую настройку.

Customize Jenkins

—истема предлагает выбрать стандартную установку или кастомизированную с выбором плагинов (расширений дл€ различного функционала). ≈сли мы выбираем стандартную установку, установ€тс€ только те плагины, которые сами разработчики протестировали и выбрали. ≈сли мы выберем установку с выбором, соответственно система даст возможность установить не только стандартные, но и другие плагины.

¬ыбираем стандартную установку и начинаетс€ процесс настройки самого Jenkins.

”становка

ћы можем видать, что ставитс€ git плагин, LDAP дл€ работы с Active Directory, ssh дл€ взаимодействи€ по протоколу ssh, расширение E-mail дл€ отправки уведомлений и.т.д

ѕосле непродолжительного ожидани€, система предлагает создать суперпользовател€ с правами администратора в системе.

—оздание пользовател€

«аполнение не сложное. ≈сли бы мы выбрали другой вариант установки, то система нам предложила бы выбрать самосто€тельно нужные плагины.

¬ыбор плагинов

ѕримерно вот в такой форме. ‘орма от версии к версии может отличатс€.

ѕроверка URL

ѕо окончанию заполнени€ формы, попадаем на экран где нам предлагают проверить URL, т.к эти данные будет Jenkins использовать, как переменные среды.

¬ итоге мы попадаем на главный экран Jenkins. ƒанный экран Ц это основной рабочий стол. — помощью плагинов его можно кастомизировать. “ак же можно в джобы добавить много разных параметров.

√лавный экран Jenkins

—кидки 50% в Merion Academy

¬ыбрать курс