Skip to content
Development

Development

Install mise, Git, OpenSSL, and tmux, then run make setup once while network access is available. Mise installs the pinned Go, Helm, kubeconform, rclone, Overmind, and SeaweedFS versions; Go installs the pinned envtest binaries. Vendored kubeconform fixtures live under tests/kubeconform. After setup, the development stack is localhost-only and requires neither Docker nor external hosts.

Source Gateway targets Kubernetes 1.37. Upstream envtest assets currently end at 1.36.2, so controller end-to-end tests use that latest published version. Set ENVTEST_VERSION when a newer installed envtest version is available.

make dev

The single Procfile runs an envtest API server/etcd with the CRDs, SeaweedFS as an S3 backend, a local HTTPS Git server, and Source Gateway. State defaults to tmp/dev; the stack binds its services to loopback and explicitly permits SeaweedFS’s HTTP origin. Use make e2e for an isolated offline stack and end-to-end Git, object, policy, metrics, and recovery checks.

Checks and generation

make precommit   # formatting, generated-file synchronization, go vet
make lint        # golangci-lint
make test        # race-enabled unit tests
make helm        # chart lint, render, and strict Kubernetes schema validation

Run make generate after changing API types or RBAC markers. It regenerates deepcopy code, CRDs, RBAC, and conditional chart CRD templates; do not edit generated artifacts manually. make validate-generated checks that generated copies are present and synchronized.

Builds

make build creates bin/sourcegateway. Production images are packaging-only builds made with ocimage.