Releasing NNF Software
NNF Software Overview
The following repositories comprise the NNF Software and each have their own versions. There is a
hierarchy, since nnf-deploy
packages the individual components together using submodules.
Each component under nnf-deploy
needs to be released first, then nnf-deploy
can be updated to
point to those release versions, then nnf-deploy
itself can be updated and released.
The documentation repo (NearNodeFlash/NearNodeFlash.github.io) is released separately and is not
part of nnf-deploy
, but it should match the version number of nnf-deploy
. Release this like the
other components.
nnf-ec is vendored in as part of nnf-sos
and does not
need to be released separately.
Primer
This document is based on the process set forth by the DataWorkflowServices Release Process. Please read that as a background for this document before going any further.
Requirements
To create tags and releases, you will need maintainer or admin rights on the repos.
Release Each Component In nnf-deploy
You'll first need to create releases for each component contained in nnf-deploy
. This section
describes that process.
Each release branch needs to be updated with what is on master. To do that, we'll need the latest
copy of master, and it will ultimately be merged to the releases/v0
branch via a Pull Request.
Once merged, an annotated tag is created and then a release.
Each component has its own version number that needs to be incremented. Make sure you change the
version numbers in the commands below to match the new version for the component. The v0.0.3
is
just an example.
-
Ensure your branches are up to date:
-
Create a branch to merge into the release branch:
-
Merge in the updates from the
master
branch. There should not be any conflicts, but it's not unheard of. Tread carefully if there are conflicts. -
Verify that there are no differences between your branch and the master branch:
If there are any differences, they must be trivial. Some READMEs may have extra lines at the end.
-
Perform repo-specific updates:
- For
lustre-csi-driver
,lustre-fs-operator
,dws
,nnf-sos
, andnnf-dm
there are additional files that need to track the version number as well, which allow them to be installed withkubectl apply -k
.
Repo Update nnf-mfu
The new version of nnf-mfu
is referenced by theNNFMFU
variable in several places:nnf-sos
1.Makefile
replaceNNFMFU
withnnf-mfu's
tag.nnf-dm
1. InDockerfile
andMakefile
, replaceNNFMFU_VERSION
with the new version.
2. Inconfig/manager/kustomization.yaml
, replacennf-mfu
'snewTag: <X.Y.Z>.
nnf-deploy
1. Inconfig/repositories.yaml
replaceNNFMFU_VERSION
with the new version.lustre-fs-operator
update config/manager/kustomization.yaml
with the correct version.nnf-deploy
1. Inconfig/repositories.yaml
replace the lustre-fs-operator version.dws
update config/manager/kustomization.yaml
with the correct version.nnf-sos
update config/manager/kustomization.yaml
with the correct version.nnf-dm
update config/manager/kustomization.yaml
with the correct version.lustre-csi-driver
update deploy/kubernetes/base/kustomization.yaml
andcharts/lustre-csi-driver/values.yaml
with the correct version.nnf-deploy
1. Inconfig/repositories.yaml
replace the lustre-csi-driver version. - For
-
Target the
releases/v0
branch with a Pull Request from your branch. When merging the Pull Request, you must use a Merge Commit.Note
Do not Rebase or Squash! Those actions remove the records that Git uses to determine which commits have been merged, and then when the next release is created Git will treat everything like a conflict. Additionally, this will cause auto-generated release notes to include the previous release.
-
Once merged, update the release branch locally and create an annotated tag. Each repo has a workflow job named
create_release
that will create a release automatically when the new tag is pushed. -
GOTO Step 1 and repeat this process for each remaining component.
Release nnf-deploy
Once the individual components are released, we need to update the submodules
in nnf-deploy's
master
branch before we create the release branch. This ensures
that everything is current on master
for nnf-deploy
.
-
Update the submodules for
nnf-deploy
on master: -
Create a branch to capture the submodule changes for the PR to
master
-
Commit the changes and open a Pull Request against the
master
branch. -
Once merged, follow steps 1-3 from the previous section to create a release branch off of
releases/v0
and update it with changes frommaster
. -
There will be conflicts for the submodules after step 3. This is expected. Update the submodules to the new tags and then commit the changes. If each tag was committed properly, the following command can do this for you:
-
Add each submodule to the commit with
git add
. -
Verify that each submodule is now at the proper tagged version.
-
Update
config/repositories.yaml
with the referenced versions for:lustre-csi-driver
lustre-fs-operator
nnf-mfu
(Search for NNFMFU_VERSION)
-
Tidy and make
nnf-deploy
to avoid embarrassment. -
Do another
git add
for any changes, particularlygo.mod
and/orgo.sum
. -
Verify that
git status
is happy withnnf-deploy
and then finalize the merge from master by with agit commit
. -
Follow steps 6-7 from the previous section to finalize the release of
nnf-deploy
.
Release NearNodeFlash.github.io
Please review and update the documentation for changes you may have made.
After nnf-deploy has a release tag, you may release the documentation. Use the same steps found above in "Release Each Component". Note that the default branch for this repo is "main" instead of "master".
Give this release a tag that matches the nnf-deploy release, to show that they go together. Create the release by using the "Create release" or "Draft a new release" button in the GUI, or by using the gh release create
CLI command. Whether using the GUI or the CLI, mark the release as "latest" and select the appropriate option to generate release notes.
Wait for the mike
tool in .github/workflow/release.yaml
to finish building the new doc. You can check its status by going to the gh-pages
branch in the repo. When you visit the release at https://nearnodeflash.github.io, you should see the new release in the drop-down menu and the new release should be the default display.
The software is now released!
Clone a release
The follow commands clone release v0.0.7
into nnf-deploy-v0.0.7