Спроектируй CI/CD-пайплайн для {{platform}}.
Принципы
- Быстрый feedback: PR-чек ≤ 5 минут
- Параллель там где можно
- Кеширование зависимостей (caches существуют не зря)
- Прод-деплой только из main
Структура
on:
pull_request:
push:
branches: [main]
jobs:
# === Быстрые проверки параллельно ===
lint:
runs-on: ubuntu-latest
steps:
- checkout
- setup-node + cache
- npm ci
- npm run lint
typecheck:
steps:
- checkout
- setup-node + cache
- npm ci
- npx tsc --noEmit
test:
steps:
- checkout
- setup-node + cache
- npm ci
- npm test -- --ci
# === Сборка с артефактом ===
build:
needs: [lint, typecheck, test]
steps:
- checkout
- setup-node + cache
- npm ci
- npm run build
- upload-artifact dist/
# === Деплой ===
deploy-preview:
if: github.event_name == 'pull_request'
needs: [build]
steps:
- download-artifact
- deploy → preview URL
- comment на PR с URL
deploy-prod:
if: github.ref == 'refs/heads/main'
needs: [build]
steps:
- download-artifact
- deploy → production
- smoke-tests
- notify Slack
Best practices
Кеширование
- node_modules через
actions/cacheили встроенноеsetup-node@v4cache - Next.js
.next/cacheдля inc-builds - Docker layers если деплой через контейнер
Параллелизм
- lint / typecheck / test параллельно — независимы
- Не делай sequential там где можно parallel
Smoke tests после деплоя
- Health endpoint вернул 200?
- Главная страница отдаёт нужный заголовок?
- Если упало — автомат-rollback
Notifications
- Slack/Discord: успешный прод-деплой + ID коммита
- При ошибке: тег ответственного
- Не спамь — только важное
Secrets
- В platform-secret-store, не в YAML
- Минимум доступа на каждом шаге (least privilege)
- Production-секреты — отдельный набор, доступны только prod-deploy job
Branch protection
- Main: запрет прямого push
- Все статусы должны быть зелёными для мержа
- 1+ ревью
Что НЕ кладите в CI
- Долгие e2e (отдельный nightly run)
- Visual regression (отдельная категория, своя инфраструктура)
- Performance benchmarks (выделенный hardware)
Мониторинг самого CI
- Сколько в среднем длится PR-чек?
- Какие шаги flaky?
- Какие дорогие — оптимизируй
Анти-паттерны
- 30-минутный PR-чек — никто не дождётся
- Все секреты в одном env-блоке (даже когда не нужны)
- Деплой автоматом без human approval для критичных проектов
- Игнорирование красного билда "просто перезапусти"
Похожие промты
start / first-tasks
Скрипт для рутины: переименовать все файлы в папке
Самая частая первая автоматизация: «переименуй мне 200 фото в photo-01.jpg, photo-02.jpg…». Понимаешь силу скриптов.
beginnerstartscript
Открыть
Начальный20-30 мин
site / deploy
План деплоя нового проекта
Выбор хостинга, домены, переменные, превью-окружения, CDN, кеш — за один прогон.
deployinfrastructurehosting
Открыть
Средний30-60 мин
site / deploy
Мониторинг и алёрты
Что мерить, какие алёрты ставить, как не превратить on-call в ад.
monitoringobservabilityalerts
Открыть
Средний30-60 мин