- Создается git тег с версией (например,
v2.1.0) - Тег пушится в GitHub (это обязательный шаг!)
- GitHub Actions автоматически запускается при пуше тега (workflow настроен на
tags: - 'v*') - Пакет собирается с помощью modern Python tools
- Загружается в PyPI с использованием API токена
- Создается GitHub Release с собранными файлами
Ключевой момент: Workflow запускается ТОЛЬКО при создании новых тегов, не при обычных коммитах в main ветку.
- Зайдите на PyPI и войдите в свой аккаунт
- Перейдите в Account settings → API tokens
- Нажмите Add API token
- Выберите Entire account (all projects)
- Скопируйте созданный токен (выглядит как
pypi-...)
- Перейдите в ваш GitHub репозиторий
- Нажмите Settings → Secrets and variables → Actions
- Нажмите New repository secret
- Создайте секрет с именем
PYPI_API_TOKENи значением вашего PyPI токена
- В том же разделе Secrets and variables → Actions
- Перейдите на вкладку Environments
- Нажмите New environment
- Назовите среду
pypi - В разделе Environment protection rules можете добавить правила (опционально)
Полный пример процесса для версии 2.1.0:
Обновите версию в pyproject.toml:
[project]
name = "onlinesimru"
version = "2.1.0" # Измените на новую версиюВажно: Версия теперь управляется только в pyproject.toml. Файл _version.py больше не используется.
Добавьте запись о новой версии в начало файла:
## [2.1.0] - 2025-08-10
### Added
- Новые функции
### Changed
- Изменения
### Fixed
- Исправленияgit add .
git commit -m "Bump version to 2.1.0"
git push origin mainВажно: Для каждой новой версии необходимо создавать новый git тег, так как GitHub Actions workflow запускается только при создании тегов.
./deploy.shЭтот скрипт:
- Создает git тег с версией (например,
v2.1.0) - Пушит тег в GitHub
- Запускает автоматическую публикацию через GitHub Actions
Альтернативно, можно создать тег вручную:
# Создать тег локально
git tag v2.1.0
# Запушить тег в GitHub
git push origin v2.1.0После пуша тега GitHub Actions автоматически запустит процесс публикации.
- Перейдите в Actions в вашем репозитории
- Найдите workflow Publish to PyPI
- Следите за выполнением шагов
- После успешной публикации автоматически создается Release
- Перейдите в Releases в вашем репозитории
- Скачайте собранные файлы
- Проверьте PyPI
- Убедитесь, что новая версия доступна
- 🔒 Безопасность: API токен хранится в GitHub Secrets
- 🤖 Автоматизация: Не нужно вручную собирать и загружать
- 🆕 Современность: Использует современные инструменты сборки
- 📝 Аудит: Все действия логируются в GitHub Actions
- 🎯 Контроль: Можно настроить правила для environment
- 🏷️ Теги: Четкая связь между git тегами и версиями PyPI
- Проверьте, что тег создан в правильном формате (
v*- например,v2.1.0) - Убедитесь, что тег запушен в GitHub - это критически важно!
- Проверьте, что тег создан для правильной версии в
pyproject.toml - Проверьте настройки в Settings → Actions → General
- Помните: workflow запускается только при создании новых тегов, не при коммитах
- Проверьте логи в GitHub Actions
- Убедитесь, что
PYPI_API_TOKENправильно настроен - Проверьте, что environment
pypiсоздан
- Проверьте синтаксис
pyproject.toml - Убедитесь, что все зависимости указаны правильно
- Проверьте, что Python версия совместима
Если нужно собрать пакет локально:
# Установить зависимости
pip install build twine
# Собрать пакет
python -m build --wheel --sdist
# Загрузить в PyPI (требует настройки ~/.pypirc)
python -m twine upload dist/*Теперь ваша публикация полностью автоматизирована! 🎉
Просто обновите версию, создайте тег через ./deploy.sh, и GitHub Actions сделает все остальное.