Ended 13 months ago
315 participants
156 submissions

MLOps 2023 Домашнее задание 3

Домашнее задание по третьей лекции

Отправка решений до 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, согласно описанию 

Cookies help us deliver our services. By using our services, you agree to our use of cookies.