Skip to content

Run tests for all wheels #2260

Run tests for all wheels

Run tests for all wheels #2260

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
armv7_job:
# The host should always be Linux
runs-on: ubuntu-22.04
name: Build on ubuntu-22.04 armv7
steps:
- uses: actions/checkout@v4
- uses: uraimo/run-on-arch-action@v2
name: Run commands
id: runcmd
with:
arch: armv7
distro: alpine_latest
# Not required, but speeds up builds by storing container images in
# a GitHub package registry.
# githubToken: ${{ github.token }}
# Install some dependencies in the container. This speeds up builds if
# you are also using githubToken. Any dependencies installed here will
# be part of the container image that gets cached, so subsequent
# builds don't have to re-install them. The image layer is cached
# publicly in your project's package repository, so it is vital that
# no secrets are present in the container state or logs.
install: |
set -euxo pipefail
apk add --no-cache xz-dev
wget -qO- https://astral.sh/uv/install.sh | sh
source $HOME/.local/bin/env
uv python install 3.13
# Set an output parameter `uname` for use in subsequent steps
run: |
set -euxo pipefail
source $HOME/.local/bin/env
uv sync --frozen --dev
uv build --wheel
rm -rf deebot_client*
uv pip install --force-reinstall dist/*
pytest tests --cov=./ --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
# test:
# runs-on: "ubuntu-latest"
# steps:
# - name: ⤵️ Checkout repository
# uses: actions/checkout@v4
# - name: Build for Alpine targets
# uses: addnab/docker-run-action@v3
# with:
# image: ghcr.io/astral-sh/uv:alpine
# run: |
# apk add --no-cache xz-dev
# uv venv -p 3.13
# ls -al
# uv build --wheel
# rm -rf deebot_client*
# uv sync --locked --only-dev
# uv pip install --force-reinstall dist/*
# pytest tests --cov=./ --cov-report=xml --junitxml=junit.xml -o junit_family=legacy
# 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