Skip to content

Commit 8a8a20e

Browse files
authored
Refactor Python publish workflow for tag-based releases
1 parent 66b6361 commit 8a8a20e

File tree

1 file changed

+22
-62
lines changed

1 file changed

+22
-62
lines changed
Lines changed: 22 additions & 62 deletions
Original file line numberDiff line numberDiff line change
@@ -1,70 +1,30 @@
1-
# This workflow will upload a Python Package to PyPI when a release is created
2-
# For more information see: https://docs.github.com/en/actions/automating-builds-and-tests/building-and-testing-python#publishing-to-package-registries
3-
4-
# This workflow uses actions that are not certified by GitHub.
5-
# They are provided by a third-party and are governed by
6-
# separate terms of service, privacy policy, and support
7-
# documentation.
8-
9-
name: Upload Python Package
1+
name: Release
102

113
on:
12-
release:
13-
types: [published]
14-
15-
permissions:
16-
contents: read
4+
push:
5+
tags:
6+
# Publish on any tag starting with a `v`, e.g., v1.2.3
7+
- v*
178

189
jobs:
19-
release-build:
10+
pypi:
11+
name: Publish to PyPI
2012
runs-on: ubuntu-latest
21-
22-
steps:
23-
- uses: actions/checkout@v4
24-
25-
- uses: actions/setup-python@v5
26-
with:
27-
python-version: "3.x"
28-
29-
- name: Build release distributions
30-
run: |
31-
# NOTE: put your own distribution build steps here.
32-
python -m pip install build
33-
python -m build
34-
35-
- name: Upload distributions
36-
uses: actions/upload-artifact@v4
37-
with:
38-
name: release-dists
39-
path: dist/
40-
41-
pypi-publish:
42-
runs-on: ubuntu-latest
43-
needs:
44-
- release-build
45-
permissions:
46-
# IMPORTANT: this permission is mandatory for trusted publishing
47-
id-token: write
48-
49-
# Dedicated environments with protections for publishing are strongly recommended.
50-
# For more information, see: https://docs.github.com/en/actions/deployment/targeting-different-environments/using-environments-for-deployment#deployment-protection-rules
13+
# Environment and permissions trusted publishing.
5114
environment:
15+
# Create this environment in the GitHub repository under Settings -> Environments
5216
name: pypi
53-
# OPTIONAL: uncomment and update to include your PyPI project URL in the deployment status:
54-
# url: https://pypi.org/p/YOURPROJECT
55-
#
56-
# ALTERNATIVE: if your GitHub Release name is the PyPI project version string
57-
# ALTERNATIVE: exactly, uncomment the following line instead:
58-
# url: https://pypi.org/project/YOURPROJECT/${{ github.event.release.name }}
59-
17+
permissions:
18+
id-token: write
19+
contents: read
6020
steps:
61-
- name: Retrieve release distributions
62-
uses: actions/download-artifact@v4
63-
with:
64-
name: release-dists
65-
path: dist/
66-
67-
- name: Publish release distributions to PyPI
68-
uses: pypa/gh-action-pypi-publish@release/v1
69-
with:
70-
packages-dir: dist/
21+
- name: Checkout
22+
uses: actions/checkout@v5
23+
- name: Install uv
24+
uses: astral-sh/setup-uv@v6
25+
- name: Install Python 3.12
26+
run: uv python install 3.12
27+
- name: Build
28+
run: uv build
29+
- name: Publish
30+
run: uv publish

0 commit comments

Comments
 (0)