Split Dockerfile: pre-built golangci-lint stage for faster CI #42

Closed
opened 2026-03-02 08:51:34 +01:00 by clawbot · 1 comment
Collaborator

Goal

Split the Dockerfile into a dedicated lint stage using the pre-built golangci/golangci-lint image, so lint and formatting failures surface much faster without downloading golangci-lint on every build.

Key details

  • Lint stage: golangci/golangci-lint image runs make fmt-check + make lint
  • Build stage: standard Go image runs make test + make build
  • COPY --from=lint /src/go.sum /dev/null creates BuildKit stage dependency (without this, lint is silently skipped)
  • All images pinned by sha256 per REPO_POLICIES
  • Reference: sneak/upaas Dockerfile

Tracked from sdlc-manager#6.

## Goal Split the Dockerfile into a dedicated lint stage using the pre-built golangci/golangci-lint image, so lint and formatting failures surface much faster without downloading golangci-lint on every build. ## Key details - Lint stage: golangci/golangci-lint image runs make fmt-check + make lint - Build stage: standard Go image runs make test + make build - COPY --from=lint /src/go.sum /dev/null creates BuildKit stage dependency (without this, lint is silently skipped) - All images pinned by sha256 per REPO_POLICIES - Reference: [sneak/upaas Dockerfile](https://git.eeqj.de/sneak/upaas/src/branch/main/Dockerfile) Tracked from [sdlc-manager#6](https://git.eeqj.de/clawbot/sdlc-manager/issues/6).
Author
Collaborator

Closing: duplicate of #39.

Closing: duplicate of [#39](https://git.eeqj.de/sneak/mfer/issues/39).
Sign in to join this conversation.
No Milestone
No Assignees
1 Participants
Notifications
Due Date
The due date is invalid or out of range. Please use the format 'yyyy-mm-dd'.

No due date set.

Dependencies

No dependencies set.

Reference: sneak/mfer#42
No description provided.