Skip to content

Latest commit

 

History

History
62 lines (45 loc) · 2.85 KB

CONTRIBUTING.md

File metadata and controls

62 lines (45 loc) · 2.85 KB

Contributing

Development Environment

The development environment is managed by nix. If installing nix is not an option, you can ensure all the tools listed in flake.nix are installed and available in $PATH. The exact versions can been seen in this test case.

To install nix, either follow the official guide or zero-to-nix's quick start.

Next, you'll want to enable the experimental features flakes and nix-command to avoid typing --extra-experimental-features nix-command --extra-experimental-features flakes all the time.

# Or open the file in an editor and paste in this line.
# If you're using nix to manage your nix install, you'll have to find your own path :)
echo 'experimental-features = nix-command flakes' >> /etc/nix/nix.conf

Now you're ready to go!

nix develop # Enter a development shell.
nix develop -c fish  # Enter a development shell using fish
nix develop -c zsh  # Enter a development shell using zsh

It is recommend to use direnv to automatically enter the development shell when cd'ing into the repository. The .envrc is already configured.

Backporting

We are currently experimenting with workflows for backporting leveraging the backport CLI. To do a manual backport, once a PR has merged, ensure that you have a Github personal access token in ~/.backport/config.json as documented here, and then run backport --pr ### with the PR number.

We will eventually try and set up an automated Github action for backports based on PR labels.

CHANGELOG Management

Our CHANGELOG.mds are managed with Changie. It's configuration is in .changie.yaml and various other files are in .changes/.

Whenever a user facing change is made, a change log entry should be added via changie new.

The changie merge command will regenerate all CHANGELOG.mds and should be run upon every commit. (This is automatically handled by task generate).

Releasing

To release any project in this repository:

  1. Mint the version and its CHANGELOG.md entry via changie batch -j <project> <version>
  2. Run task test:unit and task lint, they will report additional required actions, if any.
  3. Commit the resultant diff with the commit message <project>: cut release <version> and rebase it into master via a Pull Request.
  4. Tag the above commit with as <project>/v<version> with git tag $(changie latest -j <project>) <commit-sha>.
    • If the operator is being released, also tag the same commit as v<version>.
  5. Push the tag(s).