telegram: @irkatyman
Вам необходимо форкнуть этот репозиторий и добавить:
✔️ Также вам будет нужно настроить виртуальную машину в Яндекс Облаке и Container Registry, для этого вам выдадут промокоды на 1500 рублей. IP-адрес этой машинки укажите в README, чтобы проверяющий мог открыть приложение, которое будет на ней запущено.
Репозиторий, который вы форкнули, должен быть публичным и настроен таким образом, чтобы никто не могу пушить ветку main
, но любой человек мог:
✔️ В файле ./src/client/pages/About.tsx
замените [Your Name]
на своё имя и поправьте тест, которы проверяет содержимое этой строчки.
Вам необходимо подготовить Dockerfile и добавить скрипты в package.json
для работы с Docker-образами.
Скрипт:
build:docker
— собирает образ (с тегом shir-infra
), который будет запускать приложениеstart:docker
— запускает последний собранный образа с тегом shri-infra
на 3000 портуСоздайте виртуальную машину (Compute Cloud), воспользовавшись инструкцией по ссылке:\ https://yandex.cloud/ru/docs/compute/quickstart/quick-create-linux#create-vm
Рекомендуемые параметры:
В итоге должно получиться чуть меньше 2 200 рублей в месяц — на две недели выполнения и проверки задания должно хватить.
✔️ Флоу с проверками, который запускается при создании / изменении PR:
✔️ запускает параллельно линтер через npm run lint
и тесты через npm run test
✔️ нужно настроить ограничение на мердж изменений, если проверки не прошли
✔️ Флоу создания релиза, который запускается вручную (on: [workflow_dispatch]
):
✔️ запускает параллельно линтер и тесты
✔️ здесь и дальше версией релиза будет считаться номер запуска флоу ${{ github.run_number }}
✔️ отводит от main
релизуню ветку releases/<версия_релиза>
✔️ собирает docker-образ с двумя тегами тегами:
cr.yandex/<идентификатор_реестра>/app:<версия_релиза>
cr.yandex/<идентификатор_реестра>/app:<версия_релиза>_latest
✔️ загружает docker-образ в Container Registry (необходимо, чтобы реджистри отображались оба тега)
✔️ создаёт тег, с номером текущей версии, который указывает на последний коммит в главной ветке
✔️ создаёт Issue в GitHub, которое содержит всю важную информацию:
${{ github.run_number }}
),cr.yandex/<идентификатор_реестра>/app:<версия_релиза>
❌ обновляет файл CHANGELOG.md
в корне проекта, дописывает сверху новую версию в виде заголовка, а под ней — список коммитов от предыдущего релизного (или фиксрелизного) тега
✔️ Флоу фикса к релизу, который запускается вручную:
✔️ принимает на вход версию релиза и все действия выполняет в ветке этого релиза
✔️ запускает параллельно проверку типов и тесты
✔️ собирает docker-образ с двумя тегами:
cr.yandex/<идентификатор_реестра>/app:<версия_релиза>_fix<номер_запуска_фиксрелизного_флоу>
cr.yandex/<идентификатор_реестра>/app:<версия_релиза>_latest
✔️ загружает docker-образ в Container Registry (в реджистри должен появиться образ с двумя тегами, у старого образа тег latest пропадёт)
✔️ создаёт тег с номером текущего релиза + пометкой fix
и номером фикса
✔️ добавляет комментарий в Issue, который содержит:
cr.yandex/<идентификатор_реестра>/app:<версия_релиза>_fix<номер_запуска_фиксрелизного_флоу>
✔️ Флоу выкатки релиза в прод
✔️ принимает на вход версию релиза
✔️ проверяет, что существует образ в Container Registry с тегом <версия_релиза>_latest
✔️ в Issue добавьте комментарий о том, что релиз выкачен в прод c датой и человеком, который запустил выкатку в прод
# установите зависимости
npm ci
# соберите клиентский код приложения
npm run build
# запустите сервер
npm start
После этого можете открыть приложение в браузере по адресу http://localhost:3000/hw/store