リリース¶
SOPRANは、GitHub ActionsからPyPIのTrusted Publishingで公開します。長期間有効なAPIトークンは使いません。
| 項目 | 値 |
|---|---|
| ワークフロー | .github/workflows/publish.yml |
| きっかけ | v*のタグのpush |
| PyPIのプロジェクト | sopran |
| GitHubのenvironment | pypi |
| 認証 | GitHub OIDCとPyPI Trusted Publisher |
ワークフローが行うこと¶
pyproject.tomlのversion、src/sopran/__init__.pyの__version__、タグからvを除いた値が一致するかを確かめる。python -m build --sdistでソース配布物を作る。cibuildwheelで、Linux・Windows・macOSのCPython 3.11〜3.14のwheelを作る。- 各wheelで
sopran._nativeがimportできるかを確かめる。 python -m twine check dist/*でメタデータとREADMEを確かめる。pypa/gh-action-pypi-publish@release/v1でPyPIへアップロードする。
手順¶
# 1. pyproject.toml の version と src/sopran/__init__.py の __version__ を同じ値(例 0.1.0)にする
# 2. commit してタグを打つ
git add pyproject.toml src/sopran/__init__.py
git commit -m "Release v0.1.0"
git tag v0.1.0
# 3. タグを push すると公開のワークフローが動く
git push origin main
git push origin v0.1.0
3つの版の値が一致しないと、ビルドのジョブが失敗します。 リリースの前に、試作APIの棚卸しを行ってください。
事前の確認¶
python -m build --sdist --wheel
python -m twine check dist/*
# 実行中のOS向けのwheelを試しに作る
python -m pip install "cibuildwheel>=2.23,<3"
python -m cibuildwheel --output-dir wheelhouse
初回だけ必要なPyPIの設定¶
PyPIにsopranのプロジェクトがまだ無い場合は、PyPIのアカウントのPublishingからpending publisherを作ります。
| PyPIの項目 | 値 |
|---|---|
| Project name | sopran |
| Owner | Nkzono99 |
| Repository name | sopran |
| Workflow name | publish.yml |
| Environment name | pypi |
pending publisherは名前の予約ではありません。初回の公開より前に同じ名前のプロジェクトが登録されると無効になります。