Work/1169 entity exists conveniences #111
This file contains bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
name: Build Wheels | |
on: | |
push: | |
branches: | |
- main | |
- feature/* | |
workflow_dispatch: | |
pull_request: | |
branches-ignore: | |
- docs | |
paths-ignore: | |
- 'docs/**' | |
concurrency: | |
group: wheel-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build_wheels: | |
name: Build wheels on ${{ matrix.config.os }} - ${{matrix.python-build}} | |
runs-on: ${{ matrix.config.os }} | |
strategy: | |
fail-fast: false | |
matrix: | |
config: | |
- os: ubuntu-20.04 | |
shell: bash | |
- os: macos-11 | |
shell: bash | |
- os: windows-2019 | |
preamble: call "C:\\Program Files (x86)\\Microsoft Visual Studio\\2019\\Enterprise\\VC\\Auxiliary\\Build\\vcvarsall.bat" x64 | |
shell: cmd | |
# These are the platform build strings provided to | |
# cibuildwheel, with wildcarding. See | |
# https://cibuildwheel.readthedocs.io/en/stable/options/#build-skip | |
python-build: ['cp37*64', 'cp39*64', 'cp310*64', 'cp311*64'] | |
defaults: | |
run: | |
# Annoyingly required here since `matrix` isn't available in the | |
# `shell` property of individual steps. | |
shell: ${{ matrix.config.shell }} | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Bootstrap | |
uses: ./.github/bootstrap_platform | |
- name: Build wheels | |
run: | | |
${{ matrix.config.preamble }} | |
pip install cibuildwheel==2.11.1 | |
cibuildwheel --output-dir wheelhouse src/openassetio-python | |
env: | |
# Windows + Mac runs use this environment variable, as they | |
# execute directly on the runner. Linux runs are somewhat | |
# different, and are containerised fully, therefore they get | |
# their toolchain path from pyproject.toml | |
CMAKE_TOOLCHAIN_FILE: ${{ github.workspace }}/.conan/conan_paths.cmake | |
# We matrix the python build here ourselves, rather than | |
# letting cibuildwheel do its regular python matrix, as we | |
# want to allow a full release pipeline to run "vertically" on | |
# CI, on individual agents, rather than building every python | |
# version sequentially on each platform. This is done less for | |
# performance reasons (although it does help) and more so a | |
# single failing python version won't interrupt every other | |
# deploy on that platform. | |
CIBW_BUILD: ${{ matrix.python-build }} | |
CIBW_SKIP: '*musllinux* *arm64*' | |
CIBW_MANYLINUX_X86_64_IMAGE: manylinux2014 | |
PIP_VERBOSE: 1 | |
# Required as we make use of c++17 features | |
MACOSX_DEPLOYMENT_TARGET: 10.15 | |
# Ensure .pyi stub tests won't be skipped | |
OPENASSETIO_TEST_ENABLE_PYTHON_STUBGEN: 1 | |
- uses: actions/upload-artifact@v3 | |
with: | |
name: "openassetio-wheels" | |
path: ./wheelhouse/*.whl |