Skip to content

Fix CI caching; bump checkout/setup-python off Node.js 20 - #35

Merged
ChristianGeng merged 1 commit into
mainfrom
fix/ci-action-versions
Aug 5, 2026
Merged

Fix CI caching; bump checkout/setup-python off Node.js 20#35
ChristianGeng merged 1 commit into
mainfrom
fix/ci-action-versions

Conversation

@ChristianGeng

Copy link
Copy Markdown
Member

Summary

  • astral-sh/setup-uv was pinned via SHA 3259c6206f99... (resolves to tag v7.1.0). Bumped to v9.0.0 for 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.
  • Bumped actions/checkout v4 -> v7 and actions/setup-python v5 -> v7 in all four workflows (doc.yml, linter.yml, pages.yml, publish.yml), and actions/cache v4 -> v6 in doc.yml, pages.yml, and publish.yml (the .cache/audbcards cache — path/key left untouched). This clears the "Node.js 20 is deprecated" warning. linter.yml does not use setup-uv (plain pip install pre-commit), so it only gets the checkout/setup-python bump.
  • This repo has no codecov/codecov-action usage anywhere, so that part of the sibling fix does not 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 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.yml runs green on this PR
  • linter.yml runs green on this PR
  • pages.yml and publish.yml are 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

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>
@sourcery-ai

sourcery-ai Bot commented Aug 5, 2026

Copy link
Copy Markdown
Contributor

Reviewer's Guide

Updates 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

Change Details Files
Bump core GitHub Actions (checkout, setup-python, cache) to latest majors across workflows to move off deprecated Node.js 20 runtimes.
  • Updated actions/checkout from v4 to v7 in all workflows.
  • Updated actions/setup-python from v5 to v7 in all workflows.
  • Updated actions/cache from v4 to v6 in documentation, pages deployment, and publish workflows while keeping existing cache paths/keys.
.github/workflows/doc.yml
.github/workflows/pages.yml
.github/workflows/publish.yml
.github/workflows/linter.yml
Align astral-sh/setup-uv version and fix cache contention by giving each workflow its own uv cache entry.
  • Changed astral-sh/setup-uv from a pinned SHA (v7.1.0) to the tagged release v9.0.0 in workflows that use uv.
  • Added cache-suffix: ${{ github.workflow }} to each setup-uv step so each workflow writes to its own cache, avoiding "Unable to reserve cache" warnings.
.github/workflows/doc.yml
.github/workflows/pages.yml
.github/workflows/publish.yml

Tips and commands

Interacting with Sourcery

  • Trigger a new review: Comment @sourcery-ai review on the pull request.
  • Continue discussions: Reply directly to Sourcery's review comments.
  • Generate a GitHub issue from a review comment: Ask Sourcery to create an
    issue from a review comment by replying to it. You can also reply to a
    review comment with @sourcery-ai issue to create an issue from it.
  • Generate a pull request title: Write @sourcery-ai anywhere in the pull
    request title to generate a title at any time. You can also comment
    @sourcery-ai title on the pull request to (re-)generate the title at any time.
  • Generate a pull request summary: Write @sourcery-ai summary anywhere in
    the pull request body to generate a PR summary at any time exactly where you
    want it. You can also comment @sourcery-ai summary on the pull request to
    (re-)generate the summary at any time.
  • Generate reviewer's guide: Comment @sourcery-ai guide on the pull
    request to (re-)generate the reviewer's guide at any time.
  • Resolve all Sourcery comments: Comment @sourcery-ai resolve on the
    pull request to resolve all Sourcery comments. Useful if you've already
    addressed all the comments and don't want to see them anymore.
  • Dismiss all Sourcery reviews: Comment @sourcery-ai dismiss on the pull
    request to dismiss all existing Sourcery reviews. Especially useful if you
    want to start fresh with a new review - don't forget to comment
    @sourcery-ai review to trigger a new review!

Customizing Your Experience

Access your dashboard to:

  • Enable or disable review features such as the Sourcery-generated pull request
    summary, the reviewer's guide, and others.
  • Change the review language.
  • Add, remove or edit custom review instructions.
  • Adjust other review settings.

Getting Help

@sourcery-ai sourcery-ai Bot left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Hey - I've left some high level feedback:

  • 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.
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.

Sourcery is free for open source - if you like our reviews please consider sharing them ✨
Help me be more useful! Please click 👍 or 👎 on each comment and I'll use the feedback to improve your reviews.

@ChristianGeng

Copy link
Copy Markdown
Member Author

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.

@ChristianGeng
ChristianGeng requested a review from hagenw August 5, 2026 13:50
@ChristianGeng
ChristianGeng merged commit bc794b9 into main Aug 5, 2026
3 checks passed
@ChristianGeng
ChristianGeng deleted the fix/ci-action-versions branch August 5, 2026 14:02
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants