Перейти к содержанию

CI/CD

Основы CI/CD

Раньше, когда мир был медленнее, программы выпускались крупными релизами (иногда даже раз в год), которые чаще всего вручную устанавливались на сервер. Исправляющие патчи выпускали быстрее, но тоже не то чтобы очень часто.

В современном мире ситуация значительно изменилась. Наши пользователи не готовы ждать, пока вы наконец-то запилите такую необходимую для них фичу. Они хотят её здесь и сейчас. Разработчики подстроились под эти желания и изменили подход к своей работе. Если мы что-то делаем регулярно, зачем это делать вручную? Если всё есть код, то мы можем делать с ним что угодно, отправлять куда угодно. Так появилась методика непрерывной интеграции и непрерывного развертывания.

Разработчик запушил новую фичу? Пора сделать рутинные действия: получить свежие изменения, запустить юнит-тесты, собрать приложение под нужные платформы, развернуть тестовое окружение и запустить интеграционные тесты. Все этапы прошли успешно? Значит, будем считать, что код стабилен и его можно отправить прямо на продуктив, где пользователи сразу получат такую долгожданную фичу и заметно веселее понесут бизнесу свои деньги. Все эти рутинные действия берет на себя система непрерывной интеграции. От нас требуется только предоставить ей необходимое окружение и предоставить скрипт конвейерной сборки. Всё остальное она берет на себя, активно работая на невидимом фронте, лишь периодически оповещая людей, если что-то пошло не так.

Звучит как идеальный мир, где все счастливы, но, к сожалению, в жизни всё несколько сложнее. Всегда есть перечень «Но» переменной длины, который вносит коррективы. Но сама концепция CI/CD и методология DevOps, к которой она относится, является сейчас крайне популярной и эффективной организацией создания и обновления наших продуктов. Ты найдешь ей применение практически на любом проекте.

Jenkins

Дженкинс — один из наиболее популярных серверов непрерывной интеграции. Что его делает таким популярным? Во-первых, он бесплатный и опенсорсный. Во-вторых, он чрезвычайно расширяемый благодаря сотням различных плагинов и библиотек. Не нашел нужную? Всегда можно запилить свою, ведь Jenkins написан на нашей любимой Java. Настройку наших конвейеров можно производить прямо на Groovy, что предоставляет нам практически неограниченные возможности.

Из минусов можно отметить откровенно устаревший интерфейс, и понимание, что если что-то пошло не так, в поддержку не напишешь, придется ковыряться самому. Следствие бесплатности, увы.

Однако сделать свои первые шаги и запустить первые конвейеры довольно легко. Просто следуй официальному гайду и очень скоро твоё приложение научится тестировать и собирать само себя. Ну не чудо ли?


Последнее обновление: August 9, 2023
Дата создания: August 9, 2023