Giter VIP home page Giter VIP logo

atmospherefortunate1yparking's Introduction

Лабораторная работа #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 ноября.

atmospherefortunate1yparking's People

Contributors

romanow avatar mrrvz avatar feokrat avatar ztsugumi avatar

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.