Linear issue: DVFLW-275 Date: 2026-03-18
Add GitHub Actions CI pipeline that runs tests, vet, and lint on every push and PR. Add golangci-lint configuration. Add CI status badge to README.
go test ./...runs on every push and PRgo vet ./...andgolangci-lintrun on every push and PR- Integration tests run against Postgres via testcontainers (when added)
- CI fails on lint errors or test failures
- Create:
.github/workflows/ci.yml - Create:
.golangci.yml - Modify:
README.md— add CI badge
.github/workflows/ci.yml — triggered on push and pull_request to all branches.
Three parallel jobs on ubuntu-latest with Go 1.24:
- Checkout, setup Go
go test -race ./...- Docker available by default for future testcontainers tests
- Checkout, setup Go
go vet ./...
- Checkout, setup Go
- Uses
golangci/golangci-lint-actionwith pinned version
.golangci.yml — conservative linter set that catches real bugs:
run:
timeout: 5m
linters:
enable:
- errcheck
- govet
- staticcheck
- unused
- ineffassign
- gosimpleAdd CI status badge at the top of README.md, right after the # Mantle heading:
[](https://github.com/dvflw/mantle/actions/workflows/ci.yml)- Release/deploy workflows (Phase 4)
- Code coverage reporting
- Go module caching (add later if CI is slow)