Issues, whether bugs, tasks, or feature requests are essential for keeping Polaris great. We believe it should be as easy as possible to contribute changes that get things working in your environment. There are a few guidelines that we need contributors to follow so that we can keep on top of things.
This project adheres to a code of conduct. Please review this document before contributing to this project.
Before you can contribute, you will need to sign the Contributor License Agreement.
Polaris is built on top of controller-runtime. It can run in 3 different modes, a dashboard, a webhook, or a reporter that prints or exports validation results. All of these modes make use of the shared validator
and config
packages. Adding new validations is possible by only making additions to those packages.
We label issues with the "good first issue" tag if we believe they'll be a good starting point for new contributors. If you're interested in working on an issue, please start a conversation on that issue, and we can help answer any questions as they come up.
- A properly configured Golang environment with Go 1.11 or higher
- If you want to see the local changes you make on a Polaris dashboard, you will need access to a Kubernetes cluster defined in
~/.kube/config
- Install the project with
go get github.com/fairwindsops/polaris
- Change into the polaris directory which is installed at
$GOPATH/src/github.com/fairwindsops/polaris
- See the dashboard with
go run main.go --dashboard
, then open http://localhost:8080/ - See the audit data
go run main.go --audit
. This command shows the audit information on the command line.
The following commands are all required to pass as part of Polaris testing:
go list ./... | grep -v vendor | xargs golint -set_exit_status
go list ./... | grep -v vendor | xargs go vet
go test ./pkg/... -v -coverprofile cover.out
If you've encountered an issue that is not already reported, please create a new issue, choose Bug Report
, Feature Request
or Misc.
and follow the instructions in the template.
Each new pull request should:
- Reference any related issues
- Add tests that show the issues have been solved
- Pass existing tests and linting
- Contain a clear indication of if they're ready for review or a work in progress
- Be up to date and/or rebased on the master branch
Patch releases only need to change this repo. The Helm chart and deploy scripts will automatically pull in the latest changes.
If the release involves changes to anything in the deploy/
folder (e.g. new RBAC permissions),
it needs to be a minor or major release in order to prevent breaking the Helm chart.
- Create a PR for this repo
- Bump the version number in:
- main.go
- README.md
- Update CHANGELOG.md
- Merge your PR
- Bump the version number in:
- Tag the latest branch for this repo
- Pull the latest commit for the
master
branch (which you just merged in your PR) - Run
git tag $VERSION && git push --tags
- Make sure CircleCI runs successfully for the new tag - this will push images to quay.io and create a release in GitHub
- If CircleCI fails, check with Codeowners ASAP
- Pull the latest commit for the
Minor and major releases need to change both this repository and the Helm chart repo.
The steps are:
- Modify the Helm chart
- Clone the helm charts repo
git clone https://github.com/FairwindsOps/charts
git checkout -b yourname/update-polaris
- Bump the version number in:
- stable/polaris/README.md
- stable/polaris/Chart.yaml
- stable/polaris/values.yaml
- Make any necessary changes to the chart to support the new version of Polaris (e.g. new RBAC permissions)
- Don't merge yet!
- Clone the helm charts repo
- Create a PR for this repo
- Create a new branch named
yourname/update-version
- Bump the version number in:
- main.go
- README.md
- Regenerate the deployment files. Assuming you've cloned the charts repo to
./charts
:helm template ./charts/stable/polaris/ --name polaris --namespace polaris --set templateOnly=true > deploy/dashboard.yaml
helm template ./charts/stable/polaris/ --name polaris --namespace polaris --set templateOnly=true --set webhook.enable=true --set dashboard.enable=false > deploy/webhook.yaml
- Update CHANGELOG.md
- Merge your PR
- Create a new branch named
- Tag the latest branch for this repo
- Pull the latest for the
master
branch - Run
git tag $VERSION && git push --tags
- Make sure CircleCI runs successfully for the new tag - this will push images to quay.io and create a release in GitHub
- If CircleCI fails, check with Codeowners ASAP
- Pull the latest for the
- Create and merge a PR for your changes to the Helm chart