SebWeo.com
У сучасній розробці програмного забезпечення швидкість та надійність є вирішальними. Команди прагнуть випускати оновлення якомога частіше, але кожне ручне розгортання — це ризик помилки, стрес та втрачений час. Саме для вирішення цієї проблеми існують практики CI/CD.
Якщо ви вже розібралися, як керувати файлами та їхніми правами за допомогою команди chmod, то освоєння CI/CD стане вашим наступним великим кроком до професійного зростання у світі DevOps та розробки.
CI/CD — це абревіатура, що розшифровується як CI (Безперервна Інтеграція) та CD (Безперервна Доставка / Безперервне Розгортання). Це не один інструмент, а радше філософія та набір практик, спрямованих на автоматизацію процесу розробки, тестування та випуску програмного забезпечення.
Уявіть, що ви готуєте складну страву. Замість того, щоб змішати всі інгредієнти наприкінці, ризикуючи все зіпсувати, ви додаєте та перевіряєте кожен компонент поступово. CI/CD працює за схожим принципом: маленькі, часті та автоматизовані зміни.
Це практика, за якою розробники регулярно (кілька разів на день) зливають свої зміни коду в центральний репозиторій (наприклад, у гілку main на GitHub). Після кожного такого злиття автоматично запускається процес, який:
Якщо збірка або тести провалюються, система миттєво повідомляє команду. Це дозволяє швидко знаходити та виправляти помилки.
Це логічне продовження CI. Коли код успішно пройшов етап інтеграції (збірка та тести пройдені), він готовий до випуску. І тут CD має два варіанти:
Розглянемо найпростіший сценарій CI. У нас є проєкт на GitHub, і ми хочемо, щоб при кожному пуші в гілку main автоматично запускались тести.
Для цього ми створюємо у нашому репозиторії папку .github/workflows/ і в ній файл, наприклад, ci.yml.
# .github/workflows/ci.yml
name: Simple CI Pipeline
# Тригер: запускати при пуші в гілку main
on:
push:
branches: [ "main" ]
# Завдання, які потрібно виконати
jobs:
build-and-test:
# Тип віртуальної машини для запуску
runs-on: ubuntu-latest
# Кроки, які потрібно виконати
steps:
# 1. Крок: завантажити код з репозиторію
- name: Checkout code
uses: actions/checkout@v3
# 2. Крок: налаштувати середовище (наприклад, Node.js)
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
# 3. Крок: встановити залежності проєкту
- name: Install dependencies
run: npm install
# 4. Крок: запустити тести
- name: Run tests
run: npm test
Тепер, щоразу, коли хтось буде додавати код у гілку main, GitHub автоматично виконає всі ці кроки. Якщо npm test завершиться з помилкою, ви побачите червоний хрестик біля вашого коміту.
А тепер додамо до нашого прикладу крок CD. Припустимо, після успішного тестування ми хочемо автоматично опублікувати наш сайт на GitHub Pages.
# .github/workflows/ci-cd.yml
name: CI/CD Pipeline for Website
on:
push:
branches: [ "main" ]
jobs:
build-and-deploy:
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '18'
- name: Install dependencies
run: npm install
# Припустимо, у нас є скрипт для збірки сайту в папку 'dist'
- name: Build website
run: npm run build
# Новий крок: розгортання на GitHub Pages
- name: Deploy to GitHub Pages
uses: peaceiris/actions-gh-pages@v3
with:
github_token: ${{ secrets.GITHUB_TOKEN }}
# Папка, яку потрібно опублікувати
publish_dir: ./dist
З цим файлом процес повністю автоматизований: ви пишете код, робите git push, а через кілька хвилин ваш оновлений сайт вже доступний користувачам. Це і є магія CI/CD!
GitHub Actions — це лише один з багатьох інструментів. Ринок пропонує безліч рішень, кожне зі своїми особливостями:
Вибір інструменту залежить від вашої платформи для хостингу коду, бюджету та складності проєкту.
Впровадження CI/CD перетворює процес розробки з нервового та повільного на швидкий, прогнозований та надійний. Це дозволяє командам зосередитись на створенні якісного продукту, а не на рутинних операціях збірки та розгортання. Почати можна з простої автоматизації тестів, поступово розширюючи конвеєр до повного автоматичного розгортання. Тож, можна сказати, що інвестиції в CI/CD — це інвестиції у швидкість, якість та спокій вашої команди розробників.
У нашій подорожі світом сокетів ми почали з "верхнього поверху" — WebSocket у браузері, потім…
У попередній статті ми говорили про WebSockets — технологію, що дозволяє створювати інтерактивні чати в…
Шкіра немовляти – тонка та ніжна. Ще не справляється із захистом організму від зовнішніх факторів.…
Уявіть собі телефонну розмову. Ви дзвоните другу, він піднімає слухавку, і ви можете говорити одночасно,…
Довгий час планшети сприймалися виключно як пристрої для споживання контенту: подивитися YouTube, погортати стрічку новин…
Ви внесли правки в CSS, виправили критичний баг у JavaScript, завантажили файли на сервер і…