Автоматизация сборки

TODO Лекция слишком большая, надо распиливать. Видимо, какая-то сборка sdist/wheel останется тут, а вот что должно быть в них для деплоймента — уезжает на следующий раз; там же публикация в PyPI и публикация в Readthedocs…

Этапы формирования дистрибутива

Генераты не хранятся в репозитории, однако некоторые из них (например, документация, скомпилированные переводы и т. п.) используются при публикации.

Автоматизация сборки

Репозиторий с примером

Как понятие «сборка» стало «оркестрацией»

Как следствие: использование инструментов не по назначению:

Универсальный инструмент сборки

На примере DoIt

Сайт DoIt

В нашем случае нуждается в автоматизации:

Пример dodo.py

В целом те же проблемы: шумно из-за python вместо декларативного синтаксиса, внешние команды и т. п.), но

Сборка

Главная ссылка

Немного истории:

  1. Античность
  2. Distutils — встроенный в Python инструмент

  3. Появление Python Packaging Authority

  4. Появление других инструментов сборки: Poetry, pip-tools, PyBuilder и т. п.

    • ⇒ Введение нового уровня косвенности: pep-0517/pep-0518

      • Актуальная документация

      • Задание инструментов сборки
      • Декларативный синтаксис описания проекта
      • Метасборщик build

      • a. k. a. pyproject.toml/setup.cfg

      • Всё это в процессе разработки

Сборка бинарных и исходных дистрибутивов

Что умеет pip install:

Публиковать нужно и то, и то (лицензия, вопросы доработки и т. п.)

Пример: python -m build и что он создаёт

Пример

Модельный семестровый проект

Д/З

Обеспечить в семестровом проекте:

LecturesCMC/PythonDevelopment2022/11_AutomationBuild (последним исправлял пользователь FrBrGeorge 2022-04-26 21:21:05)