CI: update checkout, setup-python, setup-uv, codecov - #83
Merged
Conversation
setup-uv's cache 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 v5 -> 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. Also bumped actions/checkout and actions/setup-python to v7 (every occurrence, including both in publish.yml's build and deploy jobs), and codecov/codecov-action to v7 in test.yml, clearing the "Node.js 20 is deprecated" warning entirely. codecov-action's v5 rewrite dropped the `file` input this workflow used; renamed to `files`, its replacement. Left `prune-cache` at its new default (off): audresample's only runtime dependency is numpy, and its dev dependency group (audiofile, audeer, matplotlib, pytest, sphinx, etc.) has no large pre-built wheels like torch, so pruning would save ~0 disk space while costing avoidable re-downloads on every run. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reviewer's guide (collapsed on small PRs)Reviewer's GuideUpdates all GitHub Actions workflows to use newer, Node 20–compatible action versions and fixes uv caching and Codecov upload configuration by bumping astral-sh/setup-uv, actions/checkout, actions/setup-python, and codecov/codecov-action with minimal behavioral changes otherwise. Sequence diagram for updated CI test workflow using new actions and uv cachingsequenceDiagram
actor Developer
participant GitHub_Actions
participant actions_checkout
participant actions_setup_python
participant setup_uv
participant codecov_action
Developer->>GitHub_Actions: push or pull_request
GitHub_Actions->>actions_checkout: actions/checkout@v7
GitHub_Actions->>actions_setup_python: actions/setup-python@v7
GitHub_Actions->>setup_uv: astral-sh/setup-uv@v9.0.0
alt [pyproject.toml unchanged]
setup_uv-->>GitHub_Actions: [use cached environment]
else [pyproject.toml changed]
setup_uv-->>GitHub_Actions: [create and cache new environment]
end
GitHub_Actions->>codecov_action: codecov/codecov-action@v7
codecov_action-->>GitHub_Actions: [coverage files processed with files input]
File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
hagenw
approved these changes
Aug 5, 2026
This was referenced Aug 5, 2026
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 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/audinterface
that referenced
this pull request
Aug 5, 2026
* 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 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/auglib
that referenced
this pull request
Aug 5, 2026
* 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 <noreply@anthropic.com> * 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 (v2 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 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/audmath
that referenced
this pull request
Aug 5, 2026
* Fix CI caching; bump checkout/setup-python off Node.js 20 setup-uv's cache 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 from the floating tag v5 -> 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. v7.0.0 also carries the Node 20 -> Node 24 runtime bump. Also bumped actions/checkout and actions/setup-python from v4/v5 to v7, and codecov/codecov-action from v4 to v7, clearing the "Node.js 20 is deprecated" warning entirely. codecov-action's v5 rewrite dropped the `file` input this workflow used; renamed to `files`, its replacement. No actions/cache usage exists in this repo's workflows. Left `prune-cache` at its new default (off): audmath's only runtime dependency is numpy, with no large pre-built binary wheels like torch, so pruning would save ~0 disk space while costing avoidable re-downloads. Same cleanup as audeering/audeer#206, audeering/opensmile-python#132, audeering/audb#591, audeering/audformat#539, audeering/audbackend#307, audeering/audresample#83, audeering/auglib#60, audeering/audonnx#115, audeering/audinterface#206, and audeering/audiofile#193. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/audmetric
that referenced
this pull request
Aug 5, 2026
* Fix CI caching; bump checkout/setup-python off Node.js 20 setup-uv's cache 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 (pinned via SHA 3259c6206f99, which resolves to tag v7.1.0) -> 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. Note the existing pin already sat at v7.1.0, past both the caching fix (v6.0.0) and the Node 20 -> Node 24 runtime bump (v7.0.0), so neither bug technically applied to this action here -- bumping to v9.0.0 anyway for consistency across the sibling repos in this cleanup, matching what was done for audformat's and audbackend's setup-uv pins after the fact (same SHA-pin situation). Also bumped actions/checkout and actions/setup-python from v4/v5 to v7, and codecov/codecov-action from v4 to v7, clearing the "Node.js 20 is deprecated" warning entirely. codecov-action's v5 rewrite dropped the `file` input this workflow used; renamed to `files`, its replacement. No actions/cache usage exists in this repo's workflows. Left `prune-cache` at its new default (off): audmetric's runtime dependencies (audeer, numpy) have no large pre-built binary wheels like torch, so pruning would save ~0 disk space while costing avoidable re-downloads. Same cleanup as audeering/audeer#206, audeering/opensmile-python#132, audeering/audb#591, audeering/audformat#539, audeering/audbackend#307, audeering/audresample#83, audeering/auglib#60, audeering/audonnx#115, audeering/audinterface#206, and audeering/audiofile#193. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/audobject
that referenced
this pull request
Aug 5, 2026
* Fix CI caching; bump checkout/setup-python off Node.js 20 setup-uv's cache 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 from v5 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. v7.0.0 also moved the action off the deprecated Node.js 20 runtime. Also bumped actions/checkout and actions/setup-python from v4/v5 to v7, and codecov/codecov-action from v4 to v7, clearing the "Node.js 20 is deprecated" warning entirely. codecov-action's v5 rewrite dropped the `file` input this workflow used; renamed to `files`, its replacement, in test.yml so the coverage upload doesn't silently no-op. No actions/cache usage exists in this repo's workflows. Left `prune-cache` at its new default (off): audobject's runtime dependencies (asttokens, audeer, oyaml, packaging) have no large pre-built binary wheels like torch, so pruning would save ~0 disk space while costing avoidable re-downloads. Same cleanup as audeering/audeer#206, audeering/opensmile-python#132, audeering/audb#591, audeering/audformat#539, audeering/audbackend#307, audeering/audresample#83, audeering/auglib#60, audeering/audonnx#115, audeering/audinterface#206, audeering/audiofile#193, and audeering/audmath#76, audeering/audmetric#94. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/audiofile
that referenced
this pull request
Aug 5, 2026
* 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 <noreply@anthropic.com> * 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 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
ChristianGeng
added a commit
to audeering/audplot
that referenced
this pull request
Aug 5, 2026
* 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. This repo's setup-uv pin was already a SHA (3259c6206f993105e3a61b142c2d97bf4b9ef83d) that resolves to tag v7.1.0 — past the fix that matters here (v6.0.0 added pyproject.toml to the default glob) and past the Node 20 -> Node 24 runtime bump (v7.0.0). Bumping to v9.0.0 anyway, for consistency with the other repos in this cleanup. 2. Node.js 20 deprecation: actions/checkout and actions/setup-python bumped v4/v5 -> v7, clearing the "Node.js 20 is deprecated" warning. codecov/codecov-action bumped v4 -> v7; its v5 rewrite dropped the singular `file:` input in favor of `files:`, renamed accordingly. No actions/cache usage exists in this repo's workflows. Left `prune-cache` at its new default (off): audplot's dependency tree (audmath, audmetric, matplotlib, pandas, seaborn) has no large pre-built binary wheels like torch, 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, audeering/audresample#83, audeering/auglib#60, audeering/audonnx#115, audeering/audinterface#206, audeering/audiofile#193, audeering/audmath#76, audeering/audmetric#94, audeering/audmodel#63, and audeering/audobject#127. Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com> * 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 <noreply@anthropic.com> --------- Co-authored-by: cgeng <cgeng@audeering.com> Co-authored-by: Claude Sonnet 5 <noreply@anthropic.com>
This file contains hidden or 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
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Problem
Two related CI bugs, both caused by stale GitHub Action version pins:
astral-sh/setup-uv's defaultcache-dependency-globon
v5is**/uv.lock+**/requirements*.txt. audresample is a librarywith no committed lockfile (by design, to test against latest resolvable
deps), so the glob never matches and caching silently never worked.
actions/checkout@v4,actions/setup-python@v5, andcodecov/codecov-action@v4all stilltarget the deprecated Node 20 runtime.
Fix
astral-sh/setup-uv@v5->@v9.0.0(exact tag; this repo does notpublish a floating major tag).
v6.0.0addedpyproject.tomlto thedefault
cache-dependency-glob, and it stayed there throughv9.0.0.pyproject.tomlis committed and changes exactly when a dependency does,so caching now works with no lockfile needed. Bumped in all four
workflow files, including both occurrences in
publish.yml(build anddeploy jobs).
actions/checkout@v4->@v7,actions/setup-python@v5->@v7(every occurrence), clearing the Node.js 20 deprecation warning.
codecov/codecov-action@v4->@v7intest.yml. Itsv5rewritedropped the singular
file:input in favor offiles:(plural); renamedaccordingly so coverage upload doesn't silently get ignored.
actions/cacheis not used anywhere in this repo, so no change neededthere.
prune-cache
setup-uv's default forprune-cachechanged fromtruetofalseatv9.0.0. Left it at the new default: audresample's only runtime dependencyis
numpy, and its dev dependency group (audiofile, audeer, matplotlib,pytest, sphinx, etc.) has no large pre-built wheels like
torch, sopruning would save ~0 disk space while costing avoidable re-downloads on
every run.
Related
Same pattern already applied and merged in: