Template repository for new EvalOps Go microservices. Use GitHub's "Use this template" button to scaffold a new service.
- Click Use this template on GitHub to create a new repo from this template.
- Clone your new repo and update the following:
go.mod— change the module path togithub.com/evalops/<your-service>.cmd/service— rename the package directory tocmd/<your-service>if you want the generated binary andmake runtarget to use your service name directly.Dockerfile— replaceservicein the build path and binary name with your service name.Makefile— updateSERVICE ?= serviceto your service name..github/workflows/ghcr-publish.yml— updateIMAGE_NAMEtoghcr.io/evalops/<your-service>.
- Run
go mod tidyto resolve dependencies. - Run
make install-hooksif you want the template pre-commit checks locally. - Push to
main— CI will run vet, lint, gosec, tests, race tests, and the GHCR workflow will build (but not push) the image on PRs.
| File | Purpose |
|---|---|
cmd/service/main.go |
Default service entry point wired for make run and Docker builds |
Makefile |
Standard local build/test/lint/run targets plus hook installation |
.golangci.yml |
Baseline org linter configuration for new Go services |
docker-compose.yml |
Local Postgres + Redis stack with an app container for development |
scripts/pre-commit |
Git hook that formats staged Go files and runs baseline checks |
Dockerfile |
Multi-stage build using the shared Go builder image |
.github/workflows/ci.yml |
Vet, lint, gosec, test, race test, and build via setup-go-service |
.github/workflows/ghcr-publish.yml |
Build and publish container image to GHCR |
.github/CODEOWNERS |
Default review assignments |
.github/dependabot.yml |
Automated dependency updates for Go, Actions, and Docker |
- All services use evalops/service-runtime for health checks, observability, mTLS, and NATS integration.
- CI uses the
setup-go-servicecomposite action from service-runtime. - Container images are published to GHCR via the
publish-ghcr-imagecomposite action.
make buildbuilds all packages.make testruns the default unit test suite.make test-integrationruns tests behind the//go:build integrationtag pattern.make lint,make vet, andmake securitymirror the CI quality gates.docker compose up --buildstarts the template service with Postgres and Redis for local development.