Отправка решений до 10.05.2023 23:59 (мск)
!!! Репозиторий должен быть открытым, просьба проверить со стороннего аккаунта, иначе менторы не смогут проверить ваши задания!!!
1. Шаблонизация. Python пакеты и CLI. Snakemake – 5 баллов
- Создать структуру каталогов для своего DS проекта (можно опираться на шаблон Cookiecutter)
- Если вы планируете использовать собственный шаблон, разворачивая его при помощи Cookiecutter, рекомендуется создать под него отдельный репозиторий.
- Произвести рефакторинг своего кода, разбив его на отдельные логические .py модули
- Залить отдельным коммитом с соответствующим описанием в ваш репозиторий
Результат для проверки: структурированный по шаблону проект с правильной разбивкой кода по каталогам
2. Codestyle, инструменты форматирования, линтеры – 5 баллов
- Провести аудит кода своего проекта на соответствие PEP 8 и хорошим практикам codestyle
- Установить локально стилистический линтер (выбрать на свое усмотрение).
- Интегрировать линтер в свою IDE (если поддерживается)
- Провести ручное форматирование части проекта
- Проверить корректность форматирования установленным линтером и внести неучтенные ранее стилистические ошибки
- Установить и настроить (так, чтобы не было конфликтов с линтером) авто-форматер (на своё усмотрение). Предпочтительно интегрировать с IDE.
- Пользуясь авто-форматером и руками провести форматирование всего проекта для его соответствия codestyle и хорошим практикам
- Создать CI пайплайн и встроить в него линтер(ы). Желательно, чтобы осуществлялся контроль:
- стиля кода
- семантики (best practices)
- корректности типов
- Залить отдельным коммитом с соответствующим описанием в ваш репозиторий
Результат для проверки: соответствующий основным стандартам стилистики код в репозитории
3. Хранение и версионирование кода – 10 баллов
- Создать локальный репозиторий со своим проектом
- Настроить gitignore в соответствии со средой и технологическим стеком проекта
- Создать удаленный репозиторий (remote)
- Синхронизировать его с локальным через SSH
- Перенести в него свой проект
- Настроить репозиторий под github-flow:
- заблокировать main от прямых push
- запретить approve автором кода и коммита
- запретить merge без разрешения всех дискуссий
- Отработать github-flow
- Создать новую feature ветку и выполнить в нее коммит изменений
- Сделать Pull новой ветки в remote
- Инициировать merge/pull request
- Эмитировать code-review добавив комментарии
- Разрешить все комментарии
- Сделать approve merge request
- Удалить feature ветку
Повторить процесс с двумя ветками, намеренно создав конфликт и разрешить его
Результат для проверки:
- настроенный .gitignore файл
- заблокированный main от прямых push
- запретит на approve автором кода и коммита
- запретит на merge без разрешения всех дискуссий
- отработанный github-flow согласно описанию (проверяется по истории коммитов)
- описание проекта по ТЗ из домашнего задания №1 в виде wiki на странице репозитория
4. Gitlab CI – 10 баллов
- Настроить Gitlab CI, который срабатывает при pull-request в main:
- Настроить и подключить Runner
- Написать CI pipeline, включающий:
- Установку и кеширование зависимостей
- Раздел before-script
- Как минимум 2 stage и 2 скрипта
- Как минимум 2 линтеста
Результат для проверки: настроенные CI, согласно описанию