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 — це інвестиції у швидкість, якість та спокій вашої команди розробників.
WordPress роками був неперевершеним "монолітом": він відповідав і за зручну адмін-панель, і за збереження даних,…
У світі веб-серверів часто говорять про протистояння Nginx vs Apache. Але що, якби я сказав…
Коли я починав свій шлях у веб-розробці, питання "який веб-сервер використовувати?" практично не стояло. Відповідь…
Коли мова заходить про веб-сервери, два імені завжди на слуху: Apache та Nginx. Apache —…
У світі веб-розробки ми постійно стикаємося з проблемою: "А в мене на комп'ютері все працює!".…
На зорі моєї кар'єри веб-розробника все було відносно просто: встановив локальний сервер (пам'ятаєте Denwer?), поклав…