GitHub Actions: свой первый CI за вечер
GitHub Actions за вечер: как настроить первый CI-пайплайн, автоматизировать тесты и сборку. Понятный разбор синтаксиса workflow с готовым конфигом для новичка.
Коротко. CI/CD автоматически проверяет и доставляет код. В GitHub Actions пайплайн — это YAML-файл в .github/workflows/, который запускается на события (push, pull request). За вечер реально настроить прогон тестов и линтера на каждый коммит — это уже сильный пункт в портфолио DevOps.
Что такое CI/CD и Actions
CI (Continuous Integration) — на каждый коммит автоматически собирать проект и гонять тесты, чтобы ломающие изменения ловились сразу. CD — автоматически доставлять рабочую версию на сервер. GitHub Actions — встроенный в GitHub инструмент, которому не нужен отдельный сервер.
Как устроен workflow
- workflow — весь сценарий (YAML-файл).
- on — событие-триггер (push, pull_request).
- job — задача, выполняется на раннере (виртуалке).
- step — шаг внутри job (команда или готовый action).
Первый пайплайн
Файл .github/workflows/ci.yml — тесты на каждый push:
name: CI
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: 20
- run: npm ci
- run: npm run lint
- run: npm test
Готово: теперь каждый коммит проверяется автоматически, а в PR видно, прошли ли тесты.
Добавляем деплой
Отдельный job, который запускается только после успешных тестов и только на ветке main:
deploy:
needs: test
if: github.ref == 'refs/heads/main'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: echo "здесь команды деплоя (ssh, docker push и т.п.)"
Секреты (ключи, пароли) храните в Settings → Secrets, а не в коде, и обращайтесь к ним через secrets.NAME.
Советы и ошибки
- ✅ Кэшируйте зависимости (actions/cache) — пайплайн быстрее.
- ✅ Разделяйте jobs: линт, тесты, сборка, деплой.
- ❌ Не кладите секреты в YAML открытым текстом.
- ❌ Не деплойте с любой ветки — ограничивайте условием if.
Частые вопросы
GitHub Actions бесплатны?
Для публичных репозиториев — да; для приватных есть бесплатный лимит минут. Для учебных проектов этого хватает.
Actions или GitLab CI?
Принципы одинаковые (YAML, jobs, steps). Освоив одно, легко перейти на другое. Берите то, где лежит ваш код.
Что показать в портфолио?
Репозиторий с рабочим CI: линт + тесты на каждый коммит и бейдж статуса в README.