Континуираната интеграция (Continuous Integration - CI) и континуираната доставка
(Continuous Delivery - CD) са две ключови практики в разработката на софтуери. Континуираната интеграция (Continuous Integration - CI) е разработъчна практика в софтуерното инженерство, която се съсредоточава върху редовната интеграция на кода от различни разработчици в общ репозитори. Основната идея зад CI е да се минимизират конфликтите при сливане на код, като се извършва автоматична сборка и тестове на кода при всяка промяна, което помага да се открият и разрешат потенциални проблеми веднага. Програмистите редовно проверяват своя код в репозитория, а автоматизирани процеси на CI системи (като Jenkins, Travis CI, GitLab CI и др.) се стартират кога се додаде нов код. Тези CI процеси включват компилиране на кода, изпълнение на юнит тестове и интеграционни тестове, както и проверка на качеството на кода. Ако има някакъв проблем с интеграцията, отборът бързо се уведомява за това, което позволява бързи корекции.
Основният процес на CI включва следните стъпки:
Сливане на кода: Разработчиците правят промени в кода си и ги качват в
общия репозиторий.
Автоматична сборка: Система за CI автоматично извлича кода от репозитория
и го компилира
Автоматични тестове: След компилацията, CI системата изпълнява
автоматизирани тестове, които проверяват функционалността и стабилността на приложението.
Обратна връзка: Ако тестовете не минават успешно, отборът за разработка
бързо се информира за проблемите, което позволява на тях да ги отстранят. Интеграция в основната грана (master): След успешно преминаване на тестовете, промените се интегрират в основната грана на репозитория.
Предимствата на CI включват намаляване на времето за откриване и отстраняване
на проблеми в кода, намаляване на риска от конфликти при сливане и подобряване на качеството на софтуера. Тази практика също така помага да се насърчи по- бързото разработване и доставка на софтуерни продукти.
Континуираната доставка (Continuous Delivery - CD) е практика в софтуерното
инженерство, която цели да автоматизира процесите на доставка на софтуерни приложения до крайния потребител или до средата, където приложението ще бъде използвано. Основната цел на континуираната доставка е да се ускори и опрости процесът на доставка, като се гарантира възможността за бързо, безпроблемно и автоматизирано разпространение на софтуерни изменения. CD върви една стъпка напред след успешната CI практика, като позволява автоматична и честа доставка на функционалности до потребителите. След успешната интеграция на кода, CI системът може автоматично да стартира процеси на доставка, които включват тестване в реална среда, опаковане на приложението, деплоймент и др. Това позволява на екипите редовно да доставят ъпдейти и нови функционалности без много ръчно участие.
Основните етапи на процеса на континуирана доставка включват:
Сглобяване и Тестване: След успешното завършване на процеса на
континуирана интеграция (CI), който включва компилиране на кода и изпълнение на тестове, сглобеният софтуер е готов за доставка.
Автоматизирано Деплоиране: Софтуерът се автоматизира за деплоиране на
целевата среда, било то тестваща, стадийна или продукционна. Тестове на Средата: След деплоиране на приложението в целевата среда се изпълняват различни видове тестове, включително функционални тестове, интеграционни тестове, изпитване на производителността и други.
Окончателна Валидация и Утвърждаване: Ако всички тестове са успешни,
измененията се считат за одобрени и готови за използване.
Континуираната доставка осигурява постоянна итеративна разработка и доставка на
софтуер, като минимизира времето от идея до пускане на приложението на пазара. Това дава възможност за по-често и по-предсказуемо пускане на нови функции и подобрения за крайните потребители. В резюме, CI се отнася до практика, която се фокусира върху интеграцията на кода в общ репозитори и проверката на неговата функционалност, докато CD е разширение на тази практика, което позволява автоматична доставка на функционалности до потребителите.