Различия между версиями 3 и 4
Версия 3 от 2023-05-16 14:51:02
Размер: 7139
Редактор: FrBrGeorge
Комментарий:
Версия 4 от 2023-05-18 17:05:31
Размер: 7378
Редактор: FrBrGeorge
Комментарий:
Удаления помечены так. Добавления помечены так.
Строка 46: Строка 46:
'''Проблема версионирования''': Классический релиз менеждмент с тегами (на пример, [[https://docs.github.com/en/repositories/releasing-projects-on-github|на GitHub]] vs `version = ` в `pyproject.toml` — синхронизация номера версии? '''Проблема версионирования''': Классический релиз менеждмент с тегами (например, [[https://docs.github.com/en/repositories/releasing-projects-on-github|на GitHub]] vs `version = ` в `pyproject.toml` — синхронизация номера версии?
Строка 52: Строка 52:
Кстати: [[https://www.gnu.org/software/libtool/manual/html_node/Updating-version-info.html|ро принципах версионирования]] ([[https://semver.org/lang/ru/|более солидный труд]] на тему)

Публикация и CI

Совсем немного про CI

Непрерывная_интеграция:

  • получение исходного кода из репозитория;
  • сборка проекта;
  • выполнение тестов;
  • развёртывание готового проекта;
  • отправка отчетов.

Обратите внимание: сборка проекта. Как следствие, инструменты сборки утекли с локальной машины на CI-платформу:

  • Возможность собирать под любую платформу

  • Возможность проводить полноценный деплоймент

Как следствие, «умные» инструменты автоматизации сборки типа Make уступили место простым очередям заданий

Пример проекта

Довольно извращённый модуль: Словарь с тегами

  • Используется GH Actions
    • Развертывание виртуальной машины с указанной ОС
    • Установка пакетов в ОС
    • Собственно действия — запуск команд shell
      • Дополнительная настройка (например, pip install)
      • Собственно тестирование / сборка / и т. п.
  • Сценарий (т. н. manifest) с описанием всего этого

  • Манифест может активизироваться вручную или по событию (например, просто при каждом push, на каждый новый тег, только на подписанный тег и т. п.).
  • Могут получаться т. н. «артефакты», их можно публиковать

Публикация на PyPi

В действительности ничего свыше методички на PyPA не требуется:

  • Необходимо создать исходный и бинарный дистрибутивы со всеми нужными полями в заголовке, лицензией и т. п.
  • Публикация происходит с помощью специального инструмента — twine

    • Вместо логина надо указывать слово __token__, вместо пароля — выданный вам ключ.

    • Этот же ключ могут использовать и роботы CI, <!> но очень важно не пропалить его!

    • Можно использовать $HOME/.pypirc

  • Немедленно после успешной публикации модуль можно устанавливать!
  • <!> на PyPI нельзя выкладывать файл с одним и тем же именем повторно, даже если вы вообще удалили и завели заново соответствующий проект. Если хоть что-то поменяли — поднимайте номер версии.

  • README.md из дистрибутива можно использовать в качестве описания проекта, а вот другие файлы (например, картинки) — нет. Однако можно сослаться readthedocs.io!

Проблема версионирования: Классический релиз менеждмент с тегами (например, на GitHub vs version =  в pyproject.toml — синхронизация номера версии?

Кстати: ро принципах версионирования (более солидный труд на тему)

Публикация на readthedocs.io

Тут всё ещё проще! Достаточно, чтобы в вашем проекте выгонялась документация с помощью sphinx.

  • Залогиниться и указать репозиторий, из которого будет произведён экспорт
  • Документация будет пересоздана создана автоматически на база исходного репозитория (самому генерировать её не надо)
  • Если код написан так, что при выгонке документации требуется импортировать внешние модули, возможны ошибки (это тоже своего рода CI, но никто не будет ставить, допустим, matplotlib).
    • Пример того, как в проекте Pymunk на скорую руку понаделали мокеров вместо соответствующих модулей прямо в конфигурационном файле sphinx

  • Такую публикацию можно тоже подключить в CI
  • Пример для taggedict

  • Пример для эталонного пректа

Foreword

LecturesCMC/PythonDevelopment2023/14_PublicationCI (последним исправлял пользователь FrBrGeorge 2023-05-18 17:05:31)