Skip to content

Commit 06fa0b5

Browse files
committed
update
1 parent fde525b commit 06fa0b5

File tree

3 files changed

+69
-15
lines changed

3 files changed

+69
-15
lines changed

.github/workflows/publish.yml

Lines changed: 6 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -9,7 +9,7 @@ jobs:
99
publish:
1010
runs-on: ubuntu-latest
1111
environment:
12-
name: pypi
12+
name: release
1313
url: https://pypi.org/p/onlinesimru
1414

1515
steps:
@@ -30,9 +30,13 @@ jobs:
3030
python -m build --wheel --sdist
3131
3232
- name: Publish to PyPI
33+
# Для настройки Trusted Publisher:
34+
# 1. Перейдите по ссылке из предупреждения в логах
35+
# 2. Войдите в PyPI как владелец пакета
36+
# 3. Подтвердите настройку Trusted Publisher
37+
# 4. Используйте среду 'release' (не 'pypi')
3338
uses: pypa/gh-action-pypi-publish@release/v1
3439
with:
35-
password: ${{ secrets.PYPI_API_TOKEN }}
3640
skip-existing: true
3741

3842
- name: Create Release

DEPLOYMENT.md

Lines changed: 61 additions & 10 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,14 @@
22

33
## 🚀 Автоматическая публикация в PyPI через GitHub Actions
44

5+
### 📦 Современные стандарты упаковки
6+
7+
Этот проект использует современные стандарты Python упаковки:
8+
- **pyproject.toml** вместо setup.py
9+
- **SPDX лицензии** вместо устаревших классификаторов
10+
- **Современные инструменты сборки** (build, twine)
11+
- **GitHub Actions** для автоматизации
12+
513
### Как это работает
614

715
1. **Создается git тег** с версией (например, `v2.1.0`)
@@ -15,16 +23,29 @@
1523

1624
### 📋 Предварительная настройка (только один раз)
1725

18-
#### Шаг 1: Создание API токена PyPI
26+
#### Шаг 1: Настройка Trusted Publisher (рекомендуется)
27+
28+
**Современный и безопасный способ:**
29+
30+
1. Запустите workflow в GitHub Actions (создайте тег)
31+
2. В логах найдите ссылку для создания Trusted Publisher
32+
3. Перейдите по ссылке и войдите в PyPI как владелец пакета
33+
4. Подтвердите настройку Trusted Publisher
34+
35+
**Альтернативный способ - API токен (устаревший):**
1936

