Skip to content

Commit 9bbd537

Browse files
committed
Update release-all.md with lessons from v0.1.26/v0.1.27 releases
Signed-off-by: Anthony Floeder <anthony.floeder@hpe.com>
1 parent ba28770 commit 9bbd537

1 file changed

Lines changed: 60 additions & 23 deletions

File tree

docs/repo-guides/release-nnf-sw/release-all.md

Lines changed: 60 additions & 23 deletions
Original file line numberDiff line numberDiff line change
@@ -14,14 +14,14 @@ other components.
1414

1515
- [NearNodeFlash/nnf-deploy](https://github.com/NearNodeFlash/nnf-deploy)
1616

17-
- [DataWorkflowServices/dws](https://github.com/DataWorkflowServices/dws)
18-
- [HewlettPackard/lustre-csi-driver](https://github.com/HewlettPackard/lustre-csi-driver)
19-
- [NearNodeFlash/lustre-fs-operator](https://github.com/NearNodeFlash/lustre-fs-operator)
20-
- [NearNodeFlash/nnf-mfu](https://github.com/NearNodeFlash/nnf-mfu) *(standalone repo, not a submodule)*
21-
- [NearNodeFlash/nnf-ec](https://github.com/NearNodeFlash/nnf-ec) *(standalone repo, not a submodule)*
22-
- [NearNodeFlash/nnf-sos](https://github.com/NearNodeFlash/nnf-sos)
23-
- [NearNodeFlash/nnf-dm](https://github.com/NearNodeFlash/nnf-dm)
24-
- [NearNodeFlash/nnf-integration-test](https://github.com/NearNodeFlash/nnf-integration-test)
17+
- [DataWorkflowServices/dws](https://github.com/DataWorkflowServices/dws)
18+
- [HewlettPackard/lustre-csi-driver](https://github.com/HewlettPackard/lustre-csi-driver)
19+
- [NearNodeFlash/lustre-fs-operator](https://github.com/NearNodeFlash/lustre-fs-operator)
20+
- [NearNodeFlash/nnf-mfu](https://github.com/NearNodeFlash/nnf-mfu) *(standalone repo, not a submodule)*
21+
- [NearNodeFlash/nnf-ec](https://github.com/NearNodeFlash/nnf-ec) *(standalone repo, not a submodule)*
22+
- [NearNodeFlash/nnf-sos](https://github.com/NearNodeFlash/nnf-sos)
23+
- [NearNodeFlash/nnf-dm](https://github.com/NearNodeFlash/nnf-dm)
24+
- [NearNodeFlash/nnf-integration-test](https://github.com/NearNodeFlash/nnf-integration-test)
2525

2626
- [NearNodeFlash/NearNodeFlash.github.io](https://github.com/NearNodeFlash/NearNodeFlash.github.io)
2727

@@ -48,7 +48,7 @@ tool enforces the following order:
4848
The following tools must be installed and available in your PATH:
4949

5050
| Tool | Purpose | Notes |
51-
|------|---------|-------|
51+
| --- | --- | --- |
5252
| `gh` | GitHub CLI for PRs, releases | Requires `GH_TOKEN` env var (see below) |
5353
| `yq` | YAML processing | Must be the [Go version](https://github.com/mikefarah/yq), not the Python version |
5454
| `jq` | JSON processing | Used by `final-release-notes.sh` |
@@ -60,7 +60,7 @@ The following tools must be installed and available in your PATH:
6060

6161
**Environment variables:**
6262

63-
- `GH_TOKEN` — A GitHub classic personal access token with `repo` scope. Required by `gh` and by the `release-push`, `create-pr`, `merge-pr`, and `tag-release` phases.
63+
- `GH_TOKEN` — A GitHub **classic** personal access token (not fine-grained) with `repo` scope. The token is 40 characters, starting with `ghp_`. Required by `gh` and by the `release-push`, `create-pr`, `merge-pr`, and `tag-release` phases.
6464

6565
**SSH access:**
6666

@@ -87,7 +87,7 @@ The following tools must be installed and available in your PATH:
8787

8888
The output will show the repos in dependency order:
8989

90-
```
90+
```text
9191
dws
9292
lustre_csi_driver
9393
lustre_fs_operator
@@ -102,6 +102,14 @@ The following tools must be installed and available in your PATH:
102102

103103
1. **Check Vendoring:** For each repo's master/main branch; determine whether any of them need to be re-vendored.
104104
> **Note:** Ensure each repo is error-free before proceeding to the next repo in `repo-list`
105+
>
106+
> **Note:** `nnf_sos` requires the `-M` flag because it vendors multiple API versions of `dws`:
107+
>
108+
> ```bash
109+
> ./release-all.sh -P master -R nnf_sos -M
110+
> ```
111+
>
112+
> **Important:** Run vendoring checks on **all** repos, not just the ones you plan to release. This catches stale submodule pointers in `nnf-deploy` (e.g., a force-push on a submodule repo can leave the pointer at an orphaned commit SHA).
105113
106114
```bash
107115
For each repo in `repo-list`
@@ -110,6 +118,17 @@ The following tools must be installed and available in your PATH:
110118
111119
2. **Create Trial Release Branch:** Create the new release branch, merge master/main to that release branch, but don't push it yet. The point of this step is to look for merge conflicts between master/main and the release branch.
112120

121+
> **Note:** `nnf_mfu` may report "No new changes to release" if master has no commits since the last release. This is normal — skip it in subsequent steps.
122+
>
123+
> **Note:** `nnf_doc` must be deferred until after `nnf_deploy` is tagged and its GitHub Release is published. The `nnf_doc` script updates `mkdocs.yml` with the latest `nnf-deploy` release version by querying GitHub Releases (not just tags). Follow this sequence:
124+
>
125+
> 1. Complete Steps 2–3d for all repos through `nnf_deploy`
126+
> 2. **Wait ~60 seconds** for `nnf_deploy`'s "Handle Release Tag" GitHub Actions workflow to publish the GitHub Release
127+
> 3. Verify: `gh release view $NNF_RELEASE -R NearNodeFlash/nnf-deploy` should succeed
128+
> 4. Then run `nnf_doc` through Steps 2–3d
129+
>
130+
> **Important:** `nnf_doc`'s repo is `NearNodeFlash/NearNodeFlash.github.io` and uses the `main` branch (not `master`).
131+
113132
```bash
114133
For each repo in `repo-list`
115134
./release-all.sh -P release -R $repo
@@ -153,6 +172,14 @@ The following tools must be installed and available in your PATH:
153172
**Step 3c** — Merge PR for the pushed release branch:
154173

155174
> **Warning:** Do NOT manually merge the PR. Let `release-all.sh` merge it. If you accidentally merge manually, the `tag-release` phase may not find the expected merge commit message — use `-x force-tag=vX.Y.Z` to recover (see step 3d).
175+
>
176+
> **Note:** `merge-pr` may produce no visible output even on success. Verify the merge completed:
177+
>
178+
> ```bash
179+
> gh api repos/<owner>/<repo>/pulls/<pr_number> 2>&1 | grep -o '"merged":[^,]*'
180+
> ```
181+
>
182+
> Expected output: `"merged":true`
156183

157184
```bash
158185
./release-all.sh -P merge-pr -R <repo>
@@ -161,6 +188,8 @@ The following tools must be installed and available in your PATH:
161188
**Step 3d** — Tag the release:
162189

163190
> **Important:** This creates an **annotated** git tag. The CI/CD workflow (`handle_release_tag.yaml`) verifies that the tag is annotated and will reject lightweight tags. After tagging, the CI/CD workflow automatically creates the GitHub release with auto-generated release notes and attaches build artifacts (e.g., `manifests.tar` for `nnf-deploy`).
191+
>
192+
> **Note:** `tag-release` output will include "Bypassed rule violations for refs/tags/...". This is expected. All NNF repos have tag protection rulesets that block creation, update, and deletion of `v*` tags by default. Your account bypasses these rules because it has an admin or maintain role in the ruleset's bypass list. The tags are created correctly.
164193
165194
```bash
166195
./release-all.sh -P tag-release -R <repo>
@@ -194,32 +223,40 @@ Finalize the release by updating the `nnf-deploy` release notes to include the r
194223

195224
After all repos are released and release notes are finalized, compare the new NNF release manifest to the previous release manifest. This is a recommended verification step to confirm the release contains the expected changes and catch any problems.
196225

197-
```console
198-
./compare-releases.sh v0.1.6 v0.1.7
199-
```
200-
201-
The output:
226+
Use the `-i` flag to display image version changes inline:
202227

203228
```console
204-
Manifest diffs for v0.1.6 to v0.1.7 are in workingspace/manifest-v0.1.6-to-v0.1.7.diff
229+
./compare-releases.sh -i $PREVIOUS_RELEASE $NNF_RELEASE
205230
```
206231

207-
Peruse the release manifest differences:
232+
Example output:
208233

209234
```console
210-
less workingspace/manifest-v0.1.6-to-v0.1.7.diff
235+
Manifest diffs for v0.1.26 to v0.1.27 are in workingspace/manifest-v0.1.26-to-v0.1.27.diff (21426 lines, 8 files changed)
236+
Changed files:
237+
Files v0.1.26/nnf-dm/nnf-dm.yaml and v0.1.27/nnf-dm/nnf-dm.yaml differ
238+
Files v0.1.26/nnf-sos/nnf-sos.yaml and v0.1.27/nnf-sos/nnf-sos.yaml differ
239+
...
240+
241+
Image version changes:
242+
- image: ghcr.io/nearnodeflash/nnf-dm:0.1.25
243+
+ image: ghcr.io/nearnodeflash/nnf-dm:0.1.26
244+
- image: ghcr.io/nearnodeflash/nnf-sos:0.1.31
245+
+ image: ghcr.io/nearnodeflash/nnf-sos:0.1.32
211246
```
212247
213-
Quickly see which submodules were updated between the releases:
248+
Use `-d` to display the full diff inline. The diff file is always saved to `workingspace/manifest-<ver1>-to-<ver2>.diff`.
249+
250+
Peruse the release manifest differences:
214251
215252
```console
216-
grep image: workingspace/manifest-v0.1.6-to-v0.1.7.diff
253+
less workingspace/manifest-v0.1.26-to-v0.1.27.diff
217254
```
218255
219256
Quickly determine the scope of the differences between the releases:
220257
221258
```console
222259
brew install patchutils diffstat
223-
lsdiff workingspace/manifest-v0.1.6-to-v0.1.7.diff
224-
diffstat workingspace/manifest-v0.1.6-to-v0.1.7.diff
260+
lsdiff workingspace/manifest-v0.1.26-to-v0.1.27.diff
261+
diffstat workingspace/manifest-v0.1.26-to-v0.1.27.diff
225262
```

0 commit comments

Comments
 (0)