Skip to content

chore: improve gitignore #132

chore: improve gitignore

chore: improve gitignore #132

Workflow file for this run

name: build
on:
push:
branches:
- "master"
- "ci-*"
tags:
- "**"
pull_request:
workflow_dispatch:
env:
PYTHON_VER: "3.11" # Python to run test/cibuildwheel
CIBW_BUILD: >
cp39-* cp310-* cp311-* cp312-* cp313-*
pp39-* pp310-* pp311-*
CIBW_TEST_COMMAND: python -m unittest discover {project}/tests
jobs:
test_cpython:
name: Test on ${{ matrix.platform }} ${{ matrix.architecture }} ${{ matrix.build_option }}
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform:
- ubuntu-latest
- macos-latest
- windows-latest
build_option:
- "--warning-as-error"
- "--warning-as-error --multi-phase-init"
- "--warning-as-error --cffi"
architecture:
- x64
include:
- platform: windows-latest
build_option: "--warning-as-error"
architecture: x86
- platform: windows-latest
build_option: "--warning-as-error --multi-phase-init"
architecture: x86
- platform: windows-latest
build_option: "--warning-as-error --cffi"
architecture: x86
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VER }}
architecture: ${{ matrix.architecture }}
- name: Run test
run: |
python -m pip install cffi
python -m pip install --config-settings="--build-option=${{ matrix.build_option }}" -vv .
python -m unittest discover tests
test_cpython_debug:
name: Test debug build on Ubuntu ${{ matrix.build_option }}
runs-on: ubuntu-latest
strategy:
matrix:
build_option:
- "--warning-as-error --debug"
- "--warning-as-error --debug --multi-phase-init"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- name: Run test
run: |
sudo apt-get update
sudo apt-get install python3-dbg
python3-dbg -m pip install --config-settings="--build-option=${{ matrix.build_option }}" -vv .
python3-dbg -m unittest discover tests
test_pypy:
name: Test on ${{ matrix.py }}
runs-on: ubuntu-latest
strategy:
matrix:
py:
- "pypy-3.9"
- "pypy-3.10"
- "pypy-3.11"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ matrix.py }}
- name: Build & test
run: |
sudo apt-get install -q -y zstd libzstd1 libzstd-dev
python -m pip install --config-settings="--build-option=--dynamic-link-zstd --warning-as-error" -v .
python -m unittest discover tests
build_sdist:
name: Build sdist
if: startsWith(github.ref, 'refs/tags') || startsWith(github.head_ref, 'release-') || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VER }}
- name: Build sdist
run: |
python -m pip install -U build
python -m build --sdist
- name: List distributions
run: ls -lR dist
- name: Upload sdist
uses: actions/upload-artifact@v4
with:
name: cibw-sdist
path: dist/*.tar.gz
build_wheels:
name: Build wheels on ${{ matrix.platform }}
if: startsWith(github.ref, 'refs/tags') || startsWith(github.head_ref, 'release-') || github.event_name == 'workflow_dispatch'
runs-on: ${{ matrix.platform }}
strategy:
matrix:
platform:
- ubuntu-latest
- macos-latest
- windows-latest
- windows-11-arm
env:
CIBW_ARCHS_MACOS: "x86_64 arm64"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VER }}
- name: Build wheels
run: |
python -m pip install -U cibuildwheel
python -m cibuildwheel --output-dir wheelhouse
- name: List distributions
run: ls -lR wheelhouse
shell: bash
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.platform }}
path: wheelhouse/*.whl
build_arch_wheels:
name: Build wheels for ${{ matrix.arch }} (skip ${{ matrix.skip_image }})
if: startsWith(github.ref, 'refs/tags') || startsWith(github.head_ref, 'release-') || github.event_name == 'workflow_dispatch'
runs-on: ubuntu-latest
strategy:
matrix:
arch:
- aarch64
- ppc64le
- s390x
# Building in QEMU is very slow, so parallelize the tasks.
skip_image:
- musllinux
- manylinux
env:
CIBW_ARCHS: ${{ matrix.arch }}
CIBW_SKIP: "*${{ matrix.skip_image }}*"
steps:
- uses: actions/checkout@v4
with:
submodules: true
- uses: actions/setup-python@v5
with:
python-version: ${{ env.PYTHON_VER }}
- name: Set up QEMU
uses: docker/setup-qemu-action@v3
- name: Build wheels
run: |
python -m pip install -U cibuildwheel
python -m cibuildwheel --output-dir wheelhouse
- name: List distributions
run: ls -lR wheelhouse
- name: Upload wheels
uses: actions/upload-artifact@v4
with:
name: cibw-wheels-${{ matrix.arch }}-${{ matrix.skip_image }}
path: wheelhouse/*.whl
upload_pypi:
name: Publish to PyPI
if: startsWith(github.ref, 'refs/tags')
needs:
- build_sdist
- build_wheels
- build_arch_wheels
runs-on: ubuntu-latest
environment: publish
permissions:
id-token: write # This permission is mandatory for trusted publishing
steps:
- name: Download wheels
uses: actions/download-artifact@v4
with:
pattern: cibw-*
path: dist
merge-multiple: true
- name: List distributions
run: ls -lR dist
- name: Upload to PyPI
uses: pypa/gh-action-pypi-publish@release/v1
with:
skip-existing: true
verbose: true
print-hash: true