Що таке CI/CD? Безперервна інтеграція та безперервна доставка
Що таке безперервна інтеграція (CI)?
Безперервна інтеграція це метод розробки програмного забезпечення, за якого члени команди об’єднують свою роботу принаймні раз на день. У цьому методі кожна інтеграція перевіряється автоматичною збіркою для виявлення помилок. Ця концепція була вперше представлена більше двох десятиліть тому, щоб уникнути «інтеграційного пекла», яке трапляється, коли інтеграція відкладається до кінця проекту.
У безперервній інтеграції після фіксації коду програмне забезпечення створюється та тестується негайно. У великому проекті з багатьма розробниками коміти виконуються багато разів протягом дня. З кожним комітом створюється та тестується код. Якщо тест пройдено, збірка перевіряється для розгортання. Якщо розгортання вдалось, код надсилається до виробництва. Ця фіксація, збірка, тестування та розгортання є безперервним процесом, і тому назва безперервної інтеграції/розгортання.
Що таке безперервна доставка (CD)?
Безперервна доставка це метод розробки програмного забезпечення, при якому команда розробляє програмні продукти за короткий цикл. Це гарантує, що програмне забезпечення можна легко випустити в будь-який час. Основна мета безперервного постачання — створювати, тестувати та випускати програмне забезпечення з хорошою швидкістю та частотою. Це допомагає вам зменшити вартість, час і ризики внесення змін, дозволяючи часті оновлення в робочому стані.
Яка різниця між CI та CD?
Розробка без CI проти розробки з CI
Ось основні відмінності між розробкою з використанням CI та без CI:
Розробка без КІ | Розробка з CI |
---|---|
Багато помилок | Менше помилок |
Нечасті коміти | Регулярні коміти |
Рідкісні та повільні випуски | Регулярні робочі випуски |
Складна інтеграція | Легка та ефективна інтеграція |
Тестування відбувається із запізненням | Безперервне тестування інтеграції відбувається рано та часто. |
Порушену проблему важче виправити | Знаходьте та вирішуйте проблеми швидше та ефективніше. |
Погана видимість проекту | Краща видимість проекту |
Різниця між компіляцією та безперервною інтеграцією

Хоча компіляція компілює лише код, CI виконує наступні дії
Інтеграція БД
- Переконайтеся, що БД і код синхронізовані
- Автоматизоване створення БД і тестових даних.
Перевірка коду
- Забезпечує здорову кодову базу
- Виявляє проблеми на ранній стадії та застосовує найкращі практики
Автоматичне розгортання
- Дозволяє випустити продукт у будь-який час
- Постійно демо-стан, і він працює на будь-якій машині
Формування документа
- Переконайтеся, що документація актуальна
- Видаляє спалені від розробника
- Створює звіти про збірку та показники
Compilation
Компіляція — це процес, який виконує комп’ютер для перетворення коду мови програмування високого рівня на машинну мову, яку комп’ютер може зрозуміти. Це забезпечує компілятор коду на кожній цільовій платформі.
Коли я буду будувати?
- При кожному заїзді
- Щоразу змінюється залежність
Які етапи постійної інтеграції?

- В ідеалі збірка має виходити з командного рядка і не повинна залежати від інтегрованого середовища розробки (IDE).
- Збірка має відбуватися постійно з використанням виділеного сервера Cl, а не завдання cron.
- Побудований CI має запускатися під час кожної реєстрації, а не лише опівночі
- Збірка має забезпечувати негайний відгук і не потребувати зусиль розробника
- Визначте ключові показники та відстежуйте їх візуально. Що ще важливіше, діяти на них негайно
Що вам потрібно для проведення процесу CI?
Ось ключові елементи, необхідні для виконання всього процесу CI:
- Система контролю версій (VCS): Він пропонує надійний метод централізації та збереження змін, внесених у ваш проект з часом.
- Віртуальна машина: Ви повинні мати запасний сервер або хоча б один віртуальна машина щоб створити вашу систему.
- Розміщені інструментальні рішення CI: Щоб уникнути серверів або віртуальних машин, вам слід вибрати розміщені рішення інструментів CI. Цей інструмент допомагає підтримувати весь процес і пропонує легшу масштабованість.
- Інструменти: Якщо ви виберете варіант із власним розміщенням, вам потрібно буде встановити один із багатьох Інструменти CI як Дженкінс, TeamCity, Bamboo, GitLab тощо.
Як працює безперервна інтеграція?
Ви напевно знаєте про старий телефон Nokia. Раніше Nokia реалізувала процедуру під назвою нічна збірка. Після кількох комітів від різних розробників протягом дня програмне забезпечення збиралося щовечора. Оскільки програмне забезпечення створювалося лише раз на день, ізолювати, ідентифікувати та виправляти помилки у великій кодовій базі – це дуже важко.
Later, вони прийняли підхід безперервної інтеграції. Програмне забезпечення було створено та протестовано, щойно розробник зафіксував код. Якщо буде виявлено будь-яку помилку, відповідний розробник може швидко виправити її.

