Skip to content

Commit 00b33fb

Browse files
committed
build(python): Add pre-built wheels for musllinux
Signed-off-by: Dmitry Dygalo <[email protected]>
1 parent 31bad1a commit 00b33fb

File tree

3 files changed

+78
-0
lines changed

3 files changed

+78
-0
lines changed

.github/workflows/ci.yml

Lines changed: 38 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -423,6 +423,44 @@ jobs:
423423

424424
- run: cargo +nightly fuzz run --release ${{ matrix.target }} fuzz/seeds -- -dict=fuzz/dict -max_total_time=60
425425

426+
test-python-musllinux:
427+
strategy:
428+
fail-fast: false
429+
matrix:
430+
include:
431+
- target: x86_64
432+
arch: amd64
433+
- target: aarch64
434+
arch: aarch64
435+
name: Test Python musllinux on ${{ matrix.target }}
436+
runs-on: ubuntu-24.04
437+
steps:
438+
- uses: actions/checkout@v6
439+
with:
440+
submodules: true
441+
442+
- uses: actions/setup-python@v6
443+
with:
444+
python-version: '3.10'
445+
446+
- name: Build wheel
447+
uses: messense/maturin-action@v1
448+
with:
449+
target: ${{ matrix.target }}
450+
manylinux: musllinux_1_2
451+
args: -m crates/jsonschema-py/Cargo.toml --out dist
452+
453+
- uses: uraimo/run-on-arch-action@v3
454+
name: Install and test wheel on Alpine
455+
with:
456+
base_image: '--platform=linux/${{ matrix.arch }} python:3.10-alpine'
457+
githubToken: ${{ github.token }}
458+
shell: /bin/sh
459+
install: apk add --no-cache py3-pip
460+
run: |
461+
pip install dist/*.whl --break-system-packages
462+
python -c "import jsonschema_rs; assert jsonschema_rs.is_valid({'type': 'string'}, 'foo')"
463+
426464
lint-docs:
427465
name: Lint documentation
428466
runs-on: ubuntu-24.04

.github/workflows/python-release.yml

Lines changed: 36 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -180,6 +180,41 @@ jobs:
180180
name: wheel-linux-${{ matrix.target }}
181181
path: dist
182182

183+
linux-musllinux:
184+
runs-on: ubuntu-24.04
185+
strategy:
186+
matrix:
187+
include:
188+
- target: x86_64
189+
arch: amd64
190+
- target: aarch64
191+
arch: aarch64
192+
steps:
193+
- uses: actions/checkout@v6
194+
- uses: astral-sh/setup-uv@v7
195+
- uses: actions/setup-python@v6
196+
with:
197+
python-version: ${{ env.PYTHON_ABI_VERSION }}
198+
- name: Build wheels
199+
uses: messense/maturin-action@v1
200+
with:
201+
target: ${{ matrix.target }}
202+
manylinux: musllinux_1_2
203+
args: --release -m crates/jsonschema-py/Cargo.toml --out dist --interpreter ${{ env.PYTHON_ABI_VERSION }}
204+
- uses: uraimo/run-on-arch-action@v3
205+
name: Install built wheel on Alpine
206+
with:
207+
base_image: '--platform=linux/${{ matrix.arch }} python:${{ env.PYTHON_ABI_VERSION }}-alpine'
208+
githubToken: ${{ github.token }}
209+
shell: /bin/sh
210+
install: apk add --no-cache py3-pip
211+
run: pip install ${{ env.PACKAGE_NAME }} --no-index --find-links dist/ --force-reinstall --break-system-packages
212+
- name: Upload wheels
213+
uses: actions/upload-artifact@v6
214+
with:
215+
name: wheel-linux-musllinux-${{ matrix.target }}
216+
path: dist
217+
183218
pypy:
184219
runs-on: ${{ matrix.os }}
185220
strategy:
@@ -255,6 +290,7 @@ jobs:
255290
- macos-universal
256291
- windows
257292
- linux
293+
- linux-musllinux
258294
- pypy
259295
if: "startsWith(github.ref, 'refs/tags/')"
260296
steps:

crates/jsonschema-py/CHANGELOG.md

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -2,6 +2,10 @@
22

33
## [Unreleased]
44

5+
### Added
6+
7+
- Pre-built wheels for `musllinux` (Alpine Linux) on `x86_64` and `aarch64`.
8+
59
## [0.40.2] - 2026-01-30
610

711
### Changed

0 commit comments

Comments
 (0)