From 2e4d1703964f0a659549cc648ead3d8ebbf03deb Mon Sep 17 00:00:00 2001 From: cgeng Date: Wed, 5 Aug 2026 13:39:04 +0200 Subject: [PATCH 1/2] Fix CI caching; bump checkout/setup-python off Node.js 20 Two related CI bugs, both caused by stale GitHub Action version pins: 1. Dead uv caching: astral-sh/setup-uv's default cache-dependency-glob keys on uv.lock/requirements*.txt, neither of which exists here (no committed lockfile, by design), so caching never actually worked. Bumped astral-sh/setup-uv to v9.0.0: v6.0.0 added pyproject.toml to the default glob, which is committed and changes exactly when a dependency does, so caching now works with no lockfile needed. 2. Node.js 20 deprecation: actions/checkout and actions/setup-python bumped to v7, clearing the "Node.js 20 is deprecated" warning. codecov/codecov-action bumped to v7; its v5 rewrite dropped the singular `file:` input in favor of `files:`, renamed accordingly. actions/cache (where used, for test-data caching) bumped to v6 for the same reason. Left `prune-cache` at its new default (off): no large pre-built binary wheels like torch in this repo's dependency tree, so pruning would save ~0 disk space while costing avoidable re-downloads. Part of the same CI cleanup as audeering/audeer#206, audeering/opensmile-python#132, audeering/audb#591, audeering/audformat#539, audeering/audbackend#307, and audeering/audresample#83. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/doc.yml | 8 ++++---- .github/workflows/linter.yml | 6 +++--- .github/workflows/publish.yml | 6 +++--- .github/workflows/test.yml | 12 ++++++------ 4 files changed, 16 insertions(+), 16 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 859c83e..11cd79a 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -16,21 +16,21 @@ jobs: python-version: [ '3.10' ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Cache emodb - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/audb key: emodb-1.3.0 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: ${{ matrix.python-version }} - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v9.0.0 - name: Ubuntu - install libsndfile1 and portaudio run: | diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index b2db86f..2acceec 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -12,15 +12,15 @@ jobs: runs-on: ubuntu-latest steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Set up Python 3.10 - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: '3.10' - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v9.0.0 - name: Install pre-commit hooks run: uvx pre-commit install --install-hooks diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 43bd091..0621b4d 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,17 +16,17 @@ jobs: group: ${{ github.workflow }}-${{ github.ref }} steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 with: fetch-depth: 2 - name: Set up Python - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: '3.10' - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v9.0.0 # PyPI package diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 596d89a..1657040 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -16,21 +16,21 @@ jobs: python-version: [ '3.10', '3.11', '3.12', '3.13', '3.14' ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Cache emodb - uses: actions/cache@v4 + uses: actions/cache@v6 with: path: ~/audb key: emodb-1.3.0 - name: Set up Python ${{ matrix.python-version }} - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: ${{ matrix.python-version }} - name: Install uv - uses: astral-sh/setup-uv@v5 + uses: astral-sh/setup-uv@v9.0.0 - name: Prepare Macos run: | @@ -50,8 +50,8 @@ jobs: run: uv run pytest - name: Upload coverage to Codecov - uses: codecov/codecov-action@v4 + uses: codecov/codecov-action@v7 with: token: ${{ secrets.CODECOV_TOKEN }} - file: ./coverage.xml + files: ./coverage.xml if: matrix.os == 'ubuntu-latest' From e41b243bf2bce793f21128abd8593db94a71103a Mon Sep 17 00:00:00 2001 From: cgeng Date: Wed, 5 Aug 2026 14:54:34 +0200 Subject: [PATCH 2/2] Give each workflow its own uv cache to stop reservation races Documentation, Linter, Test, and Publish jobs sometimes land on an identical setup-uv cache key (same OS + Python version + dependency-file hash), so whichever job finishes first saves the cache and the others get "Failed to save: Unable to reserve cache with key ..., another job may be creating this cache." Harmless -- the losing job's save would have been byte-identical anyway -- but requested clean, warning-free CI across the board. Added `cache-suffix: ${{ github.workflow }}` to every setup-uv step, so each workflow gets its own cache entry instead of racing to share one. Trade-off: workflows no longer share a warm cache with each other, so each pays its own first-run cost independently instead of one job seeding it for the rest. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/doc.yml | 2 ++ .github/workflows/linter.yml | 2 ++ .github/workflows/publish.yml | 2 ++ .github/workflows/test.yml | 2 ++ 4 files changed, 8 insertions(+) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index 11cd79a..6198021 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -31,6 +31,8 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} - name: Ubuntu - install libsndfile1 and portaudio run: | diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 2acceec..5b51d01 100644 --- a/.github/workflows/linter.yml +++ b/.github/workflows/linter.yml @@ -21,6 +21,8 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} - name: Install pre-commit hooks run: uvx pre-commit install --install-hooks diff --git a/.github/workflows/publish.yml b/.github/workflows/publish.yml index 0621b4d..d8a480f 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -27,6 +27,8 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} # PyPI package diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 1657040..cb33c29 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -31,6 +31,8 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} - name: Prepare Macos run: |