Ended 2 years 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, согласно описанию 

Our website uses cookies, including web analytics services. By using the website, you consent to the processing of personal data using cookies. You can find out more about the processing of personal data in the Privacy policy