1+ name : Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
2+
3+ on :
4+ push :
5+ tags :
6+ - ' *'
7+ # There should be no dev tags created, but to be safe,
8+ # let's not publish them.
9+ - ' !*.dev*'
10+
11+ env :
12+ # Change these for your project's URLs
13+ PYPI_URL : https://pypi.org/project/django-valkey
14+
15+ jobs :
16+ build :
17+ name : Build distribution 📦
18+ runs-on : ubuntu-latest
19+
20+ steps :
21+ - uses : actions/checkout@v4
22+ - name : Set up Python
23+ uses : actions/setup-python@v5
24+ with :
25+ python-version : " 3.x"
26+ - name : Install uv
27+ uses : astral-sh/setup-uv@v5
28+ - name : Build a binary wheel and a source tarball
29+ run : uv build
30+ - name : Store the distribution packages
31+ uses : actions/upload-artifact@v4
32+ with :
33+ name : python-package-distributions
34+ path : dist/
35+
36+ publish-to-pypi :
37+ name : >-
38+ Publish Python 🐍 distribution 📦 to PyPI
39+ needs :
40+ - build
41+ runs-on : ubuntu-latest
42+ environment :
43+ name : pypi
44+ url : ${{ env.PYPI_URL }}
45+ permissions :
46+ id-token : write # IMPORTANT: mandatory for trusted publishing
47+ steps :
48+ - name : Download all the dists
49+ uses : actions/download-artifact@v4
50+ with :
51+ name : python-package-distributions
52+ path : dist/
53+ - name : Publish distribution 📦 to PyPI
54+ uses : pypa/gh-action-pypi-publish@release/v1.12
55+
56+ github-release :
57+ name : >-
58+ Sign the Python 🐍 distribution 📦 with Sigstore
59+ and upload them to GitHub Release
60+ needs :
61+ - publish-to-pypi
62+ runs-on : ubuntu-latest
63+
64+ permissions :
65+ contents : write # IMPORTANT: mandatory for making GitHub Releases
66+ id-token : write # IMPORTANT: mandatory for sigstore
67+
68+ steps :
69+ - name : Download all the dists
70+ uses : actions/download-artifact@v4
71+ with :
72+ name : python-package-distributions
73+ path : dist/
74+ - name : Sign the dists with Sigstore
75+ uses : sigstore/gh-action-sigstore-python@v3.0.0
76+ with :
77+ inputs : >-
78+ ./dist/*.tar.gz
79+ ./dist/*.whl
80+ - name : Create GitHub Release
81+ env :
82+ GITHUB_TOKEN : ${{ github.token }}
83+ run : >-
84+ gh release create
85+ '${{ github.ref_name }}'
86+ --repo '${{ github.repository }}'
87+ --notes ""
88+ - name : Upload artifact signatures to GitHub Release
89+ env :
90+ GITHUB_TOKEN : ${{ github.token }}
91+ # Upload to GitHub Release using the `gh` CLI.
92+ # `dist/` contains the built packages, and the
93+ # sigstore-produced signatures and certificates.
94+ run : >-
95+ gh release upload
96+ '${{ github.ref_name }}' dist/**
97+ --repo '${{ github.repository }}'
0 commit comments