Ответ
На последнем проекте использовали CI/CD pipeline на GitHub Actions. Основные этапы:
- Lint & Test – запуск ESLint, Prettier и юнит-тестов (Jest).
- Build – сборка проекта через Webpack.
- Deploy Preview – деплой на Vercel для ревью.
- Production Deploy – автоматический деплой в прод после мержа в
main.
Пример конфига:
name: CI/CD
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run lint
- run: npm test
Также был отдельный pipeline для e2e-тестов (Cypress) в GitLab.
Ответ 18+ 🔞
А, ну это же классика, блядь! На прошлом проекте у нас был вот этот вот CI/CD, на GitHub Actions, понимаешь? Всё по-взрослому, не хухры-мухры.
Слушай, а схема-то, в принципе, простая, но без неё — нихуя. Сначала, как честные ребята, мы Lint & Test гоняем. То есть, ESLint, чтобы код не выглядел как пиздец, Prettier, чтобы форматирование было не абы как, и Jest, чтобы наши юнит-тесты проверили, не насрали ли мы в логику где-нибудь. Без этого шага — вообще никуда, а то потом вылезет какая-нибудь хуйня и придётся всё ебашить с нуля.
Потом, если тесты не сдохли, идёт этап Build. Тут уже Webpack вступает в игру, собирает всё это добро в один красивый, оптимизированный комок. Если на этом этапе всё падает — значит, ты где-то совсем ебнулся, и пора пересматривать свою жизнь.
Дальше — красота! Deploy Preview. Автоматом заливается на Vercel, и любой желающий может посмотреть, что ты там наворотил, прямо вживую. Удобно же, блядь! Не надо никого ебать, чтобы он себе локально всё поднял.
И финальный аккорд — Production Deploy. Как только всё замержилось в main — всё, приехали. Автоматом летит в прод. Сидишь, пьёшь кофе, а система сама всё делает. Ёперный театр, вот это инженерия!
Вот, смотри, кусочек конфига, чтобы было понятнее, о чём я:
name: CI/CD
on: [push, pull_request]
jobs:
test:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v3
- run: npm ci
- run: npm run lint
- run: npm test
Видишь? Всё чётко и по полочкам. А ещё, представляешь, был отдельный, блядь, pipeline для e2e-тестов на Cypress, но тот уже в GitLab висел. Ну, чтобы совсем уже, сука, покрыть все фронты и спать спокойно. А то мало ли что, вдруг пользователь нажмёт не на ту кнопку и всё разъебётся?