This document describes how to contribute to the project.
Kubernetes projects require that you sign a Contributor License Agreement (CLA) before we can accept your pull requests.
Please see https://git.k8s.io/community/CLA.md for more info.
- go version v1.16+.
- docker version 17.03+.
- kubectl version v1.11.3+.
- kustomize v3.1.0+
- Access to a Kubernetes v1.11.3+ cluster.
- Submit an issue describing your proposed change to the repo in question.
- The repo owners will respond to your issue promptly.
- If your proposed change is accepted, and you haven't already done so, sign a Contributor License Agreement (see details above).
- Fork the desired repo, develop and test your code changes.
- Submit a pull request.
Note that, by building the kubebuilder from the source code we are allowed to test the changes made locally.
- Run the following command to clone your fork of the project locally in the dir /src/sigs.k8s.io/kubebuilder
$ git clone [email protected]:<user>/kubebuilder.git $GOPATH/src/sigs.k8s.io/kubebuilder
- Ensure you activate module support before continue (
$ export GO111MODULE=on
) - Run the command
make install
to create a bin with the source code
NOTE In order to check the local environment run make test-unit
.
- Run the script
make generate
to update/generate the mock data used in the e2e test in$GOPATH/src/sigs.k8s.io/kubebuilder/testdata/
IMPORTANT: The make generate
is very helpful. By using it, you can check if good part of the commands still working successfully after the changes. Also, note that its usage is a pre-requirement to submit a PR.
Following the targets that can be used to test your changes locally.
Command | Description | Is called in the CI? |
---|---|---|
make test-unit | Runs go tests | no |
make test | Runs tests in shell (./test.sh ) |
yes |
make lint | Run golangci lint checks | yes |
make lint-fix | Run golangci to automatically perform fixes | no |
make test-coverage | Run coveralls to check the % of code covered by tests | yes |
make check-testdata | Checks if the testdata dir is updated with the latest changes | yes |
make test-e2e-local | Runs the CI e2e tests locally | no |
NOTE To use the make lint
is required to install golangci-lint
locally. More info: https://github.com/golangci/golangci-lint#install
See VERSIONING.md for a full description. TL;DR:
Every PR should be annotated with an icon indicating whether it's a:
- Breaking change:
⚠️ (:warning:
) - Non-breaking feature: ✨ (
:sparkles:
) - Patch fix: 🐛 (
:bug:
) - Docs: 📖 (
:book:
) - Infra/Tests/Other: 🌱 (
:seedling:
) - No release note: 👻 (
:ghost:
)
Use 👻 (no release note) only for the PRs that change or revert unreleased changes, which don't deserve a release note. Please don't abuse it.
You can also use the equivalent emoji directly, since GitHub doesn't
render the :xyz:
aliases in PR titles.
Individual commits should not be tagged separately, but will generally be assumed to match the PR. For instance, if you have a bugfix in with a breaking change, it's generally encouraged to submit the bugfix separately, but if you must put them in one PR, mark the commit separately.
- See the action files to check its tests, and the scripts used on it.
- Note that the prow tests used in the CI are configured in kubernetes-sigs/kubebuilder/kubebuilder-presubmits.yaml.
- Check that all scripts used by the CI are defined in the project.
The docs are published off of three branches:
book-v3
: book.kubebuilder.io -- current docsbook-v2
: book-v2.kubebuilder.io -- legacy docsbook-v1
: book-v1.book.kubebuilder.io -- legacy docsmaster
: master.book.kubebuilder.io -- "nightly" docs
See VERSIONING.md for more information.
Check the CI job after to do the Pull Request and then, click on in the Details
of netlify/kubebuilder/deploy-preview
Learn how to engage with the Kubernetes community on the community page.
You can reach the maintainers of this project at:
Contributors may eventually become official reviewers or approvers in KubeBuilder and the related repositories. See CONTRIBUTING-ROLES.md for more information.
Participation in the Kubernetes community is governed by the Kubernetes Code of Conduct.