amunra2 / rsoi-lab1-bmstu-iu7

Template repository for Homework #1 RSOI

Geek Repo:Geek Repo

Github PK Tool:Github PK Tool

Лабораторная работа #1

GitHub Classroom Workflow

Continuous Integration & Continuous Delivery

Формулировка

В рамках первой лабораторной работы требуется написать простейшее веб приложение, предоставляющее пользователю набор операций над сущностью Person. Для этого приложения автоматизировать процесс сборки, тестирования и релиза на Heroku.

Приложение должно реализовать API:

  • GET /persons/{personId} – информация о человеке;
  • GET /persons – информация по всем людям;
  • POST /persons – создание новой записи о человеке;
  • PATCH /persons/{personId} – обновление существующей записи о человеке;
  • DELETE /persons/{personId} – удаление записи о человеке.

Описание API в формате OpenAPI.

Требования

  • Исходный проект хранится на Github. Для сборки использовать только Github Actions.
  • Запросы / ответы должны быть в формате JSON.
  • Если запись по id не найдена, то возвращать HTTP статус 404 Not Found.
  • При создании новой записи о человека (метод POST /person) возвращать HTTP статус 201 Created с пустым телом и Header Location: /api/v1/persons/{personId}, где personId – id созданной записи.
  • Приложение должно содержать 4-5 unit-тестов на реализованные операции.
  • Приложение должно быть завернуто в Docker.
  • Деплой на Heroku реализовать средствами GitHub Actions, для деплоя использовать docker. Для деплоя нельзя использовать Heroku CLI или webhooks.
  • В build.yml дописать шаги на сборку, прогон unit-тестов и деплой на Heroku.
  • Приложение должно использовать БД для хранения записей.
  • В [inst][heroku] Lab1.postman_environment.json заменить значение baseUrl на адрес развернутого сервиса на Heroku.

Пояснения

  • Пример приложения на Kotlin / Spring.
  • Для локальной разработки можно использовать Postgres в docker, для этого нужно запустить docker compose up -d, поднимется контейнер с Postgres 13, будет создана БД persons и пользователь program:test.
  • После успешного деплоя на Heroku, через newman запускаются интеграционные тесты. Интеграционные тесты можно проверить локально, для этого нужно импортировать в Postman коллекцию lab1.postman_collection.json]) и environment [local] lab1.postman_environment.json.
  • Для поиска нужного инструмента для сборки используется Github Marketplace.
  • Пояснение как работает Heroku.
  • Для подключения БД на Heroku заходите через Dashboard в раздел Resources и в блоке Add-ons ищете Heroku Postgres. Для получения адреса, пользователя и пароля переходите в саму БД и выбираете раздел Settings -> Database Credentials.
  • ❗Heroku не позволяет регистрировать новых пользователей, поэтому для регистрации используйте VPN.

Прием задания

  1. При получении задания у вас создается fork этого репозитория для вашего пользователя.
  2. После того как все тесты успешно завершатся, в Github Classroom на Dashboard будет отмечен успешный прогон тестов.
  3. ❗️С конца ноября Heroku убирает Free Plan, останутся только платные подписки. В связи с этим, дедлайн по сдаче ЛР #1 10 ноября.

About

Template repository for Homework #1 RSOI