Днес ще се обърнем към историята на термина, ще обсъдим сложността на внедряването на 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 сървърът автоматично копира кодa с всички зависимости и извършва сборка. След това стартира интеграционни и юнит тестове. Ако тестовете преминат успешно, CI системата разгръща кода.
Общата схема на процеса може да бъде представена по следния начин:

Методологията на CI поставя редица изисквания към разработчиците:
- Незабавно да се поправят проблемите. Този принцип дойде в CI от екстремното програмиране. Поправянето на бъгове е най-приоритетната задача на разработчиците.
- Да се автоматизират процесите. Разработчиците и мениджърите трябва постоянно да търсят "тесни места" в процеса на интеграция и да ги отстраняват. Например, често "бутиличното гърло" на интеграцията тестуването.
- Да се провеждат сборки колкото се може по-често. Един път на ден, за да се синхронизира работата на екипа.
Трудности при внедряването
Проблемът е в високите оперативни разходи. Дори ако компанията използва отворени CI инструменти (за които ще говорим след малко), тя все пак ще трябва да похарчи пари за поддръжка на инфраструктурата. Въпреки това, облачните технологии могат да бъдат решението.
Те опростяват сборката на разнообразни компютърни конфигурации. Плюс компаниите само за използваните ресурси, което помага за спестяване на разходи за инфраструктура.
Според проучвания [стр.14 ], непрекъснатата интеграция увеличава натоварването на служителите на компанията (поне в началото). Те трябва да овладеят нови инструменти, а колегите не винаги помагат с обучението. Затова трябва да се справят с новите фреймворкове и услуги "на хода".
Третата трудност е свързана с автоматизацията. С нея се сблъскват организации с голям обем от наследен код, който не е покрит с автоматизирани тестове. Това води до ситуации, в които кодът просто се преписва преди пълното внедряване на 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
