Проект в рамках курсов "Программирование на основе Классов и Шаблонов" и "Парадигмы и Конструкции Языков Программирования" (МГТУ им. Н. Э. Баумана, ИУ5, 2 и 3 семестры)
- Desktop: https://github.com/Yu-Leo/bmstu-cat-shelter-crm-desktop
- Mobile: https://github.com/Yu-Leo/bmstu-cat-shelter-crm-mobile
CRM-система для управления внутренней деятельностью кошачьего приюта.
OpenAPI спецификация:
Можно использовать: визуализация файла OpenAPI спецификации.
После запуска сервиса можно использовать Swagger UI: http://127.0.0.1:9000/swagger/index.html
.
- Инициализация БД
make init-db
1.1 Запуск локально на машине
make run
1.2 Запуск Docker-контейнере
make d-run
Структура проекта основана на go-clean-template.
make build
- сборкаmake init-db
- инициализация файла с БД (SQLite3)make run
- локальный запускmake d-run
- запуск в Docker-контейнереmake lint
- запуск линтераmake swag-init
- обновление Swagger-документацииmake mocks
- генерация моков для unit-тестовmake test
- запуск unit-тестовmake gotools
- установка вспомогательных инструментов (golangci-lint и mockery)
Структура настроек описана в config/config.go
.
Значения параметров задаются в config/config.yaml
и в переменных окружения.
В качестве линтера используется golangci-lint. Конфиг задается в файле ./.golangci.yml.
Линтер запускается при помощи команды:
make lint
Для генерации моков используется mockery.
Unit-тесты запускаются при помощи команды:
make test
P.S. Поскольку на данном этапе развития проекта в нём отсутсвет как таковая бизнес-логика, которую необходимо было бы покрыть unit-тестами, написание необльшого кол-ва unit-тестов необходимо для выполнения учебных задач - изучения mockery и запуска тестов в GitHub Actions.
End-to-end тесты написаны на Python. Располагаются в директории ./e2e-tests
.
В пайплайне запускаются в Docker-контейнерах при помощи Docker Compose (конфиг).
В качестве инструмента для CI/CD используется GitHub Actions.
Инструкции описаны в файле ./.github/workflows/go.yml
.
На каждый push
в любой ветке запускается пайплайн, состоящий из следующих этапов:
- Сборка проекта
- Запуск линтера
- Запуск тестов
- Запуск unit-тестов
- Запуск e2e-тестов
- Язык программирования: Go (1.20)
- Фреймворки и библиотеки:
- СУБД: SQLite3
- Инструменты
- Docker и Docker compose
- make
- GitHub Actions