Учебник: CI-пайплайн для Node.js
В этом учебнике вы создадите полноценный CI-пайплайн для Node.js-приложения: линтинг, тесты и сборка, запускаемые при каждом пуше в main и при pull request'ах.
Время: ~15 минут Цель экспорта: GitHub Actions
Что вы построите
Триггер: push в main / pull_request в main
│
▼
[Стейдж «Качество»] ──────────────────────────────┐
├── lint (ubuntu-latest) │
│ 1. Checkout │
│ 2. Установить Node.js 20 │
│ 3. npm ci │
│ 4. npm run lint │
│ │
└── test (ubuntu-latest) параллельно │
1. Checkout │
2. Установить Node.js 20 │
3. npm ci │
4. npm test -- --coverage │
│
▼ (только при успехе «Качества») ───────────────┘
[Стейдж «Сборка»]
└── build (ubuntu-latest)
1. Checkout
2. Установить Node.js 20
3. npm ci
4. npm run build
5. Загрузить артефактШаг 1 — Создать проект и пайплайн
- На панели управления нажмите Новый проект
- Назовите его
my-node-app, провайдер —github - Внутри проекта нажмите Новый пайплайн, назовите его
ci
Шаг 2 — Настроить триггер
Нажмите Триггер на панели инструментов. Настройте:
- Push → ветки:
main
TIP
Можно настроить несколько типов триггеров, сохранив пайплайн и обновив триггер снова. Или просто добавьте ветки pull_request в YAML после экспорта.
Шаг 3 — Добавить стейдж «Качество»
Кликните на холсте → Добавить стейдж → назовите Качество.
Дважды кликните по карточке Качество.
Добавить джоб lint
Нажмите Добавить джоб:
- Название:
lint - Runs on:
ubuntu-latest
Дважды кликните по lint и добавьте шаги:
Шаг 1 — Checkout
- Тип:
git/ Операция:checkout
Шаг 2 — Установить зависимости
- Тип:
shell_command/ Скрипт:npm ci
Шаг 3 — Линтинг
- Тип:
shell_command/ Скрипт:npm run lint
Вернитесь в вид стейджа через хлебные крошки.
Добавить джоб test
Нажмите Добавить джоб:
- Название:
test - Runs on:
ubuntu-latest
Дважды кликните по test и добавьте шаги:
Шаг 1 — Checkout
- Тип:
git/ Операция:checkout
Шаг 2 — Установить зависимости
- Тип:
shell_command/ Скрипт:npm ci
Шаг 3 — Запустить тесты с покрытием
- Тип:
test/ Фреймворк:jest(илиvitest) / Команда:npm test -- --coverage
Джобы lint и test не соединены ребром — они выполняются параллельно. ✓
Шаг 4 — Добавить стейдж «Сборка»
Вернитесь в вид пайплайна через хлебные крошки.
Кликните на холсте → Добавить стейдж → назовите Сборка.
Соедините стейджи: наведите на Качество, захватите маркер правого края, перетащите к Сборке. Появится стрелка.
Дважды кликните Сборка. Добавьте джоб:
- Название:
build - Runs on:
ubuntu-latest
Добавьте шаги:
Шаг 1 — Checkout
- Тип:
git/ Операция:checkout
Шаг 2 — Установить зависимости
- Тип:
shell_command/ Скрипт:npm ci
Шаг 3 — Сборка
- Тип:
build/ Инструмент:npm/ Команда:npm run build
Шаг 5 — Сохранить и экспортировать
- Нажмите Сохранить (
Ctrl+S) - Нажмите Экспорт → выберите GitHub Actions → Скачать
Вы получите файл ci.yml.
Шаг 6 — Добавить в репозиторий
mkdir -p .github/workflows
cp ~/Downloads/ci.yml .github/workflows/ci.yml
git add .github/workflows/ci.yml
git commit -m "ci: добавить CI-пайплайн"
git push origin mainGitHub автоматически подхватит воркфлоу и запустит его при следующем пуше.
Результат: сгенерированный YAML GitHub Actions
name: ci
on:
push:
branches:
- main
jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run lint
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm test -- --coverage
build:
runs-on: ubuntu-latest
needs: [lint, test]
steps:
- uses: actions/checkout@v4
- run: npm ci
- run: npm run build