Skip to content

Build

Build #44

Workflow file for this run

name: Build
on:
workflow_dispatch:
inputs:
wheel_versions:
description: Wheel versions to build
required: true
default: cp37* cp38* cp39* cp310* cp311* cp312* cp313*
allow_free_threaded:
description: Allow free-threaded builds
required: true
type: boolean
allow_prereleases:
description: Allow pre-release builds
required: true
type: boolean
publish:
description: Publish wheels
required: true
type: boolean
jobs:
make_sdist:
name: Build source distribution
runs-on: ubuntu-latest
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
submodules: recursive
- name: Build source distribution
run: pipx run build --sdist
- uses: actions/upload-artifact@v4
with:
name: sdist
path: dist/*.tar.gz
build_wheels:
name: Build wheels on ${{ matrix.os }}
runs-on: ${{ matrix.os }}
strategy:
matrix:
os: [ubuntu-latest, windows-latest, macos-13, macos-14]
steps:
- name: Checkout repository
uses: actions/checkout@v4
with:
fetch-depth: 0
fetch-tags: true
submodules: recursive
- name: Build wheels
uses: pypa/cibuildwheel@v2.23
env:
CIBW_BUILD: ${{ inputs.wheel_versions }}
CIBW_FREE_THREADED_SUPPORT: ${{ inputs.allow_free_threaded }}
CIBW_PRERELEASE_PYTHONS: ${{ inputs.allow_prereleases }}
CIBW_TEST_REQUIRES: 'pytest>=7.4.4'
CIBW_TEST_COMMAND: 'pytest --config-file {project}/pyproject.toml {project}/tests'
- uses: actions/upload-artifact@v4
with:
name: wheel-${{ matrix.os }}
path: ./wheelhouse/*.whl
upload_wheels:
name: Upload wheels to PyPI
if: ${{ inputs.publish }}
needs: [build_wheels, make_sdist]
environment: release
runs-on: ubuntu-latest
permissions:
id-token: write
steps:
- uses: actions/download-artifact@v4
with:
name: sdist
path: dist
- uses: actions/download-artifact@v4
with:
path: dist
pattern: wheel-*
merge-multiple: true
- name: Publish package
uses: pypa/gh-action-pypi-publish@v1.12.4