PEP 658 metadata download to speed up builds #842
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
# 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 |