Skip to content

build: bump uv to 0.12 and enable uv cache for staging tests - #1739

Merged
hkad98 merged 3 commits into
gooddata:masterfrom
hkad98:worktree-jkd+uv-caching-ci
Aug 17, 2026
Merged

build: bump uv to 0.12 and enable uv cache for staging tests#1739
hkad98 merged 3 commits into
gooddata:masterfrom
hkad98:worktree-jkd+uv-caching-ci

Conversation

@hkad98

@hkad98 hkad98 commented Aug 17, 2026

Copy link
Copy Markdown
Contributor

Two related tooling changes.

Bump uv to 0.12

uv 0.12 is the current release line. Three places pin uv, and all three move together:

Place Before After
[tool.uv] required-version ~=0.11.0 ~=0.12.0
Dockerfile uv image tag ghcr.io/astral-sh/uv:0.11 :0.12
tox dependency group, uv bound ~=0.11.0 ~=0.12.0
uv-pre-commit hook rev 0.11.0 0.12.5

The tox group bound matters because uv pip install --group resolves fresh from the index and its console script installs over the binary copied into the test image. The comment in pyproject.toml already asks to keep that bound in sync with required-version.

uv.lock changes only the uv package: 0.11.x to 0.12.5. No other locked package moves.

Verified locally: make test-ci-py310 builds an image with uv 0.12.5 and tox-uv 1.35.2, then reports 521 passed, 2 skipped, 3 xfailed.

Note for everyone: run uv self update after you pull. uv 0.11.x refuses to run in this repo now.

Enable the uv cache for staging tests

astral-sh/setup-uv defaults enable-cache to auto, which only caches on GitHub-hosted runners. Staging tests run on the self-hosted infra1-runners-arc group, so every run re-downloaded the whole test dependency set. The step now sets enable-cache: true.

The other uv jobs run on ubuntu-latest, and auto already covers them. build-release.yaml stays untouched: auto skips tag pushes on purpose, and a release build should resolve from a cold cache.

Context: actions/setup-python#818 was declined upstream, so actions/setup-python will not get native cache: uv. The actions/cache workaround from that thread is not needed here, because setup-uv already does the same thing.

@hkad98
hkad98 requested review from lupko and pcerny as code owners August 17, 2026 07:37
@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown

Review Change Stack

No actionable comments were generated in the recent review. 🎉

ℹ️ Recent review info
⚙️ Run configuration

Configuration used: Organization UI

Review profile: CHILL

Plan: Pro

Run ID: 6b933b2e-f95b-4be6-af12-6ccf18610d5c

📥 Commits

Reviewing files that changed from the base of the PR and between 005700c and 37932f9.

⛔ Files ignored due to path filters (1)
  • uv.lock is excluded by !**/*.lock
📒 Files selected for processing (4)
  • .github/workflows/staging-tests.yaml
  • .pre-commit-config.yaml
  • Dockerfile
  • pyproject.toml
🚧 Files skipped from review as they are similar to previous changes (4)
  • pyproject.toml
  • .pre-commit-config.yaml
  • Dockerfile
  • .github/workflows/staging-tests.yaml

Included review availability: 0 reviews are currently available. Based on recent review activity, included reviews refill at 4 per hour.


📝 Walkthrough

Walkthrough

The PR updates the project to uv 0.12.x, updates the pre-commit hook and Docker builder image, and enables uv caching in the staging test workflow.

Changes

uv Tooling Update

Layer / File(s) Summary
Align uv tooling and cache configuration
.github/workflows/staging-tests.yaml, .pre-commit-config.yaml, pyproject.toml, Dockerfile
The project requires uv 0.12.x, the uv-pre-commit hook uses revision 0.12.5, the Docker builder uses uv 0.12, and staging tests enable uv caching on self-hosted runners.

Estimated code review effort: 1 (Trivial) | ~5 minutes

Merge Risk: ⚪ Minimal · up to 37932

This PR updates the uv toolchain and enables dependency caching for staging tests without any identified merge-blocking risk; it is merge-ready after normal checks and review.

Suggested reviewers: lupko, pcerny

Poem

A rabbit updates tools with care,
uv twelve hops through runner air.
Fresh hooks and builders join the tune,
Cached staging steps run soon.
“Clean checks!” the bunny sings.

🚥 Pre-merge checks | ✅ 5
✅ Passed checks (5 passed)
Check name Status Explanation
Docstring Coverage ✅ Passed No functions found in the changed files to evaluate docstring coverage. Skipping docstring coverage check.
Linked Issues check ✅ Passed Check skipped because no linked issues were found for this pull request.
Out of Scope Changes check ✅ Passed Check skipped because no linked issues were found for this pull request.
Description Check ✅ Passed Check skipped - CodeRabbit’s high-level summary is enabled.
Title check ✅ Passed The title clearly summarizes the two main changes: updating uv to 0.12 and enabling uv caching for staging tests.

Comment @coderabbitai help to get the list of available commands.

hkad98 added 3 commits August 17, 2026 10:09
uv 0.12 is the current release line; 0.11 is a release behind and the
required-version pin blocked contributors who already run 0.12.

Verified with uv 0.12.5: `uv lock --check` resolves the existing lock file
unchanged, and `uv sync --locked` installs. None of the 0.12 breaking
changes apply here - all workspace packages build with hatchling, so the
uv_build upper-bound note in the release notes is not relevant.
setup-uv defaults enable-cache to "auto", which only caches on
GitHub-hosted runners. The staging tests run on the self-hosted
infra1-runners-arc group, so every run re-downloaded the whole test
dependency set. Setting enable-cache explicitly restores the cache there.

All other uv jobs run on ubuntu-latest and are already covered by "auto";
build-release is left alone because "auto" skips tag pushes on purpose and
a release build should resolve from a cold cache.
Follow-up to the required-version bump; the pre-merge unit tests failed
with "Required uv version ~=0.12.0 does not match the running version
0.11.33".

Two places pin uv outside [tool.uv]:

- The test image copies the binary from ghcr.io/astral-sh/uv:0.11.
  Moved that tag to 0.12.
- The tox dependency group bounds the uv PyPI package at ~=0.11.0,
  because `uv pip install --group` resolves fresh instead of reading
  uv.lock and the console script installs over the copied binary. The
  comment there says to keep the bound in sync with required-version, so
  it moves to ~=0.12.0.

Verified locally: `make test-ci-py310` builds an image with uv 0.12.5 and
tox-uv 1.35.2, and reports "521 passed, 2 skipped, 3 xfailed".
@hkad98
hkad98 force-pushed the worktree-jkd+uv-caching-ci branch from 9faa56e to 37932f9 Compare August 17, 2026 08:14
@coderabbitai

coderabbitai Bot commented Aug 17, 2026

Copy link
Copy Markdown

Note

GitHub couldn't provide a complete incremental comparison for this pull request, so CodeRabbit is performing a full review instead. This review may take a little longer.

@codecov

codecov Bot commented Aug 17, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 79.44%. Comparing base (005700c) to head (37932f9).

Additional details and impacted files
@@           Coverage Diff           @@
##           master    #1739   +/-   ##
=======================================
  Coverage   79.44%   79.44%           
=======================================
  Files         272      272           
  Lines       19012    19012           
=======================================
  Hits        15105    15105           
  Misses       3907     3907           

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.

@hkad98
hkad98 merged commit 5b04a0a into gooddata:master Aug 17, 2026
14 checks passed
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