1
+ name : Build and upload to PyPI
2
+
3
+ on :
4
+ workflow_dispatch :
5
+ pull_request :
6
+ branches :
7
+ - main
8
+ push :
9
+ branches :
10
+ - main
11
+
12
+ jobs :
13
+ build_wheels :
14
+ name : Build wheels on ${{ matrix.os }}
15
+ runs-on : ${{ matrix.os }}
16
+ strategy :
17
+ matrix :
18
+ # macos-13 is an intel runner, macos-14 is apple silicon
19
+ os : [ubuntu-latest, windows-latest, macos-13, macos-14]
20
+
21
+ steps :
22
+ - uses : actions/checkout@v4
23
+
24
+ - name : Build wheels
25
+
26
+
27
+ - uses : actions/upload-artifact@v4
28
+ with :
29
+ name : cibw-wheels-${{ matrix.os }}-${{ strategy.job-index }}
30
+ path : ./wheelhouse/*.whl
31
+
32
+ build_sdist :
33
+ name : Build source distribution
34
+ runs-on : ubuntu-latest
35
+ steps :
36
+ - uses : actions/checkout@v4
37
+
38
+ - name : Build sdist
39
+ run : pipx run build --sdist
40
+
41
+ - uses : actions/upload-artifact@v4
42
+ with :
43
+ name : cibw-sdist
44
+ path : dist/*.tar.gz
45
+
46
+ upload_pypi :
47
+ needs : [build_wheels, build_sdist]
48
+ runs-on : ubuntu-latest
49
+ environment : pypi
50
+ permissions :
51
+ id-token : write
52
+ if : github.event_name == 'release' && github.event.action == 'published'
53
+ # or, alternatively, upload to PyPI on every tag starting with 'v' (remove on: release above to use this)
54
+ # if: github.event_name == 'push' && startsWith(github.ref, 'refs/tags/v')
55
+ steps :
56
+ - uses : actions/download-artifact@v4
57
+ with :
58
+ # unpacks all CIBW artifacts into dist/
59
+ pattern : cibw-*
60
+ path : dist
61
+ merge-multiple : true
62
+
63
+ - name : Generate artifact attestations
64
+
65
+ with :
66
+ subject-path : " dist/*"
67
+
68
+ - uses : pypa/gh-action-pypi-publish@release/v1
69
+ # with:
70
+ # To test: repository-url: https://test.pypi.org/legacy/
0 commit comments