Skip to content

fix: Docker/CI build hygiene — silent lockfile fallback and setup-uv version mismatch#92

Merged
GoodbyePlanet merged 1 commit into
mainfrom
fix/docker-ci-build-hygiene
Jul 14, 2026
Merged

fix: Docker/CI build hygiene — silent lockfile fallback and setup-uv version mismatch#92
GoodbyePlanet merged 1 commit into
mainfrom
fix/docker-ci-build-hygiene

Conversation

@GoodbyePlanet

@GoodbyePlanet GoodbyePlanet commented Jul 14, 2026

Copy link
Copy Markdown
Owner

Summary

Fixes #79.

  • Silent lockfile fallback: Dockerfile ran uv sync --frozen ... 2>/dev/null || uv sync ..., swallowing frozen-install errors and silently falling back to an unpinned resolve on lockfile drift. Now runs a single uv sync --frozen --no-dev --no-editable that fails the build loudly instead.
  • Leaner runtime image: split the Dockerfile into a builder stage (has uv, resolves deps into .venv, copies source) and a runtime stage that copies the built /app and runs python -m server.main directly. The runtime image no longer re-resolves the environment at container start and no longer ships uv.
  • Mismatched setup-uv versions: aligned .github/workflows/ci.yml lint and test jobs to both use astral-sh/setup-uv@v7 (previously @v7 vs @v5).

Test plan

  • docker build --platform linux/amd64 -t semcode-test . succeeds with the new multi-stage Dockerfile
  • docker run --rm --platform linux/amd64 semcode-test python -c "import server.main" succeeds
  • Confirmed uv is not present in the runtime image
  • CI lint/test jobs pass on this PR with aligned setup-uv@v7

🤖 Generated with Claude Code

- Drop silent uv sync fallback in Dockerfile so lockfile drift fails
  the build loudly instead of producing an unpinned, unsigned image
- Split Dockerfile into builder/runtime stages so the runtime image
  runs python -m server.main directly instead of re-resolving the
  env via `uv run` at container start, and no longer ships uv
- Align setup-uv action version to v7 in both CI lint and test jobs

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
@GoodbyePlanet GoodbyePlanet merged commit f52d4d6 into main Jul 14, 2026
2 checks passed
@GoodbyePlanet GoodbyePlanet deleted the fix/docker-ci-build-hygiene branch July 14, 2026 06:39
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.

Docker/CI build hygiene: silent lockfile fallback and setup-uv version mismatch

1 participant