CI - remove abi3 support, [linux] manylinux: auto (2_17), [linux, musl]: build pypy
wheels
#299
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
# This file is autogenerated by maturin v1.5.1 | |
# To update, run | |
# | |
# maturin generate-ci github -o .github/workflows/CI.yml --pytest --zig | |
# | |
name: CI | |
on: | |
push: | |
branches: | |
- main | |
- '*' | |
tags: | |
- '*' | |
pull_request: | |
workflow_dispatch: | |
permissions: | |
contents: read | |
jobs: | |
linux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
- runner: ubuntu-latest | |
target: aarch64 | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', 'pypy3.8', 'pypy3.9', 'pypy3.10'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
rust-toolchain: stable | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --zig -i ${{ matrix.python-version }} | |
sccache: 'true' | |
manylinux: auto | |
env: | |
CFLAGS_aarch64_unknown_linux_gnu: "-D__ARM_ARCH=8" | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-linux-${{ matrix.platform.target }}-${{ matrix.python-version }} | |
path: dist | |
- name: pytest | |
if: ${{ startsWith(matrix.platform.target, 'x86_64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install pyreqwest_impersonate --no-index --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
- name: pytest | |
if: ${{ !startsWith(matrix.platform.target, 'x86') && matrix.platform.target != 'ppc64' && !startsWith(matrix.python-version, 'pypy')}} | |
uses: uraimo/run-on-arch-action@v2 | |
with: | |
arch: ${{ matrix.platform.target }} | |
distro: ubuntu22.04 | |
githubToken: ${{ github.token }} | |
install: | | |
apt-get update | |
apt-get install -y --no-install-recommends software-properties-common gpg gpg-agent curl | |
add-apt-repository ppa:deadsnakes/ppa | |
apt-get update | |
apt-get install -y python${{ matrix.python-version }}-dev python${{ matrix.python-version }}-venv | |
run: | | |
python${{ matrix.python-version }} -m venv venv | |
venv/bin/pip install -U pip wheel pytest | |
venv/bin/pip install pyreqwest_impersonate --no-index --find-links dist --force-reinstall | |
venv/bin/python -m pytest | |
musllinux: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- runner: ubuntu-latest | |
target: x86_64 | |
- runner: ubuntu-latest | |
target: aarch64 | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12', 'pypy3.8', 'pypy3.9', 'pypy3.10'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
rust-toolchain: stable | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist --zig -i ${{ matrix.python-version }} | |
sccache: 'true' | |
manylinux: musllinux_1_2 | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-musllinux-${{ matrix.platform.target }}-${{ matrix.python-version }} | |
path: dist | |
- name: QEMU | |
if: matrix.platform.target != 'x86_64' | |
uses: docker/setup-qemu-action@v3 | |
- name: pytest | |
if: ${{ !startsWith(matrix.python-version, 'pypy')}} | |
uses: addnab/docker-run-action@v3 | |
with: | |
image: quay.io/pypa/musllinux_1_2_${{ matrix.platform.target }}:latest | |
options: -v ${{ github.workspace }}:/io -w /io | |
run: | | |
python${{ matrix.python-version }} -m venv venv | |
venv/bin/pip install -U pip wheel pytest | |
venv/bin/pip install pyreqwest_impersonate --no-index --find-links dist --force-reinstall | |
venv/bin/python -m pytest | |
windows: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- runner: windows-latest | |
target: x64 | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
architecture: ${{ matrix.platform.target }} | |
- name: Install nasm | |
run: choco install nasm | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
rust-toolchain: stable | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist -i ${{ matrix.python-version }} | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-windows-${{ matrix.platform.target }}-${{ matrix.python-version }} | |
path: dist | |
- name: pytest | |
if: ${{ !startsWith(matrix.platform.target, 'aarch64') }} | |
shell: bash | |
run: | | |
set -e | |
pip install pyreqwest_impersonate --no-index --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
macos: | |
runs-on: ${{ matrix.platform.runner }} | |
strategy: | |
fail-fast: false | |
matrix: | |
platform: | |
- runner: macos-12 | |
target: x86_64 | |
- runner: macos-14 | |
target: aarch64 | |
python-version: ['3.8', '3.9', '3.10', '3.11', '3.12'] | |
steps: | |
- uses: actions/checkout@v4 | |
- uses: actions/setup-python@v5 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- name: Build wheels | |
uses: PyO3/maturin-action@v1 | |
with: | |
rust-toolchain: stable | |
target: ${{ matrix.platform.target }} | |
args: --release --out dist -i ${{ matrix.python-version }} | |
sccache: 'true' | |
- name: Upload wheels | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-macos-${{ matrix.platform.target }}-${{ matrix.python-version }} | |
path: dist | |
- name: pytest | |
shell: bash | |
run: | | |
set -e | |
pip install pyreqwest_impersonate --no-index --find-links dist --force-reinstall | |
pip install pytest | |
pytest | |
sdist: | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Build sdist | |
uses: PyO3/maturin-action@v1 | |
with: | |
command: sdist | |
args: --out dist | |
- name: Upload sdist | |
uses: actions/upload-artifact@v4 | |
with: | |
name: wheels-sdist | |
path: dist | |
release: | |
name: Release | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [linux, musllinux, windows, macos, sdist] | |
steps: | |
- uses: actions/download-artifact@v4 | |
- name: Publish to PyPI | |
uses: PyO3/maturin-action@v1 | |
env: | |
MATURIN_PYPI_TOKEN: ${{ secrets.PYPI_API_TOKEN }} | |
with: | |
command: upload | |
args: --non-interactive --skip-existing wheels-*/* | |
benchmark: | |
permissions: | |
contents: write | |
runs-on: ubuntu-latest | |
if: "startsWith(github.ref, 'refs/tags/')" | |
needs: [release] | |
steps: | |
- uses: actions/checkout@v4 | |
- name: Set up Python | |
uses: actions/setup-python@v5 | |
with: | |
python-version: '3.12' | |
- name: Install dependencies | |
run: | | |
sleep 30 # Wait for the package to be available on PyPI | |
python -m pip install --upgrade pip | |
pip install -r benchmark/requirements.txt | |
- name: Start Uvicorn server | |
run: | | |
uvicorn benchmark.server:app --host 0.0.0.0 --port 8000 & | |
sleep 10 | |
- name: Run benchmark | |
run: python benchmark/benchmark.py | |
- name: Generate image and commit to the new branch | |
run: | | |
python benchmark/generate_image.py | |
git config --global user.name 'GitHub Actions' | |
git config --global user.email 'actions@github.com' | |
git add \*.jpg | |
git diff --quiet && git diff --staged --quiet || git commit -m "Update generated image" | |
# Create a new branch and switch to it | |
git checkout -b update-generated-image | |
# Attempt to push changes to the new branch | |
git push https://${{ secrets.PUSH_TOKEN }}@github.com/deedy5/pyreqwest_impersonate.git update-generated-image || echo "No changes to push" | |
- name: Merge changes into main and delete temporary branch | |
run: | | |
# Fetch the latest changes from the remote repository | |
git fetch origin | |
# Merge the temporary branch into main | |
git checkout main | |
git merge update-generated-image | |
# Push the changes to the main branch | |
git push https://${{ secrets.PUSH_TOKEN }}@github.com/deedy5/pyreqwest_impersonate.git main | |
# Delete the temporary branch | |
git push origin --delete update-generated-image |