Skip to content

Run tests for all wheels #2241

Run tests for all wheels

Run tests for all wheels #2241

Workflow file for this run

name: CI
on:
push:
branches:
- dev
pull_request:
env:
UV_CACHE_DIR: /tmp/.uv-cache
jobs:
code-quality:
runs-on: "ubuntu-latest"
name: Check code quality
steps:
- name: ⤵️ Checkout repository
uses: actions/checkout@v4
- name: 🏗 Install uv and Python
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
cache-dependency-glob: "uv.lock"
cache-local-path: ${{ env.UV_CACHE_DIR }}
- name: 🏗 Install the project
run: uv sync --locked --dev
# Following steps cannot run by pre-commit.ci as repo = local
- name: Run mypy
run: uv run --frozen mypy deebot_client/
- name: Pylint review
run: uv run --frozen pylint deebot_client/**/*.py
- name: Verify no getLogger usages
run: scripts/check_getLogger.sh
wheels:
name: Py${{ matrix.python-version }} on ${{ matrix.config.platform }} with ${{ matrix.config.manylinux }}
runs-on: ubuntu-latest
strategy:
fail-fast: false
matrix:
config:
# - platform: "x86_64"
# manylinux: "musllinux_1_2"
# before-script: "sudo apt update && sudo apt install -y pkg-config liblzma-dev"
- platform: "x86_64"
manylinux: "manylinux_2_28"
before-script: "yum install -y xz-devel"
- platform: "armv7"
manylinux: "manylinux_2_28"
before-script: "sudo apt update && sudo apt install -y pkg-config liblzma-dev"
- platform: "aarch64"
manylinux: "manylinux_2_28"
before-script: "sudo apt update && sudo apt install -y pkg-config liblzma-dev"
python-version:
- "3.12"
- "3.13"
steps:
- name: ⤵️ Check out code from GitHub
uses: actions/[email protected]
- name: 🏗 Set up uv and Python ${{ matrix.python-version }}
uses: astral-sh/setup-uv@v5
with:
enable-cache: true
python-version: ${{ matrix.python-version }}
- name: 🏗 Set package version
if: ${{ github.event_name == 'release' }}
run: |
sed -i "s/^version = \".*\"/version = \"${{ github.event.release.tag_name }}\"/" pyproject.toml
- name: 🏗 Prepare for build
run: |
uv sync --locked --only-dev
python3 -m ensurepip
- name: Cache Docker images.
uses: ScribeMD/[email protected]
with:
key: docker-${{ runner.os }}-${{ matrix.config.platform }}-${{ matrix.config.manylinux }}
- name: 📦 Build wheel
uses: PyO3/maturin-action@v1
id: build
with:
target: ${{ matrix.config.platform }}
args: --release --out dist -i ${{ matrix.python-version}}
manylinux: ${{ matrix.config.manylinux }}
before-script-linux: ${{ matrix.config.before-script }}
- name: ⬆️ Upload wheel
uses: actions/upload-artifact@v4
with:
name: wheels-${{ matrix.python-version }}-${{ matrix.config.manylinux }}-${{ matrix.config.platform }}
path: dist
- name: Remove sources to avoid conflicts during tests
run: |
rm -rf deebot_client*
- name: pytest
if: ${{ startsWith(matrix.config.manylinux, 'manylinux') && matrix.config.platform == 'x86_64' }}
shell: bash
run: |
set -e
uv pip install --force-reinstall dist/*
pytest tests --cov=./ --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
- name: pytest
if: ${{ startsWith(matrix.config.manylinux, 'manylinux') && matrix.config.platform != 'x86_64' }}
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.config.platform }}
distro: ubuntu_latest
githubToken: ${{ github.token }}
install: |
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync --locked --only-dev
run: |
set -e
uv pip install --force-reinstall dist/*
pytest tests --cov=./ --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
- name: pytest
if: ${{ startsWith(matrix.config.manylinux, 'musllinux') && matrix.config.platform == 'x86_64' }}
uses: addnab/docker-run-action@v3
with:
image: alpine:latest
options: -v ${{ github.workspace }}:/io -w /io
run: |
set -e
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync --locked --only-dev
uv pip install --force-reinstall dist/*
pytest tests --cov=./ --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
- name: pytest
if: ${{ startsWith(matrix.config.manylinux, 'musllinux') && matrix.config.platform != 'x86_64' }}
uses: uraimo/run-on-arch-action@v2
with:
arch: ${{ matrix.config.platform }}
distro: alpine_latest
githubToken: ${{ github.token }}
install: |
curl -LsSf https://astral.sh/uv/install.sh | sh
uv sync --locked --only-dev
run: |
set -e
uv pip install --force-reinstall dist/*
pytest tests --cov=./ --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
- name: Upload coverage to Codecov
uses: codecov/codecov-action@v5
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
- name: Upload test results to Codecov
if: ${{ !cancelled() && steps.build.conclusion == 'success' }}
uses: codecov/test-results-action@v1
with:
token: ${{ secrets.CODECOV_TOKEN }}
fail_ci_if_error: true
sdist:
if: ${{ github.event_name == 'release' }}
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