Configure Renovate - autoclosed #1041
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
name: CI | |
on: | |
push: | |
branches: | |
- main | |
pull_request: | |
schedule: | |
# run this every Wednesday at 3 am UTC | |
- cron: 0 3 * * 3 | |
workflow_dispatch: | |
concurrency: | |
# auto-cancel any in-progress job *on the same branch* | |
group: ${{ github.workflow }}-${{ github.ref }} | |
cancel-in-progress: true | |
jobs: | |
build-test: | |
runs-on: ubuntu-latest | |
steps: | |
- name: Checkout Source | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
- name: Check build | |
run: | | |
uvx check-manifest | |
uv build | |
unit-tests: | |
name: ${{matrix.os}} x py${{matrix.python-version}} ${{matrix.marker}} | |
strategy: | |
fail-fast: false | |
matrix: | |
os: | |
- ubuntu-latest | |
python-version: | |
- '3.11' | |
- '3.12' | |
- '3.13' | |
marker: [''] # needed to avoid collision with PY_LIB job | |
include: | |
- os: macos-latest | |
python-version: '3.13' | |
- os: windows-latest | |
python-version: '3.13' | |
# test GPGI_PY_LIB | |
- marker: PY_LIB | |
os: ubuntu-latest | |
python-version: '3.13' | |
runs-on: ${{ matrix.os }} | |
steps: | |
- name: Checkout Source | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
- name: Test | |
env: | |
GPGI_PY_LIB: ${{ matrix.marker == 'PY_LIB' }} | |
shell: bash # for windows-compat (using `\` as a line continuation) | |
# TODO: add --no-editable | |
run: | | |
uv run --frozen --group covcheck \ | |
coverage run --parallel-mode -m pytest --color=yes -ra | |
- name: Upload coverage data | |
# only using reports from ubuntu because | |
# combining reports from multiple platforms is tricky (or impossible ?) | |
if: matrix.os == 'ubuntu-latest' | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: gpgi_coverage_data-${{matrix.os}}-${{matrix.python-version}}-${{matrix.marker}} | |
path: .coverage.* | |
if-no-files-found: ignore | |
include-hidden-files: true | |
minimal-env: | |
name: Minimal requirements | |
runs-on: ubuntu-20.04 | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: actions/setup-python@0b93645e9fea7318ecaed2b359559ac225c90a2b # v5.3.0 | |
with: | |
# setup-uv doesn't have this exact version of Python | |
python-version: 3.11.0 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
- name: Test | |
run: | | |
uv run --python-preference=only-system \ | |
--resolution=lowest-direct \ | |
--no-editable --group test \ | |
pytest --color=yes -ra | |
image-tests: | |
name: Image tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
with: | |
python-version: '3.13' | |
enable-cache: true | |
- name: Run Image Tests | |
run: | | |
uv run --frozen --no-editable --group test \ | |
pytest --color=yes --mpl -m mpl_image_compare \ | |
--mpl-generate-summary=html \ | |
--mpl-results-path=gpgi_pytest_mpl_results \ | |
--mpl-baseline-path=tests/pytest_mpl_baseline | |
- name: Generate new image baseline | |
if: failure() | |
run: | | |
uv run --frozen --no-editable --group test \ | |
pytest --color=yes --mpl -m mpl_image_compare \ | |
--mpl-generate-path=gpgi_pytest_mpl_new_baseline \ | |
--last-failed | |
# always attempt to upload artifacts, even | |
# (and especially) in case of failure. | |
- name: Upload pytest-mpl report | |
if: always() | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: gpgi_pytest_mpl_results | |
path: gpgi_pytest_mpl_results/* | |
- name: Upload pytest-mpl baseline | |
if: always() | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: gpgi_pytest_mpl_new_baseline | |
path: gpgi_pytest_mpl_new_baseline/* | |
if-no-files-found: ignore | |
concurrency-tests: | |
name: Thread concurrency tests | |
runs-on: ubuntu-latest | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
with: | |
python-version: '3.13' | |
enable-cache: true | |
- name: Run Concurrency Tests | |
run: | | |
uv run --frozen --no-editable --group concurrency \ | |
pytest --color=yes --count 500 tests/test_concurrent.py | |
coverage: | |
name: Combine & check coverage. | |
runs-on: ubuntu-latest | |
needs: unit-tests | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
with: | |
python-version: '3.13' | |
- uses: actions/download-artifact@fa0a91b85d4f404e444e00e005971372dc801d16 # v4.1.8 | |
with: | |
pattern: gpgi_coverage_data-* | |
merge-multiple: true | |
- name: Check coverage | |
run: | | |
uv tool install coverage | |
coverage combine | |
coverage html --skip-covered --skip-empty | |
coverage report --fail-under=100 # >> $GITHUB_STEP_SUMMARY | |
- name: Upload HTML report if check failed. | |
uses: actions/upload-artifact@b4b15b8c7c6ac21ea08fcf65892d2ee8f75cf882 # v4.4.3 | |
with: | |
name: gpgi_coverage_report | |
path: htmlcov | |
if: ${{ failure() }} | |
typecheck: | |
strategy: | |
matrix: | |
python-version: | |
- '3.11' | |
- '3.12' | |
- '3.13' | |
runs-on: ubuntu-latest | |
name: type check | |
steps: | |
- name: Checkout repo | |
uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
with: | |
python-version: ${{ matrix.python-version }} | |
enable-cache: true | |
- name: Typecheck | |
run: | | |
uv run --frozen --no-editable --group typecheck mypy src/gpgi | |
future: | |
name: py${{ matrix.python-version }} | |
runs-on: ubuntu-latest | |
timeout-minutes: 20 | |
strategy: | |
fail-fast: false | |
matrix: | |
python-version: | |
#- 3.14-dev | |
- 3.13t | |
steps: | |
- uses: actions/checkout@11bd71901bbe5b1630ceea73d27597364c9af683 # v4.2.2 | |
# TODO: ditch Quansight-Labs/setup-python when either condition is met | |
# - setup-uv support Python pre-releases | |
# - actions/setup-python support free-threaded versions | |
# see https://github.com/actions/setup-python/issues/771 | |
- uses: Quansight-Labs/setup-python@b9ab292c751a42bcd2bb465b7fa202ea2c3f5796 # v5.3.1 | |
with: | |
python-version: ${{ matrix.python-version }} | |
- uses: astral-sh/setup-uv@38f3f104447c67c051c4a08e39b64a148898af3a # v4.2.0 | |
- name: Configure uv | |
run: | | |
echo "UV_PYTHON_PREFERENCE=only-system" >> $GITHUB_ENV | |
pin=${{ matrix.python-version }} | |
echo "UV_PYTHON=${pin%-dev}" >> $GITHUB_ENV | |
echo "UV_PRERELEASE=allow" >> $GITHUB_ENV | |
echo "UV_EXTRA_INDEX_URL=https://pypi.anaconda.org/scientific-python-nightly-wheels/simple" >> $GITHUB_ENV | |
- name: Set PYTHON_GIL | |
if: ${{ endswith( matrix.python-version , 't' ) }} | |
run: | | |
echo "PYTHON_GIL=0" >> $GITHUB_ENV | |
echo | |
- name: Build | |
run: | | |
uv venv | |
uv lock --upgrade --prerelease=allow --no-build | |
uv pip install setuptools numpy Cython | |
uv pip install --no-build-isolation --no-deps . | |
- run: uv pip list | |
- name: Unit Tests | |
run: | | |
uv run --no-editable --group test pytest --color=yes -ra | |
- name: Concurrency tests | |
run: | | |
uv run --no-editable --group concurrency \ | |
pytest --color=yes -ra --count 500 tests/test_concurrent.py | |
create-issue: | |
if: ${{ failure() && github.event_name == 'schedule' }} | |
needs: [future] | |
permissions: | |
issues: write | |
runs-on: ubuntu-latest | |
name: Create issue on failure | |
steps: | |
- name: Create issue on failure | |
uses: imjohnbo/issue-bot@572eed14422c4d6ca37e870f97e7da209422f5bd # v3.4.4 | |
with: | |
title: 'TST: Upcoming dependency test failures' | |
body: | | |
The weekly build with future Python, Cython and numpy | |
has failed. Check the logs for any updates that need to be | |
made in gpgi. | |
https://github.com/${{github.repository}}/actions/runs/${{github.run_id}} | |
pinned: false | |
close-previous: false | |
env: | |
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }} |