https://github.com/candygoose/server_with_ci
https://github.com/candygoose/server_with_ci
Last synced: 5 months ago
JSON representation
- Host: GitHub
- URL: https://github.com/candygoose/server_with_ci
- Owner: CandyGoose
- Created: 2024-12-09T21:22:11.000Z (about 1 year ago)
- Default Branch: main
- Last Pushed: 2024-12-09T22:07:45.000Z (about 1 year ago)
- Last Synced: 2025-04-05T03:45:01.943Z (9 months ago)
- Language: HTML
- Size: 13.7 KB
- Stars: 0
- Watchers: 1
- Forks: 0
- Open Issues: 0
-
Metadata Files:
- Readme: README.md
Awesome Lists containing this project
README
В этом задании вы должны будете написать небольшой сервис и настроить в нем ci+cd.
#### Требования
1) Нужно написать CRUD (аббревиатура от Create Read Update Delete) приложение: небольшое хранилище заметок(требования к нему - ниже)
2) Написать тесты на ваше приложение(требуемое покрытие - 20%)
3) Настроить CI/CD
В конце я буду проверять:
* Ваше приложение доступно из интернета
* Приложение работает согласно требованиям
* У вас есть CI, он работает корректно
* В CI настроены 3 джобы: build (проверяет что ваш код билдится), test (гоняет по вашему коду тесты и проверяет, что они успешно проходят), lint (гоняет линтеры по вашему коду)
* По умолчанию в golangci-lint использовано 10 линтеров.
Создайте свой конфигурационный файл, и включите помимо 10 дефолтных,
еще 15 наиболее полезных на ваш взгляд линтеров (полный список линтеров тут )
* При мерже/пуше в мастер должна срабатывать 4ая джоба: deploy, которая будет раскладывать ваше приложение на сервер
#### Требования к приложению
Здесь требования к вашему приложению, что вы будете деплоить на сервер.
Приложение небольшое и несложное, основная задача дз будет именно в ci/cd.
Хранить данные можно в памяти.
Оперировать нужно сущностью Note с полями:
* ID - число, инкрементальный ID
* Text - строка, текст заметки
* CreatedAt - время создания(изменяется только бекендом, с клиента не передаем)
* UpdatedAt - время последнего обновления(изменяется только бекендом, с клиента не передаем)
Ваше приложение должно принимать и отвечать в только в json формате. Также оно должно удовлетворять следующей апишке:
* GET /note/{id} - получить Note по id
* POST /note - создать Note
* PUT /note/{id} - изменить Note по id
* DELETE /note/{id} - удаляем Note по id
* GET /note - получить список Note, запрос должен уметь обрабатывать query-параметр: order_by("id","text","created_at","updated_at"), который указывает, что перед отдачей список нужно отсортировать по такому-то полю