ホームページ >バックエンド開発 >Python チュートリアル >信頼できる公開 - Python パッケージの公開がかつてないほど簡単になりました
Python パッケージの公開はかつては困難な作業でしたが、今はそうではありません。さらに良いことに、安全性が大幅に向上しました。 CLI ツールに依存しながら、ユーザー名、パスワード、または API トークンをやりくりする時代は終わりました。信頼できる公開では、GitHub リポジトリの詳細を PyPI に提供するだけで、GitHub Actions が面倒な作業を処理します。
(開発ブランチで) タグが作成されたときにパッケージを TestPyPi に公開するか、メイン ブランチにマージするときに PyPi にパッケージを公開するワークフローを紹介します。
Python パッケージが PyPI のパッケージ化ガイドラインに従っていることを確認してください。少なくとも次のものが必要です:
詳細なチェックリストについては、Python パッケージング ユーザー ガイドを参照してください。
新しい GitHub アクション .github/workflows/test-build-publish.yml を作成することから始めましょう。
name: test-build-publish on: [push, pull_request] permissions: contents: read jobs: build-and-check-package: name: Build & inspect our package. runs-on: ubuntu-latest steps: - uses: actions/checkout@v4 - uses: hynek/build-and-inspect-python-package@v2
このアクションにより、パッケージがビルドされ、ビルドされたホイールとソース ディストリビューション (SDist) が GitHub Actions アーティファクトとしてアップロードされます。
次に、TestPyPI に公開するステップを追加します。このステップはタグが作成されるたびに実行され、前のステップのビルドが正常に完了したことを確認します。 PROJECT_OWNER と PROJECT_NAME をリポジトリの適切な値に置き換えます。
test-publish: if: >- github.event_name == 'push' && github.repository == 'PROJECT_OWNER/PROJECT_NAME' && startsWith(github.ref, 'refs/tags') needs: build-and-check-package name: Test publish on TestPyPI runs-on: ubuntu-latest environment: test-release permissions: id-token: write steps: - name: Download packages built by build-and-check-package uses: actions/download-artifact@v4 with: name: Packages path: dist - name: Upload package to Test PyPI uses: pypa/gh-action-pypi-publish@release/v1 with: repository-url: https://test.pypi.org/legacy/
このステップでは、ビルド プロセス中に作成されたアーティファクトをダウンロードし、テストのために TestPyPI にアップロードします。
最後のステップでは、プル リクエストがメイン ブランチにマージされるときに、パッケージを PyPI にアップロードします。
publish: if: >- github.event_name == 'push' && github.repository == 'PROJECT_OWNER/PROJECT_NAME' && github.ref == 'refs/heads/main' needs: build-and-check-package name: Publish to PyPI runs-on: ubuntu-latest environment: release permissions: id-token: write steps: - name: Download packages built by build-and-check-package uses: actions/download-artifact@v4 with: name: Packages path: dist - name: Publish distribution ? to PyPI for push to main uses: pypa/gh-action-pypi-publish@release/v1
特定のタグのみが公開ワークフローをトリガーし、リリース プロセスの制御を維持するため。
[設定] -> [設定] に移動して、新しい環境のテスト リリースを作成します。 GitHub リポジトリ内の環境。
環境を設定し、デプロイメントタグルールを追加します。
ルールまたは命名パターンに基づいて、この環境にデプロイできるブランチとタグを制限します。
命名パターンに基づいて、この環境にデプロイできるブランチとタグを制限します。
ターゲットタグを設定します。
パターン [0-9]*.[0-9]*.[0-9]* は、1.2.3、0.1.0、2.5.1b3 などのセマンティック バージョン管理タグと一致しますが、次のような任意のタグは除外されます。バグ修正-567 または機能更新。
リリース環境に対してこれを繰り返して、同じ方法でメイン ブランチを保護しますが、今回はメイン ブランチを対象とします。
アカウントをお持ちでない場合は、TestPyPI でアカウントを作成します。
アカウントの「公開」に移動し、新しい保留中のパブリッシャーを追加します。
名前、GitHub ユーザー名、リポジトリ名、ワークフロー名 (test-build-publish.yml)、および環境名 (test-release) を指定して、GitHub リポジトリを PyPI プロジェクトにリンクします。
環境名を release に設定して、PyPI で上記の操作を繰り返します。
開発ブランチでタグを作成すると、リリースが TestPyPI にアップロードされるようになり、開発ブランチを main にマージすると、リリースが PyPI にアップロードされます。
このガイドでは信頼できる公開ワークフローの概要を説明しますが、実装を検討できる追加の手順とベスト プラクティスもあります。たとえば、ブランチ保護ルールを設定すると、承認されたコラボレーターのみがタグをプッシュしたり、main やdevelopment などの保護されたブランチにマージしたりできるようになります。また、マージ前にステータス チェックを強制したり、プル リクエストのレビューを要求したりして、品質保証の層を追加することもできます。
私の python-repository-template を見てください。このワークフローへの追加の機能強化 (単体テストと静的テストに合格する必要があること、pyroma でパッケージをチェックすること、vercheck でタグがパッケージのバージョンと一致することを確認することなど) をカバーしています。
これまで自分の作品を共有することをためらっていたなら、今が信頼できる出版を試してみる絶好の機会です。
以上が信頼できる公開 - Python パッケージの公開がかつてないほど簡単になりましたの詳細内容です。詳細については、PHP 中国語 Web サイトの他の関連記事を参照してください。