Welcome to Rufio! We are really excited to have you. Please use the following guide on your contributing journey. Thanks for contributing!
Rufio is a Kubernetes controller for managing baseboard management state and actions.It is part of the Tinkerbell stack and provides the glue for machine provisioning by enabling machine restarts and setting next boot devices.
Please read and understand the DCO found here.
Please read and understand the code of conduct found here.
-
Install Go
Rufio requires Go 1.17 or later.
-
Install Docker
Rufio uses Docker for protocol buffer code generation, container image builds and for the Ruby client example. Most versions of Docker will work.
The items below are nice to haves, but not hard requirements for development
-
Install golangci-lint
golangci-lint is used in CI for lint checking and should be run locally before creating a PR.
Rufio uses a fork and pull request model. See this doc for more details.
Rufio uses GitHub Actions for CI. The workflow is found in .github/workflows/ci.yaml. It is run for each commit and PR. The container image building only happens once a PR is merged into the main line.
Rufio does run code coverage with each PR. Coverage thresholds are not currently enforced. It is always nice and very welcomed to add tests and keep or increase the code coverage percentage.
This checklist is a helper to make sure there's no gotchas that come up when you submit a PR.
- You've reviewed the code of conduct
- All commits are DCO signed off
- Code is formatted and linted
- Code builds successfully
- All tests are passing
- Code coverage percentage. (main line is the base with which to compare)