- Submit an issue describing your proposed change.
- Discuss and wait for proposal to be accepted.
- Fork this repo, develop and test your code changes.
- Submit a pull request.
Please read through below conventions before contributions.
- Use Conventional Commits specification to standardize PR title.
- Go Code Review Comments
- Effective Go
- Know and avoid Go landmines
- Commenting
- Go's commenting conventions
- If reviewers ask questions about why the code is the way it is, that's a sign that comments might be helpful.
- Naming
- Please consider package name when selecting an interface name, and avoid redundancy. For example,
storage.Interfaceis better thanstorage.StorageInterface. - Do not use uppercase characters, underscores, or dashes in package names.
- Please consider parent directory name when choosing a package name. For example,
pkg/controllers/autoscaler/foo.goshould saypackage autoscalernotpackage autoscalercontroller.- Unless there's a good reason, the
package fooline should match the name of the directory in which the.gofile exists. - Importers can use a different name if they need to disambiguate.
- Unless there's a good reason, the
- Locks should be called
lockand should never be embedded (alwayslock sync.Mutex). When multiple locks are present, give each lock a distinct name following Go conventions:stateLock,mapLocketc.
- Please consider package name when selecting an interface name, and avoid redundancy. For example,
- All filenames should be lowercase.
- Go source files and directories use underscores, not dashes.
- Package directories should generally avoid using separators as much as possible. When package names are multiple words, they usually should be in nested subdirectories.
- Documentation filenames are lowercase and currently follow the existing
docs/*.mdunderscore convention. Match neighboring files when adding new documents. - All source files should add a license at the beginning.
-
Install the Go version declared by
go.workand clone this repository. -
Run unit and envtest coverage with
make test. -
For end-to-end tests, create a cluster, for example
minikube start --memory=8192 --cpus=4. -
Apply the operator CRDs with
make install. -
Run the operator locally with
make run. -
In another terminal, run the integration suite:
cd tests go run github.com/onsi/ginkgo/v2/ginkgo --trace ./operatorSet
ADMIN_SERVICE_URL,NAMESPACE,BROKER_NAME, andPROXY_URLas described intests/README.mdwhen defaults do not match the test cluster.