Днес ще се обърнем към историята на термина, ще обсъдим предизвикателствата при внедряването на CI и ще представим няколко популярни инструмента, които могат да помогнат за работа с него.
/ Flickr / / / Фото изменено
Термин
Непрекъсната Интеграция (Continuous Integration) е подход за разработка на приложения, който включва често извършване на сборки на проекта и тестване на кода.
Целта и е да направи процеса на интеграция предсказуем и да открие потенциални грешки и бъгове на ранен етап, за да има повече време за тяхното поправяне.
Терминът Непрекъсната Интеграция се появява за пръв път през 1991 година. Той е въведен в употреба от създателя на UML (Grady Booch). Инженерът представя концепцията за CI като част от собствената си практика на разработка — . Той не е описал конкретни изисквания за непрекъсната интеграция. Но по-късно в книгата си «» той посочва, че задачата на методиката е да ускори издаването на «вътрешни релизи».
История
През 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 / /
Кой използва
Един от първите, които оцениха предимствата на методологията, са ИТ гигантите. Google непрекъсната интеграция от средата на 2000-те. CI е внедрена за решаване на проблем с забавянията в работата на търсачката. Непрекъснатата интеграция е помогнала бързо да се откриват и отстраняват проблеми. В момента CI използват всички подразделения на ИТ гиганта.
Непрекъснатата интеграция помага и на малки компании, а също така инструментите за CI се използват от финансови и медицински организации. Например, в Morningstar услугите за непрекъсната интеграция помогнаха да се поправят уязвимости с 70% по-бързо. А медицинската платформа Philips Healthcare успя да ускори тестването на актуализации два пъти.
Инструменти
Ето няколко популярни инструмента за CI:
- — една от най-популярните CI системи. Тя поддържа повече от хиляда плагина за интеграция с различни VCS, облачни платформи и други услуги. Jenkins се използва и от нас в 1cloud: инструментът . Той редовно проверява Git клон, предназначен за тестване.
- — python фреймворк за написване на собствени процеси за непрекъсната интеграция. Първоначалната настройка на инструмента е доста сложна, но това се компенсира с широките възможности за персонализация. Сред предимствата на фреймворка потребителите подчертават ниската му ресурсна консумация.
- — сървър от Pivotal, който използва Docker контейнери. Concourse CI се интегрира с всякакви инструменти и системи за контрол на версиите. Разработчиците отбелязват, че системата е подходяща за работа в компании от всякакъв размер.
- — инструмент, вграден в системата за контрол на версиите GitLab. Сервисът работи в облака и използва YAML файлове за конфигурация. Както и Concourse, Gitlab CI Docker контейнери, които помагат да се изолират различни процеси помежду си.
- — облачен CI-сервер, който работи с GitHub, GitLab и BitBucket. Платформата не изисква дълга начална настройка — в Codeship са налични стандартни предварително зададени CI-процеси. За малки (до 100 сборки на месец) и open source проекти, Codeship е безплатен.
Материали от нашия корпоративен блог:
Източник: habr.com
