Skip to content

.github/workflows/wheel.yml #2833

.github/workflows/wheel.yml

.github/workflows/wheel.yml #2833

Workflow file for this run

on:
push:
branches-ignore:
- 'dependabot/**'
pull_request:
schedule:
- cron: '30 13 * * *'
concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true
permissions: { }
jobs:
linux:
strategy:
fail-fast: false
matrix:
py:
- 'cp310'
- 'cp311'
- 'cp312'
- 'cp313'
- 'cp314'
- 'cp314t'
arch:
- 'aarch64'
- 'i686'
- 'ppc64le'
- 's390x'
- 'x86_64'
abi:
- 'manylinux'
- 'musllinux'
image:
- 'manylinux2014'
- 'manylinux_2_28'
- 'musllinux_1_1'
- 'musllinux_1_2'
exclude:
# Cancel out abi - image mismatch.
- abi: 'manylinux'
image: 'musllinux_1_1'
- abi: 'manylinux'
image: 'musllinux_1_2'
- abi: 'musllinux'
image: 'manylinux2014'
- abi: 'musllinux'
image: 'manylinux_2_28'
# Remove some older ABIs that don't need to exist.
- arch: 'i686'
image: 'musllinux_1_1'
- arch: 'ppc64le'
image: 'musllinux_1_1'
- arch: 's390x'
image: 'musllinux_1_1'
# Switch to manylinux_2_28 on 3.14+.
- py: 'cp310'
image: 'manylinux_2_28'
- py: 'cp311'
image: 'manylinux_2_28'
- py: 'cp312'
image: 'manylinux_2_28'
- py: 'cp313'
image: 'manylinux_2_28'
- py: 'cp314'
image: 'manylinux2014'
- py: 'cp314t'
image: 'manylinux2014'
# Drop support for musllinux_1_1 on 3.14+
- py: 'cp314'
image: 'musllinux_1_1'
- py: 'cp314t'
image: 'musllinux_1_1'
runs-on: ${{ matrix.arch == 'aarch64' && 'ubuntu-24.04-arm' || 'ubuntu-24.04' }}
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_BUILD: ${{ matrix.py }}-${{ matrix.abi }}_${{ matrix.arch }}
# uv not present on musllinux cross-compiled images.
CIBW_BUILD_FRONTEND: ${{ (matrix.abi == 'musllinux' && (matrix.arch == 'ppc64le' || matrix.arch == 's390x')) && 'build' || 'build[uv]' }}
CIBW_BUILD_VERBOSITY: '1'
CIBW_MANYLINUX_AARCH64_IMAGE: quay.io/pypa/${{ matrix.image }}_aarch64:latest
CIBW_MANYLINUX_I686_IMAGE: quay.io/pypa/${{ matrix.image }}_i686:latest
CIBW_MANYLINUX_PPC64LE_IMAGE: quay.io/pypa/${{ matrix.image }}_ppc64le:latest
CIBW_MANYLINUX_S390X_IMAGE: quay.io/pypa/${{ matrix.image }}_s390x:latest
CIBW_MANYLINUX_X86_64_IMAGE: quay.io/pypa/${{ matrix.image }}_x86_64:latest
CIBW_MUSLLINUX_AARCH64_IMAGE: quay.io/pypa/${{ matrix.image }}_aarch64:latest
CIBW_MUSLLINUX_I686_IMAGE: quay.io/pypa/${{ matrix.image }}_i686:latest
CIBW_MUSLLINUX_PPC64LE_IMAGE: quay.io/pypa/${{ matrix.image }}_ppc64le:latest
CIBW_MUSLLINUX_S390X_IMAGE: quay.io/pypa/${{ matrix.image }}_s390x:latest
CIBW_MUSLLINUX_X86_64_IMAGE: quay.io/pypa/${{ matrix.image }}_x86_64:latest
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
with:
version: "0.8.11"
- name: Set up QEMU
if: ${{ matrix.arch == 'ppc64le' || matrix.arch == 's390x' }}
uses: docker/setup-qemu-action@1f40c72289eff860ee54a304f1438e3cff362e0a # v4.3.0
- name: Build wheels
run: |
uvx -p 3.13 cibuildwheel@4.1.0
- name: Upload Wheel
if: ${{ !endsWith(matrix.py, 't') }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: linux-${{ matrix.py }}-${{ matrix.arch }}-${{ matrix.abi }}-${{ matrix.image }}
path: ./wheelhouse/*.whl
macos:
strategy:
fail-fast: false
matrix:
py:
- 'cp310'
- 'cp311'
- 'cp312'
- 'cp313'
- 'cp314'
- 'cp314t'
arch:
- 'arm64'
- 'x86_64'
runs-on: ${{ matrix.arch == 'x86_64' && 'macos-26-intel' || 'macos-26' }}
env:
CIBW_ARCHES: ${{ matrix.arch }}
CIBW_BUILD: ${{ matrix.py }}-macosx_${{ matrix.arch }}
CIBW_BUILD_VERBOSITY: '1'
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
with:
version: "0.8.11"
- name: Build wheels
run: |
uvx -p 3.13 cibuildwheel@4.1.0
- name: Upload Wheel
if: ${{ !endsWith(matrix.py, 't') }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: macos-${{ matrix.py }}-${{ matrix.arch }}
path: ./wheelhouse/*.whl
windows:
strategy:
fail-fast: false
matrix:
py:
- 'cp310'
- 'cp311'
- 'cp312'
- 'cp313'
- 'cp314'
- 'cp314t'
arch:
- 'win32'
- 'win_amd64'
- 'win_arm64'
exclude:
- py: 'cp310'
arch: 'win_arm64'
runs-on: ${{ matrix.arch == 'win_arm64' && 'windows-11-arm' || 'windows-2022' }}
env:
CIBW_ARCHES: ${{ matrix.arch }}
CIBW_BUILD: ${{ matrix.py }}-${{ matrix.arch }}
CIBW_BUILD_VERBOSITY: '1'
steps:
- uses: actions/checkout@3d3c42e5aac5ba805825da76410c181273ba90b1 # v7.0.1
with:
persist-credentials: false
- name: Install uv
uses: astral-sh/setup-uv@20cfd1bf945f4377ade1205e4dbc17946fc9a30d # v10.0.1
with:
version: "0.8.11"
- name: Build wheels
run: |
uvx -p 3.13 cibuildwheel@4.1.0
- name: Upload Wheel
if: ${{ !endsWith(matrix.py, 't') }}
uses: actions/upload-artifact@043fb46d1a93c77aae656e7c1c64a875d1fc6a0a # v7.0.1
with:
name: windows-${{ matrix.py }}-${{ matrix.arch }}
path: ./wheelhouse/*.whl