Документация проекта

Исследование данных тут: Data Analysis

Production

Build and run

  1. Нужно собрать docker образ:
make build-image
  1. Запустить docker контейнер с проектом:
make run-container

Development

Workflow

Данный репозиторий ведется по методологии Github flow:

  • Главная ветка - main.
  • Новые фичи разрабатываются в отдельных ветках.
  • Затем при необходимости делается Merge Request для запроса на слияние новой ветки с главной веткой main.
  • Проводится Code Review нового кода, все замечания указываются в самом Merge Request'e на gitlab'e.
  • После Code Review, если не нужно больше ничего исправлять, выполняется Merge.
  • Если новая ветка слита с main, после этого ее можно удалить.

Environment

Installation

В данном проекте используется пакетный менеджер miniconda, его установка описана на офф.сайте.

Все необходимые пакеты для разработки прописаны в environments/dev.yml. 1. Для создания новой conda среды со всеми необходимыми зависимостями нужно запустить следующую команду:

make install-env
  1. Далее активировать dev среду:
conda activate mlops-dev
  1. Далее нужно инициализировать pre-commit:
pre-commit install

New dependencies

Новые зависимости можно добавлять с помощью conda либо pip.

Далее их нужно зафиксировать в environments/dev.yml файле следующей командой:

make export-env

Для prod среды нужно скопировать новые зависимости из environments/dev.yml в environments/prod.yml.

Code linters

Для поддержания чистоты кода используются следующие линтеры и форматтеры:

  • isort - для проверки и исправления порядка импортируемых в каждом файле библиотек и модулей.
  • black - для проверки и исправления кода под стандарт PEP-8.
  • mypy - для нахождения ошибок несоответствия типов в коде.

Для применения линтеров и форматтеров:

make lint

Также во время commit’a код прогоняется через линтеры и форматтеры автоматически, благодаря pre-commit’у, и в случае несоответствия кода появятся warning’и, и некоторые несоответствия форматтеры исправляют сами.

Configuration

Файл конфигурации pre-commit'a: .pre-commit-config.yaml. В нем прописаны используемые линтеры и форматтеры.

Настройки самих линтеров и форматтеров прописаны в pyproject.toml файле.

Gitlab CI

Этапы в CI:

  1. docker - Сборка docker образа и его публикация в Container Registry gitlab’a.
  2. linting - Проверка кода с помощью линтеров.
  3. build - Сборка и публикация python пакета в Package Registry.
  4. pages - Рендер документации с помощью quarto.