- Go 1.24 or later
- Docker (for e2e and integration tests)
- golangci-lint
make toolsThis installs Go-based development tools managed via go tool.
make build # Build to dist/geoblock
make run # Run directly with go run
make docker # Build Docker imagemake test # Run unit + e2e + integration tests
make test-unit # Unit tests with coverage
make test-e2e # Dockerized e2e tests
make test-integration # Integration tests with reverse proxies
make test-bench # Run benchmarks
make test-coverage # Generate coverage reportmake format # Run code formatters (gofumpt, goimports, golines)
make lint # Run all linters (tidy + format + golangci-lint)
make lint-golangci # Run golangci-lint onlyRun make format before committing to ensure consistent formatting.
- 88 characters max line length enforced by golines
- Run
make formatto auto-fix formatting issues
Releases use semantic versioning. Git tags use a v prefix (e.g. v1.2.3), but release
titles omit it (e.g. 1.2.3).
- Follow the Keep a Changelog format
- Categories:
Added,Changed,Removed,Fixed - Use a BREAKING prefix for breaking changes
- Link PRs:
([#123](https://github.com/danroc/geoblock/pull/123))
git checkout -b release/X.Y.Z- Update
CHANGELOG.md: moveUnreleasedto## [X.Y.Z] - YYYY-MM-DD git commit -m "release: X.Y.Z"- Push, create PR, merge
git tag vX.Y.Z && git push origin vX.Y.Zgh release create vX.Y.Z --title X.Y.Z- CI builds and pushes the Docker image to
ghcr.io/danroc/geoblock:X.Y.Z