Repository navigation
157 lines (135 loc) · 3.86 KB
/
Copy pathrelease-python.yaml
File metadata and controls
157 lines (135 loc) · 3.86 KB
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
116
117
118
119
120
121
122
123
124
125
126
127
128
129
130
131
132
133
134
135
136
137
138
139
140
141
142
143
144
145
146
147
148
149
150
151
152
153
154
155
156
157
name: Release Python Package
on:
push:
tags:
- 'mote-python-v*.*.*'
defaults:
run:
shell: bash
jobs:
check-version:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Check version matches tag
run: |
TAG_VERSION="${GITHUB_REF_NAME#mote-python-v}"
CODE_VERSION=$(grep '^version' mote-ffi/pyproject.toml | head -1 | sed 's/version = "\(.*\)"/\1/')
if [ "$TAG_VERSION" != "$CODE_VERSION" ]; then
echo "Error: Tag version ($TAG_VERSION) does not match pyproject version ($CODE_VERSION)"
exit 1
fi
echo "Version check passed: $CODE_VERSION"
linux:
needs: check-version
runs-on: ubuntu-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- name: Generate Python bindings
working-directory: mote-ffi
run: |
cargo build --quiet
python3 scripts/generate_python_types.py
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
working-directory: mote-ffi
target: ${{ matrix.target }}
args: --release --locked
manylinux: auto
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-linux-${{ matrix.target }}
path: mote-ffi/target/wheels/*.whl
macos:
needs: check-version
runs-on: macos-latest
strategy:
matrix:
target: [x86_64, aarch64]
steps:
- uses: actions/checkout@v4
- name: Generate Python bindings
working-directory: mote-ffi
run: |
cargo build --quiet
python3 scripts/generate_python_types.py
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
working-directory: mote-ffi
target: ${{ matrix.target }}
args: --release --locked
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-macos-${{ matrix.target }}
path: mote-ffi/target/wheels/*.whl
windows:
needs: check-version
runs-on: windows-latest
strategy:
matrix:
target: [x64]
steps:
- uses: actions/checkout@v4
- name: Generate Python bindings
working-directory: mote-ffi
run: |
cargo build --quiet
python3 scripts/generate_python_types.py
- name: Build wheels
uses: PyO3/maturin-action@v1
with:
working-directory: mote-ffi
target: ${{ matrix.target }}
args: --release --locked
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: wheels-windows-${{ matrix.target }}
path: mote-ffi/target/wheels/*.whl
sdist:
needs: check-version
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- name: Generate Python bindings
working-directory: mote-ffi
run: |
cargo build --quiet
python3 scripts/generate_python_types.py
- name: Build sdist
uses: PyO3/maturin-action@v1
with:
working-directory: mote-ffi
command: sdist
args: --out dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: wheels-sdist
path: mote-ffi/dist/*.tar.gz
release:
needs: [linux, macos, windows, sdist]
runs-on: ubuntu-latest
environment: pypi
permissions:
# Required for trusted publishing (OIDC) to PyPI.
id-token: write
steps:
- name: Download artifacts
uses: actions/download-artifact@v4
with:
pattern: wheels-*
merge-multiple: true
path: dist
- name: Publish to PyPI
uses: PyO3/maturin-action@v1
with:
command: upload
args: --non-interactive dist/*