From 18c6b491dc3e041624b3a701db160c6771851f6c Mon Sep 17 00:00:00 2001 From: cgeng Date: Wed, 5 Aug 2026 13:39:07 +0200 Subject: [PATCH 1/3] 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 | 6 +++--- .github/workflows/linter.yml | 6 +++--- .github/workflows/publish.yml | 6 +++--- .github/workflows/test.yml | 8 ++++---- 4 files changed, 13 insertions(+), 13 deletions(-) diff --git a/.github/workflows/doc.yml b/.github/workflows/doc.yml index dbf92432..59e324e5 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -16,15 +16,15 @@ jobs: python-version: [ '3.12' ] steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - 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@3259c6206f993105e3a61b142c2d97bf4b9ef83d + uses: astral-sh/setup-uv@v9.0.0 - name: Ubuntu - install libsndfile run: | diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 17916be1..61fe15be 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 - uses: actions/setup-python@v5 + uses: actions/setup-python@v7 with: python-version: '3.12' - name: Install uv - uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d + 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 6053d2d6..373f1529 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -16,15 +16,15 @@ 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.12' - name: Install uv - uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d + uses: astral-sh/setup-uv@v9.0.0 - name: Prepare Ubuntu run: | sudo apt-get update diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 2ede6d0b..3a59d703 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -23,7 +23,7 @@ jobs: sox: [ sox, no-sox ] # sox binary present or not steps: - - uses: actions/checkout@v4 + - uses: actions/checkout@v7 - name: Set up Python ${{ matrix.python-version }} with Micromamba uses: mamba-org/setup-micromamba@v1 @@ -38,7 +38,7 @@ jobs: run: micromamba activate venv - name: Install uv - uses: astral-sh/setup-uv@3259c6206f993105e3a61b142c2d97bf4b9ef83d + uses: astral-sh/setup-uv@v9.0.0 - name: Install sox with Micromamba run: micromamba install sox @@ -78,8 +78,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 0249503e8167e320ef271a30727117f2dc702330 Mon Sep 17 00:00:00 2001 From: cgeng Date: Wed, 5 Aug 2026 14:36:19 +0200 Subject: [PATCH 2/3] Bump mamba-org/setup-micromamba off Node.js 20 too Left this untouched in the first commit since it wasn't one of the four actions this rollout targets, but it still triggers its own "Node.js 20 is deprecated" warning (v1 targets Node 20). v3.0.0 updated it to run on Node 24, so bump it too -- otherwise the PR's own claim of clearing the Node.js 20 warning entirely isn't actually true for this repo. Co-Authored-By: Claude Sonnet 5 --- .github/workflows/test.yml | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 3a59d703..beb150d5 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -26,7 +26,7 @@ jobs: - uses: actions/checkout@v7 - name: Set up Python ${{ matrix.python-version }} with Micromamba - uses: mamba-org/setup-micromamba@v1 + uses: mamba-org/setup-micromamba@v3 with: cache-environment: true environment-name: venv From e6896360e4d83aa58398c2317802555475551c42 Mon Sep 17 00:00:00 2001 From: cgeng Date: Wed, 5 Aug 2026 14:54:36 +0200 Subject: [PATCH 3/3] 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 59e324e5..674582ee 100644 --- a/.github/workflows/doc.yml +++ b/.github/workflows/doc.yml @@ -25,6 +25,8 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} - name: Ubuntu - install libsndfile run: | diff --git a/.github/workflows/linter.yml b/.github/workflows/linter.yml index 61fe15be..3ced0899 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 373f1529..8b03ce5b 100644 --- a/.github/workflows/publish.yml +++ b/.github/workflows/publish.yml @@ -25,6 +25,8 @@ jobs: python-version: '3.12' - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} - name: Prepare Ubuntu run: | sudo apt-get update diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index beb150d5..26244a75 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -39,6 +39,8 @@ jobs: - name: Install uv uses: astral-sh/setup-uv@v9.0.0 + with: + cache-suffix: ${{ github.workflow }} - name: Install sox with Micromamba run: micromamba install sox