Repository navigation
ci(release): publish Edge release metadata for the dashboard - #28
Open
stelioschar wants to merge 3 commits into
Open
stelioschar wants to merge 3 commits into
stelioschar wants to merge 3 commits into
Conversation
added 3 commits
November 12, 2026 14:45
The dashboard will soon offer each new chart release to customers as soon as it is published, with no review of its own. Helm ignores values keys a chart does not read, so if the chart renamed or dropped one the dashboard sets, the install would still render and quietly lose the token, cluster name, netobs switch or a source. Each case sets the dashboard's keys and asserts the value reaches the rendered config, not only that the render succeeds. Refs: NOFireAI#27 Refs: NOFireAI/engineering#1983 Signed-off-by: Stelios Charmpalis <stelios.charmpalis@nofire.ai>
Write edge/<version>.json and edge/latest.json after each release, so the dashboard can read the current chart version instead of pinning it. - The versioned file is written once, with If-None-Match. - latest.json only moves to a higher version and never to a pre-release. The current one is read from S3 directly, so a cached copy cannot hide a newer version. - The steps run on every run and each write is idempotent: a re-run changes nothing, and a manual run backfills a release made before this change. - latest.json waits until GitHub Pages serves an index.yaml that lists the version. Otherwise `helm repo update` could miss it. - Nothing runs until the RELEASE_METADATA_ROLE_ARN repository variable holds the role from NOFireAI/terraform#295. Refs: NOFireAI#27 Refs: NOFireAI/engineering#1983 Signed-off-by: Stelios Charmpalis <stelios.charmpalis@nofire.ai>
…chart The dashboard's step 5 and disconnect commands run `helm upgrade --reuse-values`, and once they follow the published chart version they render each new chart's templates against an older release's values. The new suite only covers fresh values. This case is 0.9.0's values.yaml plus what the dashboard set on that release (token, cluster name, netobs, edge-proxy and one source), and checks those still reach config.json. Refs: NOFireAI#27 Refs: NOFireAI/engineering#1983 Signed-off-by: Stelios Charmpalis <stelios.charmpalis@nofire.ai>
This branch has not been deployed
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.
Summary
Publish Edge release metadata on every chart release, and gate it on a test of the values the NOFire AI dashboard sets (NOFireAI/engineering#1983).
release.ymlwritesedge/<version>.jsonandedge/latest.jsontoreleases.nofire.aithrough an OIDC role (NOFireAI/terraform#295):If-None-Match;latest.jsononly moves to a higher version, never to a pre-release, and is read from S3 directly so a cached copy cannot hide a newer one;index.yamlthat lists the version, sohelm repo updatecan always find whatlatest.jsonnames;RELEASE_METADATA_ROLE_ARNrepository variable is set.tests/dashboard_install_test.yamlsets each value the dashboard's install, sources and disconnect commands set, and asserts it reaches the rendered config. Helm ignores keys a chart does not read, so a rename would otherwise render cleanly and lose the token, cluster name, netobs switch or a source.dashboard-reuse-from-0.9.0: 0.9.0's values plus what the dashboard set on that release, rendered onto this chart as--reuse-valuesdoes. This is what the dashboard's step 5 and disconnect commands do.Once the dashboard follows
latest.json(NOFireAI/dashboard#1445), a chart release reaches customers with no dashboard PR, so these tests are the review step.Testing
aws,ghandcurl. Each case behaved as intended:latest.json;0.9.9against0.10.0;helm templatewith the suite's values passes every assertion's pattern. The reuse case renders, and itsexpect.jqholds. helm-unittest itself was not run locally; CI runs it.Notes
id-token: writeis added to the job.--reuse-valuesthe reuse case still renders imagev3.9.0, because 0.9.0's values setimage.tag. Existing installs pick up new templates but not the new image until the dashboard moves to--reset-then-reuse-values(NOFireAI/dashboard#1445).Closes #27
Refs: NOFireAI/engineering#1983, NOFireAI/terraform#295
🤖 Generated with Claude Code