В рамках первой лабораторной работы требуется написать простейшее веб приложение, предоставляющее пользователю набор операций над сущностью 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.
- При получении задания у вас создается fork этого репозитория для вашего пользователя.
- После того как все тесты успешно завершатся, в Github Classroom на Dashboard будет отмечен успешный прогон тестов.
- ❗️С конца ноября Heroku убирает Free Plan, останутся только платные подписки. В связи с этим, дедлайн по сдаче ЛР #1 10 ноября.