Теория пайплайнов
Пайплайн (pipeline) — это последовательность этапов (job’ов), которые выполняются при изменениях в репозитории.
Основные этапы пайплайна:
- ✅ Тесты — запуск unit/integration тестов
- 🧱 Сборка (build) — создание артефакта или docker-образа
- 🚀 Деплой (deploy) — загрузка артефакта на сервер, перезапуск сервиса
Какие ещё есть CI/CD инструменты
Существует множество CI/CD систем, каждая со своими особенностями:
- GitLab CI/CD — встроен в GitLab, удобен для проектов на GitLab
- Jenkins — гибкий, но требует самостоятельной установки и настройки
- CircleCI — облачный CI/CD с простой интеграцией
- Travis CI — раньше был популярен, сейчас теряет актуальность
- Bitbucket Pipelines — встроен в Bitbucket
👉 В этом интенсиве мы будем использовать GitHub Actions, так как:
- он уже встроен в GitHub
- прост в настройке
- хорошо подходит для обучения и практики
Пример реального CI/CD процесса
- Разработчик делает коммит и пушит в ветку
main - GitHub Actions запускает workflow:
- Устанавливает зависимости
- Запускает тесты
- Собирает Docker-образ
- Пушит его в Docker Hub
- Через SSH деплоит на сервер и перезапускает
docker-compose
.github/workflows/deploy.yml
name: CI/CD Pipeline
on:
push:
branches: [main]
jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- name: Setup Node.js
uses: actions/setup-node@v3
with:
node-version: '22'
- run: npm ci
- run: npm test
- run: docker build -t username/app .
- run: docker login -u ${{ secrets.DOCKER_USER }} -p ${{ secrets.DOCKER_PASS }}
- run: docker push username/app
- name: Deploy via SSH
uses: appleboy/ssh-action@v0.1.6
with:
host: ${{ secrets.HOST }}
username: ${{ secrets.USER }}
key: ${{ secrets.SSH_KEY }}
script: |
docker pull username/app
docker-compose up -dLast updated on