## Summary Rewrites the Dockerfile to use sha256-pinned images and proper multi-stage build structure. Adds missing Makefile targets and a Gitea CI workflow. ## Changes ### Dockerfile - **Lint stage**: `golangci/golangci-lint` v1.64.8 pinned by sha256 — runs `make fmt-check` + `make lint` - **Test stage**: `golang` 1.22.12 pinned by sha256 — runs `make test` with dependency on lint stage - Removed redundant final stage (this is a library with no binary to build) - Both images pinned by digest with version+date comments ### Makefile - Added `fmt-check` target: verifies `gofmt` compliance without modifying files - Added `check` target: runs `fmt-check`, `lint`, `test` in sequence - Added `hooks` target: installs a pre-commit hook that runs `make check` - Separated `gofmt` check from `lint` target (was previously bundled) - Changed default target from `test` to `check` ### CI - Added `.gitea/workflows/check.yml`: runs `docker build .` on push to main and on PRs ## Verification `docker build --progress plain .` passes — all stages complete successfully. closes #9 <!-- session: agent:sdlc-manager:subagent:fffa0a5a-5127-4489-a2e0-314c5eaaed68 --> Co-authored-by: clawbot <clawbot@noreply.git.eeqj.de> Reviewed-on: #14 Co-authored-by: clawbot <clawbot@noreply.example.org> Co-committed-by: clawbot <clawbot@noreply.example.org>
29 lines
526 B
Makefile
29 lines
526 B
Makefile
.PHONY: test fmt fmt-check lint check docker hooks
|
|
|
|
default: check
|
|
|
|
test:
|
|
@go test -v ./...
|
|
|
|
fmt:
|
|
goimports -l -w .
|
|
golangci-lint run --fix
|
|
|
|
fmt-check:
|
|
@test -z "$$(gofmt -l .)" || { echo "gofmt would reformat:"; gofmt -l .; exit 1; }
|
|
|
|
lint:
|
|
golangci-lint run
|
|
|
|
check: fmt-check lint test
|
|
|
|
docker:
|
|
docker build --progress plain .
|
|
|
|
hooks:
|
|
@echo "Installing git hooks..."
|
|
@mkdir -p .git/hooks
|
|
@printf '#!/bin/sh\nmake check\n' > .git/hooks/pre-commit
|
|
@chmod +x .git/hooks/pre-commit
|
|
@echo "Pre-commit hook installed."
|