Fix CI caching; bump checkout/setup-python off Node.js 20 - #35
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 (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 rollout (audeer#206, opensmile-python#132, audb#591,
audformat#539, audbackend#307, audresample#83, auglib#60, audonnx#115,
audinterface#206, audiofile#193, audmath#76, audmetric#94, audmodel#63,
audobject#127, audplot#89, audpsychometric#29).
Also bumped actions/checkout and actions/setup-python from v4/v5 to
v7, and actions/cache from v4 to v6 (used for the .cache/audbcards
cache in doc.yml, pages.yml, and publish.yml -- path and key left
untouched, only the action version moved), clearing the "Node.js 20
is deprecated" warning entirely. This repo has no codecov-action
usage anywhere, so that part of the sibling fix doesn't apply here.
Left `prune-cache` at its new default (off): this repo's dependency
tree (audbcards, sphinx, sphinx-audeering-theme, toml) has no large
pre-built binary wheels like torch, so pruning would save ~0 disk
space while costing avoidable re-downloads.
Added `cache-suffix: ${{ github.workflow }}` to every setup-uv step
(doc.yml, pages.yml, publish.yml), so each workflow gets its own
cache entry instead of racing to share one -- without it, jobs that
land on an identical cache key (same OS + Python version +
dependency-file hash) produce a "Failed to save: Unable to reserve
cache with key ..., another job may be creating this cache" warning
whenever two workflows finish close together.
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
Reviewer's GuideUpdates all GitHub Actions workflows to use newer major versions of core actions and adjusts uv caching configuration so each workflow uses its own cache key, eliminating Node.js 20 deprecation warnings and cache reservation races. File-Level Changes
Tips and commandsInteracting with Sourcery
Customizing Your ExperienceAccess your dashboard to:
Getting Help
|
There was a problem hiding this comment.
Hey - I've left some high level feedback:
- Consider pinning
astral-sh/setup-uvto a full commit SHA instead of the floatingv9.0.0tag to maintain the same supply-chain guarantees you previously had with the SHA pin.
Prompt for AI Agents
Please address the comments from this code review:
## Overall Comments
- Consider pinning `astral-sh/setup-uv` to a full commit SHA instead of the floating `v9.0.0` tag to maintain the same supply-chain guarantees you previously had with the SHA pin.Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.
|
Re: SHA-pinning suggestion — going the other way here intentionally, consistent with the rest of this rollout (audeer#206, opensmile-python#132, audb#591, audformat#539, audbackend#307, audresample#83, auglib#60, audonnx#115, audinterface#206, audiofile#193, audmath#76, audmetric#94, audmodel#63, audobject#127, audplot#89, audpsychometric#29): floating major tags across all repos, not SHA pins, so one version-bump PR updates all of them the same way. Leaving as-is. |
Summary
astral-sh/setup-uvwas pinned via SHA3259c6206f99...(resolves to tag v7.1.0). Bumped tov9.0.0for consistency with the sibling repos in this rollout, though the caching fix (v6.0.0) and the Node 20 -> Node 24 runtime bump (v7.0.0) were both already covered by the existing pin.actions/checkoutv4 -> v7 andactions/setup-pythonv5 -> v7 in all four workflows (doc.yml,linter.yml,pages.yml,publish.yml), andactions/cachev4 -> v6 indoc.yml,pages.yml, andpublish.yml(the.cache/audbcardscache — path/key left untouched). This clears the "Node.js 20 is deprecated" warning.linter.ymldoes not usesetup-uv(plainpip install pre-commit), so it only gets the checkout/setup-python bump.codecov/codecov-actionusage anywhere, so that part of the sibling fix does not apply here.prune-cacheat its new default (off): this repo's dependency tree (audbcards, sphinx, sphinx-audeering-theme, toml) has no large pre-built binary wheels like torch, so pruning would save ~0 disk space while costing avoidable re-downloads.cache-suffix: ${{ github.workflow }}to everysetup-uvstep (doc.yml,pages.yml,publish.yml) so each workflow gets its own cache entry instead of racing to share one — without it, jobs landing on an identical cache key (same OS + Python version + dependency-file hash) can hit a "Failed to save: Unable to reserve cache with key ..., another job may be creating this cache" warning.Part of a rollout applying the same CI action-version bump across sibling repos: audeer#206, opensmile-python#132, audb#591, audformat#539, audbackend#307, audresample#83, auglib#60, audonnx#115, audinterface#206, audiofile#193, audmath#76, audmetric#94, audmodel#63, audobject#127, audplot#89, audpsychometric#29.
Test plan
doc.ymlruns green on this PRlinter.ymlruns green on this PRpages.ymlandpublish.ymlare workflow_dispatch/tag-triggered only, so they can't run automatically on this PR — visually diffed against the sibling PRs' equivalent changes instead🤖 Generated with Claude Code