Какво е CI/CD? Непрекъсната интеграция и непрекъсната доставка
Какво е непрекъсната интеграция (CI)?
Непрекъснато интегриране е метод за разработка на софтуер, при който членовете на екипа интегрират работата си поне веднъж на ден. При този метод всяка интеграция се проверява от автоматизирана компилация за откриване на грешки. Тази концепция беше въведена за първи път преди повече от две десетилетия, за да се избегне „адът на интеграцията“, който се случва, когато интеграцията се отложи до края на даден проект.
При непрекъсната интеграция след ангажиране на код софтуерът се изгражда и тества незабавно. В голям проект с много разработчици ангажиментите се правят много пъти през деня. С всеки комит кодът се изгражда и тества. Ако тестът е преминат, компилацията се тества за внедряване. Ако внедряването е успешно, кодът се насочва към Производство. Това ангажиране, изграждане, тестване и внедряване е непрекъснат процес и оттук идва и името непрекъсната интеграция/разгръщане.
Какво е непрекъсната доставка (CD)?
Continuous Delivery е метод на софтуерно инженерство, при който екип разработва софтуерни продукти в кратък цикъл. Той гарантира, че софтуерът може лесно да бъде пуснат по всяко време. Основната цел на непрекъснатото доставяне е изграждане, тестване и пускане на софтуер с добра скорост и честота. Помага ви да намалите разходите, времето и риска за доставяне на промени, като позволява чести актуализации в производството.
Каква е разликата между CI и CD?
Разработка без CI срещу разработка с CI
Ето основните разлики между разработката с помощта на CI или без CI:
Разработка без CI | Разработка с CI |
---|---|
Много бъгове | По-малко грешки |
Редки ангажименти | Редовни ангажименти |
Редки и бавни освобождавания | Редовни работни издания |
Трудна интеграция | Лесна и ефективна интеграция |
Тестването става късно | Непрекъснатото тестване на интеграцията се извършва рано и често. |
Повдигнатите проблеми са по-трудни за коригиране | Откривайте и отстранявайте проблеми по-бързо и по-ефективно. |
Лоша видимост на проекта | По-добра видимост на проекта |
Разлика между компилация и непрекъсната интеграция
Докато компилацията компилира само код, CI извършва следните дейности
DB интеграция
- Уверете се, че DB и кодът са в синхрон
- Автоматизирано създаване на БД и тестови данни.
Проверка на кода
- Осигурява здрава кодова база
- Идентифицира проблемите рано и прилага най-добрите практики
Автоматизирано внедряване
- Позволява ви да пуснете продукт по всяко време
- Непрекъснато състояние с възможност за демонстрация и работи на всяка машина
Генериране на документи
- Уверете се, че документацията е актуална
- Премахва изгореното от разработчика
- Създава отчети за изграждане и показатели
Компилация
Компилацията е процесът, който компютърът предприема, за да преобразува код на език за програмиране от високо ниво в машинен език, който компютърът може да разбере. Той осигурява компилатор на код на всяка целева платформа.
Кога да строя?
- При всяко настаняване
- Всеки път, когато зависимостта се променя
Какви са стъпките в непрекъснатата интеграция?
- В идеалния случай изграждането трябва да идва от командния ред и не трябва да зависи от интегрирана среда за разработка (IDE).
- Изграждането трябва да се извършва непрекъснато, като се използва специален Cl сървър, а не задача на cron.
- Изграденият CI трябва да се задейства при всяко настаняване, а не само в полунощ
- Изграждането трябва да предоставя незабавна обратна връзка и да не изисква усилия от страна на разработчиците
- Идентифицирайте ключовите показатели и ги проследявайте визуално. По-важното е да действате незабавно спрямо тях
Какво ви е необходимо, за да проведете CI процес?
Ето ключовите елементи, от които се нуждаете, за да изпълните целия процес на CI:
- Система за контрол на версиите (VCS): Той предлага надежден метод за централизиране и запазване на промените, направени във вашия проект във времето.
- Виртуална машина: Трябва да имате резервен сървър или поне един виртуална машина да изградите вашата система.
- Решения за хоствани CI инструменти: За да избегнете сървъри или виртуални машини, трябва да изберете хоствани решения за CI инструменти. Този инструмент помага при поддръжката на целия процес и предлага по-лесна мащабируемост.
- Инструменти: Ако изберете самостоятелно хостван вариант, ще трябва да инсталирате един от многото CI инструменти като Дженкинс, TeamCity, Bamboo, GitLab и др.
Как работи непрекъснатата интеграция?
Със сигурност знаете за стария телефон Nokia. Nokia прилагаше процедура, наречена nightly build. След множество ангажименти от различни разработчици през деня, софтуерът се изграждаше всяка вечер. Тъй като софтуерът е създаден само веднъж на ден, е огромна болка да се изолират, идентифицират и поправят грешките в голяма кодова база.
Later, те възприеха подхода за непрекъсната интеграция. Софтуерът е изграден и тестван веднага след като разработчикът е ангажирал код. Ако бъде открита грешка, съответният разработчик може бързо да коригира дефекта.
Характеристики на CI
Ето важни характеристики и предимства на непрекъснатата интеграция:
- Позволява ви да поддържате само едно хранилище на източника
- Можете да тествате клонинга на производствената CI среда
- Изградената среда трябва да е близка до производствената среда.
- Едно от предимствата на непрекъснатата интеграция е постоянната наличност на текуща компилация
- Пълният процес на изграждане, тестване и внедряване трябва да бъде видим за всички притежатели на стека.
Защо да използвате CI?
Ето важни причини за използването на непрекъсната интеграция:
- Помага ви да създадете по-качествен софтуер
- CI процесът помага за увеличаване на броя на служителите и изхода на инженерните екипи.
- CI позволява на разработчиците на софтуер да работят паралелно независимо върху функциите.
- Помага ви да провеждате повтарящи се тестове
- Увеличете видимостта, позволявайки по-добра комуникация
- Помага за разработването на потенциално транспортируем продукт за напълно автоматизирано изграждане
- Помага ви да намалите рисковете, като прави внедряването по-бързо и по-предвидимо
- незабавна обратна връзка при възникване на проблем
- Избягвайте объркване в последния момент относно датата и времето на пускане
Най-добри практики за използване на CI системи
Ето някои важни най-добри практики при внедряването
- Ангажирайте се рано и често никога не ангажирайте счупен код
- Незабавно коригирайте грешките при изграждането
- Действайте по показателите
- Вграждане във всяка целева среда Създавайте артефакти от всяка компилация
- Изграждането на софтуера трябва да се извърши по начин, който да може да бъде автоматизиран
- Не зависете от IDE
- Изградете и тествайте всичко, когато се промени
- Схемата на базата данни се брои за всичко
- Помага ви да откриете ключови показатели и да ги проследите визуално
- Настаняване често и рано
- По-силен контрол на изходния код
- Непрекъснатата интеграция изпълнява модулни тестове всеки път, когато ангажирате код
- Автоматизирайте изграждането и тествайте всички
- Поддържайте изграждането бързо с автоматизирано внедряване
Недостатъци на CI
Ето минусите/недостатъците на процеса на непрекъсната интеграция:
- Необходими са време за първоначална настройка и обучение, за да се запознаете с Cl сървъра
- Разработването на подходящи процедури за изпитване е от съществено значение
- Добре разработеният тестов пакет изисква много ресурси за Cl сървър
- Преобразуване на познати процеси
- Изисква допълнителни сървъри и среди
- Времена на изчакване могат да възникнат, когато няколко разработчици искат да интегрират своя код приблизително по едно и също време
Инструменти за CI процес
Ето някои от най-важните CI/CD инструменти:
Дженкинс
Дженкинс е софтуер за непрекъсната интеграция с отворен код. Написано е с помощта на Java програмен език. Той улеснява тестването в реално време и отчитането на изолирани промени в по-мащабна кодова база. Този софтуер помага на разработчиците бързо да откриват и разрешават дефекти в тяхната кодова база и да автоматизират тестването на своите компилации.
Bamboo
Bamboo е сървър за изграждане на непрекъсната интеграция, който изпълнява – автоматично изграждане, тестване и издания на едно място. Работи безпроблемно със софтуера JIRA и Bitbucket. Bamboo поддържа много езици и технологии като CodeDeply, Docker, Git, SVN, Mercurial, AWS и Amazon S3 кофи.
TeamCity
TeamCity е сървър за непрекъсната интеграция, който поддържа много мощни функции. Той поддържа CI сървър здрав и стабилен, дори когато не се изпълняват компилации. Осигурява по-добро качество на кода за всеки проект
Oбобщение
- Определение за непрекъсната интеграция: Непрекъснатата интеграция е метод за разработка на софтуер, при който членовете на екипа могат да интегрират работата си поне веднъж на ден
- CI/CD означава комбинация от непрекъсната интеграция и непрекъсната доставка или непрекъснато внедряване.
- Разработката без CI създава много грешки, докато разработката с CI предлага по-малко грешки
- Важни дейности на непрекъснатата интеграция са 1) интегриране на DB, 2) проверка на кода, 3) автоматизирано внедряване, генериране на документи и компилация.
- Изграждането трябва да се извършва непрекъснато, като се използва специален Cl сървър, а не задача на cron.
- Важни елементи на CI са 1) Система за контрол на версиите 2) Виртуална машина 3) Решения за CI инструмент за хост 4) Инструменти
- Системата за непрекъсната интеграция ви позволява да поддържате само едно хранилище на източника
- CI/CD процесът ви помага да създадете по-качествен софтуер
- Най-важните добри практики на Azure Непрекъснатият процес на интегриране е да се ангажирате рано и често никога да не ангажирате счупен код
- Основният недостатък на CI/CD тръбопровод процесът е, че добре разработеният тестов пакет изисква много ресурси за Cl сървър
- Дженкинс, Bambook и Team City са някои полезни AWS Continuous Инструменти за интегриране.