Справочна: как се извършва процесът на Непрекъсната Интеграция

Днес ще се обърнем към историята на термина, ще обсъдим предизвикателствата при внедряването на CI и ще представим няколко популярни инструмента, които могат да помогнат за работа с него.

Справочна: как се извършва процесът на Непрекъсната Интеграция
/ Flickr / Altug Karakoc / CC BY / Фото изменено

Термин

Непрекъсната Интеграция (Continuous Integration) е подход за разработка на приложения, който включва често извършване на сборки на проекта и тестване на кода.

Целта и е да направи процеса на интеграция предсказуем и да открие потенциални грешки и бъгове на ранен етап, за да има повече време за тяхното поправяне.

Терминът Непрекъсната Интеграция се появява за пръв път през 1991 година. Той е въведен в употреба от създателя на UML Гради Буч (Grady Booch). Инженерът представя концепцията за CI като част от собствената си практика на разработка — метода на Буч. Той не е описал конкретни изисквания за непрекъсната интеграция. Но по-късно в книгата си «Object-Oriented Analysis and Design with Applications» той посочва, че задачата на методиката е да ускори издаването на «вътрешни релизи».

История

През 1996 година CI е приет от създателите на методологията на екстремно програмиране (XP) — Кент Бек (Kent Beck) и Рон Джефрис (Ron Jeffries). Непрекъснатата интеграция става един от дванадесетте основни принципа на техния подход. Основателите на XP уточняват изискванията към методологията CI и подчертават необходимостта от извършване на сборка на проекта няколко пъти на ден.

В началото на 2000-те год. методологията на непрекъсната интеграция започва да бъде популяризирана от един от основателите на Agile Alliance Мартин Фаулер (Martin Fowler). Неговите експерименти с CI доведоха до появата на първия софтуерен инструмент в тази сфера — CruiseControl. Утилитата е създадена от колегата на Мартин — Мэттью Фоммель (Matthew Foemmel).

Цикълът на сборка в инструмента е реализиран под формата на демон, който периодично проверява системата за управление на версиите за промени в кода. Решението може да бъде изтеглено и днес — то се разпространява е под BSD-подобна лицензия.

С появата на софтуер за CI, все повече компании започват да прилагат практиката. Според проучване на Forrester [стр.5 отчет], през 2009 година 86% от петдесет технологични компании, анкетирани в проучването, са използвали или внедрявали CI методи.

В днешно време практиката на Непрекъсната интеграция се прилага от организации в разнообразни индустрии. През 2018 година голям облачен доставчик проведе анкета сред ИТ специалисти от секторите на услугите, образованието и финансите. От шест хиляди респонденти, 58% отговориха, че използват инструменти и принципи на CI в работата си.

Как работи

Основата на непрекъснатата интеграция се състои от два инструмента — система за контрол на версиите и CI сървър. Последният може да бъде както физическо устройство, така и виртуална машина в облачната среда. Разработчиците качват нов код еднократно или няколко пъти на ден. CI сървърът автоматично копира кода заедно с всички зависимости и изпълнява компилацията. След това стартира интеграционните и юнит тестове. Ако тестовете преминат успешно, CI системата разгръща кода.

Общата схема на процеса може да бъде представена по следния начин:

Справочна: как се извършва процесът на Непрекъсната Интеграция

Методологията CI поставя редица изисквания към разработчиците:

  • Незабавно да се коригират проблемите. Този принцип дойде в CI от екстремното програмиране. Коригирането на бъгове е най-приоритетната задача за разработчиците.
  • Да се автоматизират процесите. Разработчиците и мениджърите трябва постоянно да търсят "тесните места" в процеса на интеграция и да ги отстраняват. Например, често "тесните места" на интеграцията се оказват тестовете.
  • Да се извършват компилации възможно най-често. Минимум веднъж на ден, за да се синхронизира работата на екипа.

Предизвикателства при внедряването

Проблемът е високите оперативни разходи. Дори ако компанията използва отворени CI инструменти (за които ще говорим по-късно), тя все пак ще трябва да инвестира средства за поддържане на инфраструктурата. Въпреки това, облачните технологии могат да бъдат решение.

Тези технологии опростяват компилацията на разнообразни компютърни конфигурации. Освен това компаниите плащат само за използваните ресурси, което помага за спестяване на разходи за инфраструктура.

Според проучвания [стр.14 статии], непрекъснатата интеграция повишава натиска върху служителите в компанията (поне в началото). Те трябва да овладеят нови инструменти, а колегите не винаги помагат с обучението. Затова е необходимо да се разберат новите фреймворци и услуги "на хода".

Третата трудност — проблеми с автоматизация. Те се сблъскват с организации с големи обеми legacy код, който не е покрит с автоматизирани тестове. Това води до факта, че кодът просто се пренаписва преди пълното внедряване на CI.

Справочна: как се извършва процесът на Непрекъсната Интеграция
/ Flickr / theilr / CC BY-SA

Кой използва

Един от първите, които оцениха предимствата на методологията, са ИТ гигантите. Google използва непрекъсната интеграция от средата на 2000-те. CI е внедрена за решаване на проблем с забавянията в работата на търсачката. Непрекъснатата интеграция е помогнала бързо да се откриват и отстраняват проблеми. В момента CI използват всички подразделения на ИТ гиганта.

Непрекъснатата интеграция помага и на малки компании, а също така инструментите за CI се използват от финансови и медицински организации. Например, в Morningstar услугите за непрекъсната интеграция помогнаха да се поправят уязвимости с 70% по-бързо. А медицинската платформа Philips Healthcare успя да ускори тестването на актуализации два пъти.

Инструменти

Ето няколко популярни инструмента за CI:

  • Jenkins — една от най-популярните CI системи. Тя поддържа повече от хиляда плагина за интеграция с различни VCS, облачни платформи и други услуги. Jenkins се използва и от нас в 1cloud: инструментът влиза в нашата DevOps система. Той редовно проверява Git клон, предназначен за тестване.
  • Buildbot — python фреймворк за написване на собствени процеси за непрекъсната интеграция. Първоначалната настройка на инструмента е доста сложна, но това се компенсира с широките възможности за персонализация. Сред предимствата на фреймворка потребителите подчертават ниската му ресурсна консумация.
  • Concourse CI — сървър от Pivotal, който използва Docker контейнери. Concourse CI се интегрира с всякакви инструменти и системи за контрол на версиите. Разработчиците отбелязват, че системата е подходяща за работа в компании от всякакъв размер.
  • Gitlab CI — инструмент, вграден в системата за контрол на версиите GitLab. Сервисът работи в облака и използва YAML файлове за конфигурация. Както и Concourse, Gitlab CI прилага Docker контейнери, които помагат да се изолират различни процеси помежду си.
  • Codeship — облачен CI-сервер, който работи с GitHub, GitLab и BitBucket. Платформата не изисква дълга начална настройка — в Codeship са налични стандартни предварително зададени CI-процеси. За малки (до 100 сборки на месец) и open source проекти, Codeship е безплатен.

Материали от нашия корпоративен блог:

Източник: habr.com

Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри 🔥 Купете надежден хостинг за сайтове с защита от DDoS, VPS VDS сървъри | ProHoster