1+ name : Publish Python 🐍 distribution 📦 to PyPI
2+
3+ on : push
4+
5+ jobs :
6+ build :
7+ name : Build distribution 📦
8+ runs-on : ubuntu-latest
9+
10+ steps :
11+ - uses : actions/checkout@v4
12+ - name : Set up Python
13+ uses : actions/setup-python@v4
14+ with :
15+ python-version : " 3.x"
16+ - name : Install pypa/build
17+ run : >-
18+ python3 -m
19+ pip install
20+ build
21+ --user
22+ - name : Build a binary wheel and a source tarball
23+ run : python3 -m build
24+ - name : Store the distribution packages
25+ uses : actions/upload-artifact@v3
26+ with :
27+ name : python-package-distributions
28+ path : dist/
29+
30+ publish-to-pypi :
31+ name : >-
32+ Publish Python 🐍 distribution 📦 to PyPI
33+ if : startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
34+ needs :
35+ - build
36+ runs-on : ubuntu-latest
37+ environment :
38+ name : pypi
39+ url : https://pypi.org/p/sphinx-autoapi
40+ permissions :
41+ id-token : write # IMPORTANT: mandatory for trusted publishing
42+
43+ steps :
44+ - name : Download all the dists
45+ uses : actions/download-artifact@v3
46+ with :
47+ name : python-package-distributions
48+ path : dist/
49+ - name : Publish distribution 📦 to PyPI
50+ uses : pypa/gh-action-pypi-publish@release/v1
51+
52+ github-release :
53+ name : >-
54+ Sign the Python 🐍 distribution 📦 with Sigstore
55+ and upload them to GitHub Release
56+ needs :
57+ - publish-to-pypi
58+ runs-on : ubuntu-latest
59+
60+ permissions :
61+ contents : write # IMPORTANT: mandatory for making GitHub Releases
62+ id-token : write # IMPORTANT: mandatory for sigstore
63+
64+ steps :
65+ - name : Download all the dists
66+ uses : actions/download-artifact@v3
67+ with :
68+ name : python-package-distributions
69+ path : dist/
70+ - name : Sign the dists with Sigstore
71+ uses : sigstore/gh-action-sigstore-python@v1.2.3
72+ with :
73+ inputs : >-
74+ ./dist/*.tar.gz
75+ ./dist/*.whl
76+ - name : Upload artifact signatures to GitHub Release
77+ env :
78+ GITHUB_TOKEN : ${{ github.token }}
79+ # Upload to GitHub Release using the `gh` CLI.
80+ # `dist/` contains the built packages, and the
81+ # sigstore-produced signatures and certificates.
82+ run : >-
83+ gh release upload
84+ '${{ github.ref_name }}' dist/**
85+ --repo '${{ github.repository }}'
0 commit comments