Автоматическая публикация пакетов pip package по тегу git и создание github release

Github action для создания пакета PIP и создания Github release

Если у вас есть пакет PIP, то вам необходимо установить связь между версией исходных текстов и версией на pypi.org.

Для этого недостаточно просто записать git commit. Потому что вручную вы може опубликовать PIP версию в любой момент.

Один из подходов - использовать git tag, всегда публиковать на pypi только по тегу. Это обеспечит жесткую связь версии в git и на pypi.

Для этого можно использовать Github actions.

Что вы получите

Запуская ./verup.sh bug/feature/release

Адаптация под ваш проект

Как шаблон возьмите aioS3 repo.

activate.sh

Перед началом работы всегда запускайте

. ./activate.sh

Обратите внимание на первую . - она обеспечивает возможность активации виртуального окружения Python. Если окружение еще не существует, то скрипт его создаст.

Если вам необходимо обновить зависимости вы можете просто удалить окружение rm -r venv. При следующем запуске activate.sh оно вновь создастся с последними версиями зависимостей.

activate.sh также устанавливает ваш пакет в режиме разработчика pip install -e . так что то что выимпортируете будет текущей версией исходников.

Если вы, как и я, описываете зависимости в requirements.txt то вам ничего не нужно менять в этом файле.

Но не забудбте установить virtualenv необходимый для его работы.

setup.py

Вместо aios3 в строке from src.aios3 import version укажите название вашего пакета.

Свой пакет поместите в src/. PIP автоматически найдет все пакеты в каталоге src.

verup.sh

Используйте verup.sh для создания тегов с версиями, никогда не создавайте их вручную.

Версия состоит из трех цифр:

release.feature.bug

Например, для изменения последней запустите

./verup.sh bug

А для изменения первой

./verup.sh release

Этот скрипт также обновляет version.py. Вы можете этот модуль в своем приложении, чтобы показывать версию.

Также этот файл используется в setup.py для определения пуьликуемой на pypi.org версии.

Не забудьте поправить в VERSION_FILES в файле verup.sh пути к этому файлу. Если нужно создавать несколько файлов с версией (например, если у вас несколько пакетов в src/), то можно перечислить несколько путей, разделенных пробелами.

Github action .github/workflows/pip_publish.yml

В строке body: https://pypi.org/project/aios3/$/ измените aios3 на название вашего пакета.