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

Merged
sneak merged 4 commits from fix/issue-22-dockerfile-split into main 2026-03-02 21:11:18 +01:00

4 Commits

Author SHA1 Message Date
clawbot
51035a2fe2 ci: pin checkout action by SHA, run on all branches
- Pin actions/checkout to commit SHA (v4.2.2) to prevent tag mutation attacks
- Remove branch filters so CI runs on push to all branches, not just main
2026-03-02 12:07:00 -08:00
clawbot
a77096326a Add Gitea Actions CI workflow
Runs docker build . on push to main and pull requests.
2026-03-02 02:09:18 -08:00
clawbot
e6d75ed57f Dockerfile: split into lint/build/runtime stages with pinned images
- Lint stage: golangci/golangci-lint:v1.64.8 (sha256-pinned)
  Runs make fmt-check and make lint for fast feedback
- Build stage: golang:1.24-bookworm (sha256-pinned, matches go.mod 1.24.0)
  COPY --from=lint forces BuildKit to run lint stage
  Runs make test, then make build
- Runtime stage: debian:bookworm-slim (sha256-pinned)
- All base images updated from ancient versions to current
- Removed vendoring/source tarball (per CLAUDE.md: avoid vendoring)
2026-03-02 02:09:14 -08:00
clawbot
3e48b46e3d Makefile: add fmt-check, hooks targets; update check prereqs
- Add fmt-check target for gofmt format verification without modifying files
- Add hooks target to install pre-commit git hook
- Update check target to include fmt-check (check: fmt-check lint test)
- Remove redundant gofmt check from lint target (now in fmt-check)
- Add .PHONY declarations for all phony targets
- Update tools target to use go install
2026-03-02 02:09:07 -08:00