Skip to content

Pin an app's CI to the uv its image builds with - #29

Merged
Babissimo merged 1 commit into
mainfrom
docs/adr-ci-runs-image-uv
Sep 23, 2026
Merged

Babissimo merged 1 commit into
mainfrom
docs/adr-ci-runs-image-uv

Conversation

@Babissimo

Copy link
Copy Markdown
Contributor

Amends the Python-apps-lock-with-uv ADR: where an app's image pins uv as ARG UV_VERSION, CI installs that version, read from the Dockerfile, and fails when it cannot read exactly one x.y.z.

ClickUp: Explore running retina-server's CI on the Dockerfile's uv version

Why

tower-finder-service#42 pinned its CI this way; retina-server's CI ran latest (0.12.18) against its images' 0.12.5 until offworldlabs/retina-server#572. The ADR said nothing, so each app would decide again. Lock compatibility across uv versions holds in practice (§3), so the case is reproducibility: a uv release cannot change CI without a commit, and one UV_VERSION edit moves CI, image and relock together. Where CI never builds the image, it is also the only check before merge that the image's uv accepts the lock.

What changes

  • §2 gains the rule, §3 the reasoning, §4 the two reference implementations (tfs's single step, retina-server's composite action).
  • The python-app CI template keeps latest uv, since the scaffold has no Dockerfile, and says where to pin once one exists.

🤖 Generated with Claude Code

retina-server's CI ran uv 0.12.18 while its images pinned 0.12.5, and tower-finder-service#42 had already moved its CI onto the Dockerfile's UV_VERSION. The ADR said nothing either way, so each app would settle it again. Lock compatibility across uv versions is good in practice, so the pin is about reproducibility: a uv release cannot change CI without a commit, and one UV_VERSION edit moves CI, image and relock together. Where CI never builds the image it is also the only pre-merge check that the image's uv accepts the lock.

The python-app scaffold has no Dockerfile, so its CI template keeps latest uv and says where to pin once an image exists. Decided in ClickUp 123zgec4m5q; retina-server#572 is the multi-job form.

Co-Authored-By: Claude Opus 5.5 <noreply@anthropic.com>
@Babissimo
Babissimo merged commit 4e67db4 into main Sep 23, 2026
2 checks passed
@Babissimo
Babissimo deleted the docs/adr-ci-runs-image-uv branch September 23, 2026 15:04
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.

1 participant