Skip to content
Open
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
68 changes: 35 additions & 33 deletions .github/workflows/python-publish.yml
Original file line number Diff line number Diff line change
@@ -1,12 +1,13 @@
# This workflow will upload a Python Package to PyPI when a release is created
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
# ==========================================================
# 🚀 Professional PyPI Upload Workflow
# Automatically builds and publishes your Python package to PyPI
# when a new GitHub Release is published.
#
# 📘 Reference:
# https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
# ==========================================================

# This workflow uses actions that are not certified by GitHub.
# They are provided by a third-party and are governed by
# separate terms of service, privacy policy, and support
# documentation.

name: Upload Python Package
name: 🚀 Publish Python Package to PyPI

on:
release:
Expand All @@ -16,55 +17,56 @@ permissions:
contents: read

jobs:
release-build:
build:
name: 🏗️ Build Distribution
runs-on: ubuntu-latest

steps:
- uses: actions/checkout@v4
- name: 🧾 Checkout Repository
uses: actions/checkout@v4

- uses: actions/setup-python@v5
- name: 🐍 Setup Python
uses: actions/setup-python@v5
with:
python-version: "3.x"
python-version: "3.12"

- name: 🔧 Install Build Dependencies
run: |
python -m pip install --upgrade pip build wheel

- name: Build release distributions
- name: 📦 Build Distribution Files
run: |
# NOTE: put your own distribution build steps here.
python -m pip install build
python -m build

- name: Upload distributions
- name: 📤 Upload Build Artifacts
uses: actions/upload-artifact@v4
with:
name: release-dists
name: dist-packages
path: dist/

pypi-publish:
publish:
name: 🚀 Publish to PyPI
runs-on: ubuntu-latest
needs:
- release-build
needs: build
permissions:
# IMPORTANT: this permission is mandatory for trusted publishing
id-token: write
id-token: write # Required for trusted publishing

# Dedicated environments with protections for publishing are strongly recommended.
# For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
environment:
name: pypi
# OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
# url: https://pypi.org/p/YOURPROJECT
#
# ALTERNATIVE: if your GitHub Release name is the PyPI project version string
# ALTERNATIVE: exactly, uncomment the following line instead:
# url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}
url: https://pypi.org/project/YOURPROJECT/

steps:
- name: Retrieve release distributions
- name: 📥 Download Built Artifacts
uses: actions/download-artifact@v4
with:
name: release-dists
name: dist-packages
path: dist/

- name: Publish release distributions to PyPI
- name: 🚀 Upload to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
packages-dir: dist/

- name: ✅ Confirm Successful Deployment
run: echo "🎉 Package successfully published to PyPI!"