Особливості КІ
Ось важливі функції та переваги безперервної інтеграції:
- Дозволяє підтримувати лише одне сховище джерел
- Ви можете протестувати клон робочого середовища CI
- Забудоване середовище має бути близьким до виробничого середовища.
- Однією з переваг постійної інтеграції є постійна доступність поточної збірки
- Повний процес збірки, тестування та розгортання має бути видимим для всіх власників стека.
Навіщо використовувати CI?
Ось важливі причини використання безперервної інтеграції:
- Допомагає створювати якісніше програмне забезпечення
- Процес CI допомагає збільшити чисельність персоналу та продуктивність команд інженерів.
- CI дозволяє розробникам програмного забезпечення працювати незалежно над функціями паралельно.
- Допомагає проводити повторюване тестування
- Збільшення видимості, що забезпечує більшу комунікацію
- Допомагає розробити потенційно придатний для доставки продукт для повністю автоматизованого збирання
- Допомагає зменшити ризики, роблячи розгортання швидшим і передбачуванішим
- негайний зворотний зв'язок, коли надходить проблема
- Уникайте плутанини в останню хвилину щодо дати та часу випуску
Найкращі практики використання CI Systems
Ось кілька важливих передових практик під час впровадження
- Робіть рано і часто ніколи не фіксуйте зламаний код
- Негайно виправляйте помилки збірки
- Дійте за показниками
- Вбудовуйте кожне цільове середовище Створюйте артефакти з кожної збірки
- Створення програмного забезпечення має здійснюватися таким чином, щоб його можна було автоматизувати
- Не залежать від IDE
- Створюйте та тестуйте все, коли воно змінюється
- Схема бази даних вважається всім
- Допомагає вам знайти ключові показники та відстежувати їх візуально
- Заїзд часто і рано
- Сильніший контроль вихідного коду
- Безперервна інтеграція запускає модульні тести кожного разу, коли ви фіксуєте код
- Автоматизуйте збірку та протестуйте всіх
- Зберігайте швидку збірку завдяки автоматичному розгортанню
Недоліки КІ
Ось мінуси/недоліки процесу безперервної інтеграції:
- Для ознайомлення з сервером Cl потрібен час початкового налаштування та навчання
- Важливо розробити відповідні процедури тестування
- Добре розроблений тестовий пакет вимагав багато ресурсів для Cl-сервера
- Перетворення знайомих процесів
- Потрібні додаткові сервери та середовища
- Час очікування може виникнути, коли кілька розробників хочуть інтегрувати свій код приблизно в один і той же час
Інструменти для процесу CI
Ось кілька найважливіших інструментів CI/CD:
Дженкінс
Дженкінс це програмне забезпечення постійної інтеграції з відкритим кодом. Він написаний за допомогою Java мова програмування. Це полегшує тестування в режимі реального часу та звітування про окремі зміни у більш масивній кодовій базі. Це програмне забезпечення допомагає розробникам швидко знаходити та вирішувати дефекти в кодовій базі та автоматизувати тестування збірок.
Bamboo
Bamboo це безперервний сервер збірки інтеграції, який виконує автоматичне збирання, тестування та випуски в одному місці. Він без проблем працює з програмним забезпеченням JIRA та Bitbucket. Bamboo підтримує багато мов і технологій, таких як CodeDeply, Docker, Git, SVN, Mercurial, AWS і Amazon Відра S3.
TeamCity
TeamCity це сервер безперервної інтеграції, який підтримує багато потужних функцій. Він підтримує працездатність і стабільність сервера CI, навіть якщо збірки не запущені. Це забезпечує кращу якість коду для будь-якого проекту
Підсумки
- Визначення безперервної інтеграції: безперервна інтеграція – це метод розробки програмного забезпечення, за якого члени команди можуть інтегрувати свою роботу принаймні раз на день
- CI/CD означає поєднання безперервної інтеграції та безперервної доставки або безперервного розгортання.
- Розробка без CI створює багато помилок, тоді як розробка з CI створює менше помилок
- Важливими видами діяльності безперервної інтеграції є 1) інтеграція БД, 2) перевірка коду, 3) автоматичне розгортання, генерація документів і компіляція.
- Збірка має відбуватися постійно з використанням виділеного сервера Cl, а не завдання cron.
- Важливими елементами КІ є 1) Система контролю версій 2) Віртуальна машина 3) Рішення для хост-інструментів КІ 4) Інструменти
- Система безперервної інтеграції дозволяє підтримувати лише одне сховище джерел
- Процес CI/CD допомагає створювати якісніше програмне забезпечення
- Найважливіші найкращі практики Azure Безперервний процес інтеграції полягає в тому, щоб фіксувати на ранній стадії та часто ніколи не фіксувати зламаний код
- Основний недолік Конвеєр CI/CD процес полягає в тому, що добре розроблений набір тестів вимагав багато ресурсів для сервера Cl
- Дженкінс, Bambook і Team City є корисними AWS Continuous Інструменти інтеграції.