Split Dockerfile: pre-built golangci-lint stage for faster CI #23
No reviewers
Labels
No Milestone
No project
No Assignees
1 Participants
Notifications
Due Date
No due date set.
Dependencies
No dependencies set.
Reference: sneak/pixa#23
Loading…
Reference in New Issue
Block a user
No description provided.
Delete Branch "fix/issue-18-dockerfile-split"
Deleting a branch is permanent. Although the deleted branch may continue to exist for a short time before it actually gets removed, it CANNOT be undone in most cases. Continue?
Summary
Splits the Dockerfile into a dedicated lint stage using the pre-built
golangci/golangci-lint:v2.10.1-alpineDocker image, replacing the manual binary download with curl/sha256 verification.Changes
AS lint): Usesgolangci/golangci-lint:v2.10.1-alpinepinned by sha256. Runsmake fmt-check+make lint. Includes CGO deps (build-base,vips-dev,libheif-dev,pkgconfig) needed for type-checking govips imports.AS builder): Depends on lint stage viaCOPY --from=lint /src/go.sum /dev/null. Runsmake test+ builds the binary. Removescurl(no longer needed) and the manual golangci-lint download block.Benefits
Verification
docker build .passes: fmt-check ✅, lint (0 issues) ✅, all tests pass ✅, binary builds ✅Closes #18
Closing — split Dockerfile work was cancelled. All related issues are closed.
Reopening — this PR was dispatched by the SDLC manager to implement #18. The previous closure appears to have been from a stale agent run.
docker build .passes: fmt-check ✅, lint (0 issues) ✅, all tests pass ✅, binary builds ✅✅ Review PASSED — sneak/pixa PR #23
PR: Split Dockerfile: pre-built golangci-lint stage for faster CI
Issue: #18 — Split Dockerfile: pre-built golangci-lint stage for faster CI
Checks
build-base vips-dev libheif-dev pkgconfigCOPY --from=lintstage dependencyCOPY --from=lint /src/go.sum /dev/nullmake fmt-check+make lintmake testmake checkcurlremoved from builder (no longer needed)docker build .passesSummary
Clean, correct split. The lint stage uses the prebuilt
golangci/golangci-lint:v2.10.1-alpineimage pinned by sha256, includes CGO dependencies for type-checking govips imports, and runsmake fmt-check+make lint. The build stage depends on the lint stage viaCOPY --from=lint, runsmake test, and builds the binary. Together the two stages cover the fullmake checkequivalent. The old manual binary download with curl/sha256 verification is cleanly replaced.Rebased on
main,docker build .passes. Markingmerge-ready.