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
## 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).
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
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
Tracked from sdlc-manager#6.
Closing: duplicate of #22.