1
+ name : Publish Python 🐍 distribution 📦 to PyPI and TestPyPI
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
+ with :
13
+ persist-credentials : false
14
+ - name : Set up Python
15
+ uses : actions/setup-python@v5
16
+ with :
17
+ python-version : " 3.x"
18
+ - name : Install pypa/build
19
+ run : >-
20
+ python3 -m
21
+ pip install
22
+ build
23
+ --user
24
+ - name : Build a binary wheel and a source tarball
25
+ run : python3 -m build
26
+ - name : Store the distribution packages
27
+ uses : actions/upload-artifact@v4
28
+ with :
29
+ name : python-package-distributions
30
+ path : dist/
31
+
32
+ publish-to-pypi :
33
+ name : >-
34
+ Publish Python 🐍 distribution 📦 to PyPI
35
+ if : startsWith(github.ref, 'refs/tags/') # only publish to PyPI on tag pushes
36
+ needs :
37
+ - build
38
+ runs-on : ubuntu-latest
39
+ environment :
40
+ name : pypi
41
+ url : https://pypi.org/p/ltbams
42
+ permissions :
43
+ id-token : write # IMPORTANT: mandatory for trusted publishing
44
+
45
+ steps :
46
+ - name : Download all the dists
47
+ uses : actions/download-artifact@v4
48
+ with :
49
+ name : python-package-distributions
50
+ path : dist/
51
+ - name : Publish distribution 📦 to PyPI
52
+ uses : pypa/gh-action-pypi-publish@release/v1
53
+
54
+ github-release :
55
+ name : >-
56
+ Sign the Python 🐍 distribution 📦 with Sigstore
57
+ and upload them to GitHub Release
58
+ needs :
59
+ - publish-to-pypi
60
+ runs-on : ubuntu-latest
61
+
62
+ permissions :
63
+ contents : write # IMPORTANT: mandatory for making GitHub Releases
64
+ id-token : write # IMPORTANT: mandatory for sigstore
65
+
66
+ steps :
67
+ - name : Download all the dists
68
+ uses : actions/download-artifact@v4
69
+ with :
70
+ name : python-package-distributions
71
+ path : dist/
72
+ - name : Sign the dists with Sigstore
73
+
74
+ with :
75
+ inputs : >-
76
+ ./dist/*.tar.gz
77
+ ./dist/*.whl
78
+ - name : Create GitHub Release
79
+ env :
80
+ GITHUB_TOKEN : ${{ github.token }}
81
+ run : >-
82
+ gh release create
83
+ "$GITHUB_REF_NAME"
84
+ --repo "$GITHUB_REPOSITORY"
85
+ --notes ""
86
+ - name : Upload artifact signatures to GitHub Release
87
+ env :
88
+ GITHUB_TOKEN : ${{ github.token }}
89
+ # Upload to GitHub Release using the `gh` CLI.
90
+ # `dist/` contains the built packages, and the
91
+ # sigstore-produced signatures and certificates.
92
+ run : >-
93
+ gh release upload
94
+ "$GITHUB_REF_NAME" dist/**
95
+ --repo "$GITHUB_REPOSITORY"
96
+
97
+ publish-to-testpypi :
98
+ name : Publish Python 🐍 distribution 📦 to TestPyPI
99
+ needs :
100
+ - build
101
+ runs-on : ubuntu-latest
102
+
103
+ environment :
104
+ name : testpypi
105
+ url : https://test.pypi.org/p/ltbams
106
+
107
+ permissions :
108
+ id-token : write # IMPORTANT: mandatory for trusted publishing
109
+
110
+ steps :
111
+ - name : Download all the dists
112
+ uses : actions/download-artifact@v4
113
+ with :
114
+ name : python-package-distributions
115
+ path : dist/
116
+ - name : Publish distribution 📦 to TestPyPI
117
+ uses : pypa/gh-action-pypi-publish@release/v1
118
+ with :
119
+ repository-url : https://test.pypi.org/legacy/
0 commit comments