Update CI to newest actions and Python 3.13 #153
Workflow file for this run
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 | |
# on: [push, pull_request, release] | |
on: | |
push: | |
branches: | |
release: | |
types: [created] | |
pull_request: | |
concurrency: | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
sdist: | |
name: Build source distribution | |
runs-on: ubuntu-latest | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # To ensure tags are retrieved to enabe setuptools_scm to work | |
- name: Install Python 3.x | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Install setuptools | |
run: pip install setuptools | |
- name: Build sdist | |
run: python setup.py sdist | |
- name: Save sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-sdist | |
path: dist/*.tar.gz | |
wheels: | |
name: Build wheels on ${{ matrix.os }} CIBW_BUILD=${{ matrix.cibw_build }} | |
runs-on: ${{ matrix.os }} | |
strategy: | |
# since multiple builds run at the same time, cancelling them all when one | |
# fails is wasteful and forces handling build problems one by one instead | |
# of showing a "full picture" | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
- macos-13 # x86 | |
- macos-latest # arm | |
- windows-latest | |
cibw_build: [cp39-*, cp310-*, cp311-*, cp312-*, cp313-*] | |
steps: | |
- name: Check out repository | |
uses: actions/checkout@v4 | |
with: | |
fetch-depth: 0 # To ensure tags are retrieved to enabe setuptools_scm to work | |
- name: Install Python 3.x | |
uses: actions/setup-python@v5 | |
with: | |
python-version: 3.x | |
- name: Set up QEMU # Needed to build aarch64 wheels | |
if: runner.os == 'Linux' | |
uses: docker/setup-qemu-action@v3 | |
with: | |
platforms: all | |
- name: Build wheels | |
uses: pypa/cibuildwheel@v2.21 | |
env: | |
CIBW_ENVIRONMENT: PYLZ4_USE_SYSTEM_LZ4="False" | |
CIBW_ARCHS_LINUX: "x86_64 i686 aarch64" | |
CIBW_ARCHS_MACOS: "auto64" # since we have both runner arches | |
CIBW_ARCHS_WINDOWS: "AMD64 x86" | |
CIBW_BUILD: ${{ matrix.cibw_build }} | |
CIBW_SKIP: "cp*-musllinux*" | |
CIBW_TEST_COMMAND: "tox -c {project}" | |
CIBW_TEST_SKIP: "*-macosx_arm64 *-macosx_universal2:arm64 *-*linux_{aarch64,ppc64le,s390x}" | |
CIBW_BEFORE_BUILD: "python -m pip install -U pip && python -m pip install tox" | |
- name: Save wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: cibw-wheels-${{ strategy.job-index }} | |
path: wheelhouse/*.whl | |
upload_pypi: | |
name: Upload to PyPI | |
needs: [sdist, wheels] | |
runs-on: ubuntu-latest | |
if: startsWith(github.ref, 'refs/tags/') | |
steps: | |
- uses: actions/download-artifact@v4 | |
with: | |
pattern: cibw-* | |
path: dist | |
- uses: pypa/gh-action-pypi-publish@release/v1 | |
with: | |
password: ${{ secrets.PYPI_API_TOKEN }} | |
skip_existing: true |