Harden the release preflight, and bring the docs back in line with the tests - #196
Merged
Conversation
…e tests The swck release script died on `git commit` with nothing staged: non-zero under `set -e`, no message. Cross-checking the same class of failure here found three, each verified by running the construct rather than reading it: - `VERSION=$(grep '^version: ' Chart.yaml | awk ...)` aborts silently when the grep misses -- pipefail promotes it, `set -e` kills the assignment, and the `die` below it is unreachable. Now `awk`, which exits 0 either way. - `read -r reply` in `remove_previous` exits 1 at EOF, killing the run with no output -- after the irreversible svn promotion. Both reads now say why. - the `RETURN` trap in `upload_to_svn` does not fire when `set -e` kills the shell mid-function, leaking a temp dir holding the signed artifacts. Now EXIT. Preflight also checks that the tools are usable, not merely present, because each of these otherwise fails late: no gpg secret key fails after the whole build, unusable svn credentials after the tag is pushed, and an unauthenticated `gh` after the svn promotion that cannot be undone. Missing tools are reported in one message. The helm gate is 3.8+ rather than 3.x -- 3.8 is where `helm push` to an oci:// registry landed, and helm 4 reads apiVersion v2 charts fine, which was confirmed by running dep up, package, lint and template through it. The svn existence check for a half-finished upload runs only after reachability is established: an auth failure and a not-yet-uploaded version are the same non-zero exit, so the order is what makes the check mean anything. On the docs side, `e2e-tests.md` described five cells including two OAP 10.4 ones. There are four, all OAP 11, and the fourth -- the config-override cell -- was undocumented. Its two expectation files were orphaned; they are removed. The 5.0.0 changelog predated the env-first configuration work, and never mentioned that the SWCK charts were removed at all.
kezhenxu94
approved these changes
Aug 30, 2026
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Follow-up to #194 and #195, before 5.0.0 is cut.
Release scripts
The
skywalking-swckrelease script died ongit commitwith nothing staged — non-zero underset -e, no message. I cross-checked the same class of failure here by running each construct rather than reading it. Three were real:VERSION=$(grep '^version: ' Chart.yaml | awk …)set -ekills the assignment silently, and thediebelow it is unreachableawk, which exits 0 either wayread -r replyinremove_previoustrap … RETURNinupload_to_svnset -ekills the shell mid-function → leaks a temp dir holding the signed artifactsEXITWorth noting the first one:
false && die "…"as a bare statement does surviveset -e, so the tag check was fine — the failure was specific to the assignment. I verified both.Preflight checks the tools are usable, not just present
Each of these otherwise fails late, at the worst possible point:
gh→ fails after thesvn mvintodist/release, which cannot be undoneMissing tools are now reported in a single message rather than one per run.
The helm gate is 3.8+, not 3.x: 3.8 is where
helm pushto anoci://registry landed, and the chart ships only as an OCI artifact. Helm 4 is accepted —Chart.yamlisapiVersion: v2. I confirmed that by runningdep up(including the OCI pull ofbanyandb-helm0.7.0),package,lintandtemplatethrough helm 4.1.1; all six storage permutations render, rc=0.Ordering matters in one spot: the check for a half-finished svn upload runs only after reachability is established, because an auth failure and a not-yet-uploaded version produce the same non-zero exit.
Docs
contributing/e2e-tests.mddescribed five cells including two OAP 10.4 ones. There are four, all OAP 11 — and the fourth, the config-override cell, was undocumented. Rewritten, with an explicit note that the 10.4 combination is documented but not verified.horizon-admin-readonly.yml,horizon-templates-readonly.yml) that no cell referenced.changes/changes.mdpredated Configure Horizon and OAP by environment variable, mount a file only on request #195: it described the pre-Configure Horizon and OAP by environment variable, mount a file only on request #195ui.configmodel, omittedoap.extraEnv/oap.envFromSecret, and — most significantly — never mentioned that the SWCK charts were removed, which is the most disruptive change in 5.0.0.Verified: all internal links resolve,
menu.ymlmatches the tree, every e2e YAML parses,helm lintpasses.