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.
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.
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
).
To release any project in this repository:
- Mint the version and its CHANGELOG.md entry via
changie batch -j <project> <version>
- Run
task test:unit
andtask lint
, they will report additional required actions, if any. - Commit the resultant diff with the commit message
<project>: cut release <version>
and rebase it into master via a Pull Request. - Tag the above commit with as
<project>/v<version>
withgit tag $(changie latest -j <project>) <commit-sha>
.- If the operator is being released, also tag the same commit as
v<version>
.
- If the operator is being released, also tag the same commit as
- Push the tag(s).