-
-
Notifications
You must be signed in to change notification settings - Fork 950
Commit
This commit does not belong to any branch on this repository, and may belong to a fork outside of the repository.
chore: build binary wheels using
cibuildwheel
(#2267)
* test(conftest.py): fix module paths in load_module() * chore(tests): tweak some tests to afford running pytest from any directory * chore: just set up Actions job to test artefacts * chore(mintest): reorganize mintest to include ASGI, skip slow tests * chore: actually prototype building a couple of wheels * chore(CIBW): roll back to upload-artifact@v3 for now * chore(cibw): just test the matrix of all platform combos in a dry-run * chore: fix a YAML PEBCAK * chore(cibw): actually try to build all wheels for 3.13 * chore(cibw): choose all Linux archs, we control via `CIBW_BUILD` anyway * chore: test building all Python versions on Windows * test(static): attempt to fix static route tests on Windows+py313 * test(static): attempt to fix tests on Windows+py313, take #2 * chore: fix 1 more PEBCAK * test(static): adjust tests even more to pass on Windows... * test(static): attempt normalizing even more on M$ Windows... * chore: more debuggin' * chore(cibw): try building the whole wheel matrix + add dispatch * chore: fix a workflow pebcak * chore(cibw): fix another pebcak * chore(cibw): only build cp38 on x86 Linux * chore: remove cibuildwheel from running on PR * test(mintest): make all 3rd party JSON libraries optional * chore(tests): make msgpack & yaml optional (but include in cibw tests) * chore(cibw): address review comments
- Loading branch information
Showing
30 changed files
with
375 additions
and
303 deletions.
There are no files selected for viewing
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,141 @@ | ||
# Build wheels using cibuildwheel (https://cibuildwheel.pypa.io/) | ||
name: Build wheels | ||
|
||
on: | ||
# Run when a release has been created | ||
release: | ||
types: [created] | ||
|
||
# NOTE(vytas): Also allow to release to Test PyPi manually. | ||
workflow_dispatch: | ||
|
||
jobs: | ||
build-sdist: | ||
name: sdist | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 2 | ||
|
||
- name: Set up Python | ||
uses: actions/setup-python@v5 | ||
with: | ||
python-version: "3.12" | ||
|
||
- name: Build sdist | ||
run: | | ||
pip install build | ||
python -m build --sdist | ||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cibw-sdist | ||
path: dist/*.tar.gz | ||
|
||
build-wheels: | ||
name: ${{ matrix.python }}-${{ matrix.platform.name }} | ||
needs: build-sdist | ||
runs-on: ${{ matrix.platform.os }} | ||
strategy: | ||
fail-fast: false | ||
matrix: | ||
platform: | ||
- name: manylinux_x86_64 | ||
os: ubuntu-latest | ||
- name: musllinux_x86_64 | ||
os: ubuntu-latest | ||
- name: manylinux_aarch64 | ||
os: ubuntu-latest | ||
emulation: true | ||
- name: musllinux_aarch64 | ||
os: ubuntu-latest | ||
emulation: true | ||
- name: manylinux_s390x | ||
os: ubuntu-latest | ||
emulation: true | ||
- name: macosx_x86_64 | ||
os: macos-13 | ||
- name: macosx_arm64 | ||
os: macos-14 | ||
- name: win_amd64 | ||
os: windows-latest | ||
python: | ||
- cp39 | ||
- cp310 | ||
- cp311 | ||
- cp312 | ||
- cp313 | ||
include: | ||
- platform: | ||
name: manylinux_x86_64 | ||
os: ubuntu-latest | ||
python: cp38 | ||
- platform: | ||
name: musllinux_x86_64 | ||
os: ubuntu-latest | ||
python: cp38 | ||
|
||
defaults: | ||
run: | ||
shell: bash | ||
|
||
steps: | ||
- name: Checkout repository | ||
uses: actions/checkout@v4 | ||
with: | ||
fetch-depth: 2 | ||
|
||
- name: Set up QEMU | ||
uses: docker/setup-qemu-action@v3 | ||
if: ${{ matrix.platform.emulation }} | ||
with: | ||
platforms: all | ||
|
||
- name: Build wheels | ||
uses: pypa/cibuildwheel@v2.20.0 | ||
env: | ||
CIBW_ARCHS_LINUX: all | ||
CIBW_BUILD: ${{ matrix.python }}-${{ matrix.platform.name }} | ||
|
||
- name: Upload artifacts | ||
uses: actions/upload-artifact@v4 | ||
with: | ||
name: cibw-wheel-${{ matrix.python }}-${{ matrix.platform.name }} | ||
path: wheelhouse/*.whl | ||
|
||
publish-wheels: | ||
name: publish | ||
needs: | ||
- build-sdist | ||
- build-wheels | ||
runs-on: ubuntu-latest | ||
|
||
steps: | ||
- name: Download packages | ||
uses: actions/download-artifact@v4 | ||
with: | ||
pattern: cibw-* | ||
path: dist | ||
merge-multiple: true | ||
|
||
- name: Check collected artifacts | ||
# TODO(vytas): Run a script to perform version sanity checks instead. | ||
run: ls -l dist/ | ||
|
||
- name: Publish artifacts to TestPyPI | ||
uses: pypa/gh-action-pypi-publish@release/v1 | ||
if: github.event_name == 'workflow_dispatch' | ||
with: | ||
password: ${{ secrets.TEST_PYPI_TOKEN }} | ||
repository-url: https://test.pypi.org/legacy/ | ||
|
||
# TODO(vytas): Enable this nuclear option once happy with other tests. | ||
# - name: Publish artifacts to PyPI | ||
# uses: pypa/gh-action-pypi-publish@release/v1 | ||
# if: github.event_name == 'release' | ||
# with: | ||
# password: ${{ secrets.PYPI_TOKEN }} |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
|
@@ -22,6 +22,7 @@ parts | |
sdist | ||
var | ||
pip-wheel-metadata | ||
wheelhouse | ||
|
||
# Installer logs | ||
pip-log.txt | ||
|
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
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
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -0,0 +1,5 @@ | ||
msgpack | ||
pytest | ||
pytest-asyncio<0.22.0 | ||
pyyaml | ||
requests |
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
Original file line number | Diff line number | Diff line change |
---|---|---|
@@ -1,7 +1,4 @@ | ||
coverage>=4.1 | ||
msgpack | ||
mujson | ||
pytest | ||
pyyaml | ||
pytest-asyncio<0.22.0 | ||
requests | ||
ujson |
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
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
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
Oops, something went wrong.