2037
1. Зайдите на [PyPI](https://pypi.org/) и войдите в свой аккаунт
2138
2. Перейдите в **Account settings****API tokens**
2239
3. Нажмите **Add API token**
2340
4. Выберите **Entire account (all projects)**
2441
5. Скопируйте созданный токен (выглядит как `pypi-...`)
2542

26-
#### Шаг 2: Настройка GitHub Secrets
43+
#### Шаг 2: Настройка GitHub Secrets (только для API токенов)
44+
45+
**Если используете Trusted Publisher (рекомендуется):**
46+
- Секреты не нужны! 🎉
2747

48+
**Если используете API токен (устаревший способ):**
2849
1. Перейдите в ваш GitHub репозиторий
2950
2. Нажмите **Settings****Secrets and variables****Actions**
3051
3. Нажмите **New repository secret**
@@ -35,8 +56,9 @@
3556
1. В том же разделе **Secrets and variables****Actions**
3657
2. Перейдите на вкладку **Environments**
3758
3. Нажмите **New environment**
38-
4. Назовите среду `pypi`
59+
4. Назовите среду `release` (важно для Trusted Publisher!)
3960
5. В разделе **Environment protection rules** можете добавить правила (опционально)
61+
6. **Рекомендуется**: Настроить правила для защиты от случайной публикации
4062

4163
### 🔄 Процесс публикации новой версии
4264

@@ -121,14 +143,17 @@ git push origin v2.1.0
121143

122144
### ✅ Преимущества этого подхода
123145

124-
- 🔒 **Безопасность**: API токен хранится в GitHub Secrets
146+
- 🔒 **Безопасность**: Использует Trusted Publishers вместо API токенов
125147
- 🤖 **Автоматизация**: Не нужно вручную собирать и загружать
126-
- 🆕 **Современность**: Использует современные инструменты сборки
148+
- 🆕 **Современность**: Использует современные инструменты сборки и аутентификации
127149
- 📝 **Аудит**: Все действия логируются в GitHub Actions
128150
- 🎯 **Контроль**: Можно настроить правила для environment
129151
- 🏷️ **Теги**: Четкая связь между git тегами и версиями PyPI
152+
- 🚀 **Простота**: Не нужно управлять секретами и токенами
130153

131-
**⚠️ Важное напоминание**: Каждая новая версия требует создания нового git тега. Без тега workflow не запустится!
154+
**⚠️ Важное напоминание**:
155+
- Каждая новая версия требует создания нового git тега. Без тега workflow не запустится!
156+
- **Название среды должно быть `release`** (не `pypi`) для корректной работы с Trusted Publisher
132157

133158
### 🚨 Troubleshooting
134159

@@ -139,10 +164,18 @@ git push origin v2.1.0
139164
4. Проверьте настройки в **Settings****Actions****General**
140165
5. **Помните**: workflow запускается только при создании новых тегов, не при коммитах
141166

167+
#### Если возникают предупреждения при сборке:
168+
1. **Проверьте формат лицензии** в `pyproject.toml` - используйте простую строку `license = "Apache-2.0"`
169+
2. **Уберите устаревшие классификаторы лицензии** - они больше не нужны при использовании SPDX выражения
170+
3. **Обновите setuptools** до версии >=77.0.0 для лучшей поддержки современных стандартов
171+
142172
#### Если публикация в PyPI не удалась:
143173
1. Проверьте логи в GitHub Actions
144-
2. Убедитесь, что `PYPI_API_TOKEN` правильно настроен
145-
3. Проверьте, что environment `pypi` создан
174+
2. **Для Trusted Publisher**: Убедитесь, что Trusted Publisher настроен в PyPI
175+
3. **Для API токена**: Убедитесь, что `PYPI_API_TOKEN` правильно настроен
176+
4. **Проверьте, что environment `release` создан** (не `pypi`!)
177+
5. **Если используете Trusted Publisher**: Убедитесь, что workflow запущен из правильного репозитория
178+
6. **Проверьте название среды**: должно быть `release` в Trusted Publisher
146179

147180
#### Если пакет не собирается:
148181
1. Проверьте синтаксис `pyproject.toml`
@@ -160,17 +193,35 @@ pip install build twine
160193
# Собрать пакет
161194
python -m build --wheel --sdist
162195

163-
# Загрузить в PyPI (требует настройки ~/.pypirc)
196+
# Загрузить в PyPI
197+
# Для Trusted Publisher: используйте GitHub Actions (рекомендуется)
198+
# Для API токена: настройте ~/.pypirc или используйте --username/--password
164199
python -m twine upload dist/*
165200
```
166201

167202
### 📚 Полезные ссылки
168203

169204
- [GitHub Actions Documentation](https://docs.github.com/en/actions)
170-
- [PyPI API Tokens](https://pypi.org/help/api-tokens/)
205+
- [PyPI Trusted Publishers](https://docs.pypi.org/trusted-publishers/)**Новое!**
206+
- [PyPI API Tokens](https://pypi.org/help/api-tokens/) (устаревший способ)
171207
- [Python Packaging User Guide](https://packaging.python.org/)
172208
- [GitHub Releases](https://docs.github.com/en/repositories/releasing-projects-on-github)
173209

210+
### 🔄 Миграция с API токена на Trusted Publisher
211+
212+
Если у вас уже настроен API токен и вы хотите перейти на Trusted Publisher:
213+
214+
1. **Создайте новый тег** для запуска workflow
215+
2. **Настройте Trusted Publisher** по ссылке из логов
216+
3. **Удалите секрет** `PYPI_API_TOKEN` из GitHub Secrets
217+
4. **Убедитесь**, что workflow работает без предупреждений
218+
219+
**Преимущества миграции:**
220+
- 🔒 Более безопасно (нет токенов для хранения)
221+
- 🚀 Проще в настройке
222+
- 📱 Лучшая поддержка мобильных устройств
223+
- 🆕 Соответствие современным стандартам PyPI
224+
174225
---
175226

176227
**Теперь ваша публикация полностью автоматизирована! 🎉**

pyproject.toml

Lines changed: 2 additions & 3 deletions
Original file line numberDiff line numberDiff line change
@@ -4,10 +4,10 @@ build-backend = "setuptools.build_meta"
44

55
[project]
66
name = "onlinesimru"
7-
version = "2.1.1"
7+
version = "2.1.2"
88
description = "Wrapper for automatic reception of SMS-messages by onlinesim.ru"
99
readme = "README.md"
10-
license = {text = "Apache-2.0"}
10+
license = "Apache-2.0"
1111
authors = [
1212
{name = "s00d", email = "[email protected]"}
1313
]
@@ -16,7 +16,6 @@ maintainers = [
1616
]
1717
keywords = ["sms", "receive", "onlinesim-ru", "autoreg"]
1818
classifiers = [
19-
"License :: OSI Approved :: Apache Software License",
2019
"Operating System :: OS Independent",
2120
"Environment :: Console",
2221
"Development Status :: 4 - Beta",

0 commit comments

Comments
 (0)