Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Latest commit

 

History

68 Commits

Folders and files

NameName
Last commit message
Last commit date
 
 
 
 
 
 
 
 
 
 

Repository files navigation

Uni DevOps Project

Учебный проект по DevOps, разработке и работе с базой данных PostgreSQL.

О проекте

Данный репозиторий содержит исходный код проекта, конфигурационные файлы, документацию и структуру базы данных.

Проект разрабатывается в рамках учебной работы и предназначен для демонстрации практических навыков:

  • работы с Git и GitHub;
  • организации структуры проекта;
  • работы с PostgreSQL;
  • управления конфигурацией приложения;
  • документирования API;
  • создания и хранения схемы базы данных;
  • базовых DevOps-практик.

Технологии

Основные технологии проекта:

  • Git — система контроля версий
  • GitHub — хранение и совместная работа с репозиторием
  • PostgreSQL 17 — система управления базами данных
  • Python — язык программирования проекта
  • .env — хранение локальных переменных окружения

API проекта

Описание

API проекта предоставляет интерфейс для взаимодействия клиентского приложения с серверной частью и базой данных PostgreSQL.

API используется для получения, создания, изменения и удаления данных приложения. Обмен данными между клиентом и сервером осуществляется в формате JSON по протоколу HTTP.

Основные операции

API поддерживает стандартные CRUD-операции:

  • GET — получение данных;
  • POST — создание новых записей;
  • PUT / PATCH — изменение существующих записей;
  • DELETE — удаление записей.

Формат запросов API

Запросы к API отправляются по HTTP.

Пример:

GET /api/objects

Beetles App — процесс разработки и выпуска

  1. Задача

Описать требование и ожидаемый результат. Определить критерии приемки. Оценить влияние на API, интерфейс и схему PostgreSQL.

  1. Изменение кода

Создать отдельную Git-ветку для изменения. Внести минимальные необходимые изменения. Если меняется схема БД, добавить миграцию Alembic. Не хранить пароли и секреты в Git

  1. Локальные проверки

Перед коммитом выполнить: Проверку стиля кода Ruff. Статический анализ безопасности Bandit. Unit- и интеграционные тесты pytest. Проверку покрытия тестами — не менее 40%. Проверку миграций и работоспособности приложения.

Изменение не принимается, если обязательные проверки не пройдены.

  1. Git

Создать ветку для задачи. Сохранить изменения в коммите. Отправить ветку в удаленный репозиторий. Не включать в Git .env, виртуальное окружение и резервные копии.

  1. CI

GitHub Actions автоматически устанавливает закрепленные зависимости и выполняет линтер, анализ безопасности и тесты. При ошибке проверки сборка считается неуспешной.

  1. Образ приложения

После успешного CI собрать Docker-образ с версией, привязанной к коммиту. Не публиковать образ из неуспешной сборки.

  1. CD

Развернуть проверенный образ в целевом окружении. Перед миграцией базы данных создать резервную копию. Секреты и настройки окружения передавать отдельно от образа.

  1. Проверка релиза

После развертывания проверить:

запуск приложения; подключение к PostgreSQL; доступность главной страницы; регистрацию и вход; основные операции с экспедициями и уловом; корректность миграций.

При критической ошибке остановить выпуск и выполнить откат по заранее подготовленному плану.

  1. Наблюдение

Проверять журналы приложения и ошибки PostgreSQL. Контролировать доступность API. Проверять успешность резервного копирования. Фиксировать инциденты и при необходимости возвращаться к предыдущему образу. Единая команда проверок

Перед каждым коммитом и изменением функциональности выполнять make verify. Все обязательные проверки должны завершиться успешно.

Структура проекта

uni-devops/
│
├── docs/
│
├── informal documentation/
│
├── lab1/
│   ├── beetles_app/
│   ├── .env.example
│   ├── .gitignore
│   ├── static/
│   │   ├── app.js
│   │   └── style.css
│   ├── templates/
│   │   ├── auth.html
│   │   └── index.html
│   └── README.md
│  
├── lab2/
│   ├── main.py
│   ├── database.py
│   ├── requirements.txt
│   ├── .gitignore
│   ├── static/
│   │   ├── app.js
│   │   └── style.css
│   ├── templates/
│   │   ├── auth.html
│   │   └── index.html
│   └── README.md
│
└── README.md

Правила внесения изменений

Работа с ветками

Изменения выполняются в отдельных ветках. Прямое внесение изменений в main не используется.

Для новой задачи необходимо создать ветку:

git switch main
git pull origin main
git switch -c feature/название-задачи

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages