Thank you for your interest in contributing to Kapro.
This project follows the Contributor Covenant Code of Conduct.
- Go 1.25+
- controller-gen v0.21.0
- golangci-lint v2.12.2
- kubectl + a running Kubernetes cluster (for e2e)
git clone https://github.com/Kapro-dev/kapro
cd kapro
go mod tidy
make generate # generate CRD manifests + DeepCopy methods
make build # compile binaries
make test # run unit tests with envtest
scripts/verify-install.sh renderdocs/contains user-facing concepts, operations, and provider setup docs.examples/contains runnable examples and optional provider-specific helpers.scripts/contains repository development, CI, and verification scripts.build/package/contains container image Dockerfiles used by CI and releases.- Provider-specific onboarding helpers should live under
examples/04-substrates/02-cloud/; core Kapro APIs and controllers should stay cloud-neutral unless a provider integration requires dedicated code.
- Fork the repo and create a feature branch from
main - Make your changes following the Kubernetes API conventions
- Run
make lint testbefore opening a PR - Each PR must include:
- A clear description of the change
- Test coverage for new code
- Updated docs if behaviour changes
- DCO sign-off is required:
git commit -s. This adds aSigned-off-by:line certifying the Developer Certificate of Origin.
- Follow Effective Go
- Use structured logging:
log.FromContext(ctx).Info(...) - Controller reconcilers must be idempotent
- Status conditions follow Kubernetes condition conventions
- All exported types, functions, and constants must have GoDoc comments
- All CRD changes require a
+kubebuilder:marker update - Run
make manifeststo regenerate CRD YAMLs after type changes - Breaking API changes are not allowed in the public preview API without a new API version or an explicit migration plan. See API Stability.
Use GitHub Issues. For security issues, see SECURITY.md.