Skip to content

Build

Build #609

Workflow file for this run

name: "Build"
on:
pull_request:
paths:
- ".github/workflows/build_wheels.yml"
- ".gitmodules"
- "CMakeLists.txt"
- "clp_ffi_py/**"
- "pyproject.toml"
- "README.md"
- "requirements-dev.txt"
- "src/**"
- "tests/**"
push:
paths:
- ".github/workflows/build_wheels.yml"
- ".gitmodules"
- "CMakeLists.txt"
- "clp_ffi_py/**"
- "pyproject.toml"
- "README.md"
- "requirements-dev.txt"
- "src/**"
- "tests/**"
schedule:
# Run every Tuesday at 00:15 UTC (the 15 is to avoid periods of high load)
- cron: "15 0 * * 2"
concurrency:
group: "${{github.workflow}}-${{github.ref}}"
# Cancel in-progress jobs for efficiency
cancel-in-progress: true
jobs:
linters:
runs-on: "ubuntu-latest"
steps:
- uses: "actions/checkout@v4"
with:
submodules: "recursive"
- uses: "actions/setup-python@v5"
with:
# NOTE: We resolve some of clang-tidy's IWYU violations using CPython 3.10's headers, so
# we need to use the same version of Python when running clang-tidy.
python-version: "3.10"
- run: |
pip install --upgrade pip
- run: "npm install -g @go-task/cli"
- run: "task lint:check"
build_wheels:
needs: ["linters"]
name: "Build ${{ matrix.build.name }}"
runs-on: "${{ matrix.build.os }}"
strategy:
matrix:
build:
# macOS builds
- name: "cp37-macosx_x86_64"
os: "macos-14"
- name: "cp38-macosx_arm64"
os: "macos-14"
- name: "cp38-macosx_universal2"
os: "macos-14"
- name: "cp38-macosx_x86_64"
os: "macos-14"
- name: "cp39-macosx_arm64"
os: "macos-14"
- name: "cp39-macosx_universal2"
os: "macos-14"
- name: "cp39-macosx_x86_64"
os: "macos-14"
- name: "cp310-macosx_arm64"
os: "macos-14"
- name: "cp310-macosx_universal2"
os: "macos-14"
- name: "cp310-macosx_x86_64"
os: "macos-14"
- name: "cp311-macosx_arm64"
os: "macos-14"
- name: "cp311-macosx_universal2"
os: "macos-14"
- name: "cp311-macosx_x86_64"
os: "macos-14"
- name: "cp312-macosx_arm64"
os: "macos-14"
- name: "cp312-macosx_universal2"
os: "macos-14"
- name: "cp312-macosx_x86_64"
os: "macos-14"
- name: "cp313-macosx_arm64"
os: "macos-14"
- name: "cp313-macosx_universal2"
os: "macos-14"
- name: "cp313-macosx_x86_64"
os: "macos-14"
# Linux builds
- name: "cp310-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp310-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp310-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp310-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp310-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp310-musllinux_x86_64"
os: "ubuntu-22.04"
- name: "cp311-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp311-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp311-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp311-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp311-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp311-musllinux_x86_64"
os: "ubuntu-22.04"
- name: "cp312-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp312-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp312-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp312-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp312-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp312-musllinux_x86_64"
os: "ubuntu-22.04"
- name: "cp313-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp313-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp313-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp313-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp313-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp313-musllinux_x86_64"
os: "ubuntu-22.04"
- name: "cp37-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp37-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp37-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp37-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp37-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp37-musllinux_x86_64"
os: "ubuntu-22.04"
- name: "cp38-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp38-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp38-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp38-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp38-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp38-musllinux_x86_64"
os: "ubuntu-22.04"
- name: "cp39-manylinux_aarch64"
os: "ubuntu-22.04"
- name: "cp39-manylinux_i686"
os: "ubuntu-22.04"
- name: "cp39-manylinux_x86_64"
os: "ubuntu-22.04"
- name: "cp39-musllinux_aarch64"
os: "ubuntu-22.04"
- name: "cp39-musllinux_i686"
os: "ubuntu-22.04"
- name: "cp39-musllinux_x86_64"
os: "ubuntu-22.04"
# Windows builds
- name: "cp37-win_amd64"
os: "windows-2022"
- name: "cp38-win_amd64"
os: "windows-2022"
- name: "cp39-win_amd64"
os: "windows-2022"
- name: "cp310-win_amd64"
os: "windows-2022"
- name: "cp311-win_amd64"
os: "windows-2022"
- name: "cp312-win_amd64"
os: "windows-2022"
- name: "cp313-win_amd64"
os: "windows-2022"
steps:
- name: "Checkout"
uses: "actions/checkout@v4"
with:
submodules: "recursive"
- name: "Set up QEMU"
if: "runner.os == 'Linux'"
uses: "docker/setup-qemu-action@v3"
with:
platforms: "all"
- name: "Build wheels"
uses: "pypa/[email protected]"
env:
CIBW_BUILD: "${{ matrix.build.name }}"
- uses: "actions/upload-artifact@v4"
with:
name: "wheel-${{ matrix.build.name }}"
path: "./wheelhouse/*.whl"
retention-days: 1
combine-wheels:
needs: ["build_wheels"]
name: "Combine wheels"
runs-on: "ubuntu-latest"
env:
WHEEL_DIR: "/tmp/wheels"
steps:
- uses: "actions/download-artifact@v4"
with:
path: "${{env.WHEEL_DIR}}"
merge-multiple: true
- uses: "actions/upload-artifact@v4"
with:
name: "all-wheels"
path: "${{env.WHEEL_DIR}}"