Building, testing and deploying

You will need to have Docker installed to perform the steps below.

Project management

We are using the Github issues and project dashboard to manage the list of TODOs for this project:

Issues labeled good first issue and help wanted are especially good for a first contribution.

Release cadence

During the development phase, we expect to release on a monthly cadence. We are explicitly decoupling ourselves from the Kubernetes API versioning cycle to give us more flexibility to evolve the specification. As the specification solidifies, we will slow down our release cycle.

General target timeline:

  • 1H 2020: Monthly release cycle, with first release targeted for January 31
  • 2H 2020: Slower release cycle

Building the code

The project uses make to drive the build. make will build the manager binary, run code generators, and run static analysis against the code. You can kick off an overall build from the top-level makefile:

make

Testing the code

The easiest way to test the code is to use the kubebuilder created CRD with a kind cluster. Follow the installation instructions for kind in the README in the repo.

kind create cluster
...
# Install the CRDs
make install

# Remove the CRDs and associated CRs
make uninstall

Submitting a review

TODO

Verify

Make sure you run the static analysis over the repo before submitting your changes. The Prow presubmit will not let your change merge if verification fails.

make verify

Documentation

The site documentation is written in mkdocs format. The files are contained in docs-src/. Generated files are in docs/ and published to Github Pages.

Building the docs:

make docs

Live preview for editing (view on http://localhost:8000, CTRL-C to quit):

make serve

Remove generated documentation files:

make clean

Publishing

The docs are published automatically to Github pages. When making changes to the documentation, generate the new documentation and make the generated code a self-contained commit (e.g. the changes to docs/). This will keep the code reviews simple and clearly delineate user vs generated content.