Справка: как работи процесът на непрекъсната интеграция

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

Справка: как работи процесът на непрекъсната интеграция
/flickr/ Алтуг Каракоч / CC BY / Снимката е променена

Термин

Непрекъснатата интеграция е подход към разработването на приложения, който включва често изграждане на проекти и тестване на код.

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

Терминът непрекъсната интеграция се появява за първи път през 1991 г. Той е въведен от създателя на езика UML Грейди Бъч (Грейди Буч). Инженерът въведе концепцията за CI като част от собствената си развойна практика - Буч метод. Това предполагаше постепенно усъвършенстване на архитектурата при проектирането на обектно-ориентирани системи. Gradi не описва никакви изисквания за непрекъсната интеграция. Но по-късно в книгата му „Обектно-ориентиран анализ и проектиране с приложения„Той каза, че целта на методологията е да ускори пускането на „вътрешни версии“.

История

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

В началото на 2000-те един от основателите на Agile Alliance започва да популяризира методологията за непрекъсната интеграция Мартин Фаулър (Мартин Фаулър). Неговите експерименти с CI доведоха до първия софтуерен инструмент в тази област - CruiseControl. Помощната програма е създадена от колегата на Мартин, Матю Фомел.

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

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

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

Как работи

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

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

Справка: как работи процесът на непрекъсната интеграция

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

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

Трудности при внедряването

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

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

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

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

Справка: как работи процесът на непрекъсната интеграция
/flickr/ theilr / CC BY-SA

Кой използва

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

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

Инструменти

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

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

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

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

Добавяне на нов коментар