Skip to content

PEP 658 metadata download to speed up builds #842

PEP 658 metadata download to speed up builds

PEP 658 metadata download to speed up builds #842

Workflow file for this run

# Based on https://fedoramagazine.org/github-actions-use-podman-to-run-fedora-linux/
name: CI
on:
pull_request:
jobs:
unit:
name: unit
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version:
- "3.11"
- "3.12"
rust-version:
# RHEL 9.4 has rustc 1.75
- "1.75"
os:
- ubuntu-latest
- macos-latest
steps:
- name: Get source
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Rust ${{ matrix.rust-version }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust-version }}
default: true
override: true
- name: Install dependencies
run: python -m pip install tox
- name: Run tests
run: tox -e py
- name: Run tests for pyo3_test
working-directory: ./e2e/pyo3_test/
run: tox -e py
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage-unit-py${{ matrix.python-version }}-rs${{ matrix.rust-version }}-${{ matrix.os }}
path: .coverage.*
include-hidden-files: true
if-no-files-found: ignore
retention-days: 1
e2e:
name: e2e
runs-on: ${{ matrix.os }}
strategy:
fail-fast: false
matrix:
python-version:
- "3.11"
- "3.12"
rust-version:
# RHEL 9.4 has rustc 1.75
- "1.75"
test-script:
- bootstrap
- bootstrap_extras
- bootstrap_build_tags
- bootstrap_prerelease
- build
- build_order
- build_steps
- build_settings
- meson
- migrate_graph
- override
- pep517_build_sdist
- prebuilt_wheels_alt_server
- report_missing_dependency
- rust_vendor
- download_sequence
- optimize_build
- extra_metadata
- elfdeps
os:
- ubuntu-latest
- macos-latest
exclude:
# macOS tests are slower and congested
# only run macOS tests on latest stable Python version
- os: macos-latest
python-version: "3.11"
steps:
- name: Get source
uses: actions/checkout@v4
- name: Set up Python ${{ matrix.python-version }}
uses: actions/setup-python@v5
with:
python-version: ${{ matrix.python-version }}
- name: Set up Rust ${{ matrix.rust-version }}
uses: actions-rs/toolchain@v1
with:
toolchain: ${{ matrix.rust-version }}
default: true
override: true
- name: Install dependencies
run: python -m pip install tox
- name: Run tests
run: ./e2e/test_${{ matrix.test-script }}.sh
- name: Upload logs for debugging
if: ${{ failure() }}
uses: actions/upload-artifact@v4
with:
name: ${{ matrix.test-script }}-py${{ matrix.python-version }}-rs${{ matrix.rust-version }}-${{ matrix.os }}
path: e2e-output
- name: Upload coverage
uses: actions/upload-artifact@v4
with:
name: coverage-e2e-${{ matrix.test-script }}-py${{ matrix.python-version }}-rs${{ matrix.rust-version }}-${{ matrix.os }}
path: .coverage.*
include-hidden-files: true
if-no-files-found: ignore
retention-days: 1
coverage:
name: Coverage report
runs-on: ubuntu-latest
needs:
- unit
- e2e
steps:
- uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Set up Python
uses: actions/setup-python@v5
with:
python-version: 3.12
cache: pip
cache-dependency-path: |
**/pyproject.toml
**/tox.ini
- name: Install dependencies
run: |
python -m pip install --upgrade pip
python -m pip install coverage[toml]
- name: Download coverage data
uses: actions/download-artifact@v4
with:
pattern: coverage-*
merge-multiple: true
- name: Coverage report
run: |
coverage combine
coverage html
coverage report --format=markdown >> $GITHUB_STEP_SUMMARY
coverage report --fail-under=60
- name: Upload report
uses: actions/upload-artifact@v4
with:
path: htmlcov
name: htmlcov
retention-days: 7