Repository navigation
feat(reporter): end a Rollout on what the Release Gate's warmup met - #84
Merged
Merged
Conversation
Once every member is through, the Reporter reads the gate's GET /releases and reports the release promoted only once the gate has warmed each of its Applications up at that revision, and failed where the warmup met a 5xx. Closes #12.
ExtraToast
enabled auto-merge (squash)
October 25, 2026 15:13
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.
Closes #12. The last part: the gate's analysis traffic is #82, and its warmup is #83.
Problem
Since #83 the Release Gate warms each serving revision up through its public hosts, and records what it met. But the Reporter still wrote
success: <project> <version> promotedthe moment every member was through, and then took no further status. So a warmup that met a 5xx could not fail the Rollout, as chapter 55 says it does.Change
By the maintainer's choice, the Reporter reads the outcome from the gate's record, over
GET /releases, as the estate dashboard does.GET /releases, atGATE_URL, which defaults to the gate's in-cluster address. It then gives every unit the warmups the gate recorded, by namespace and Application.in_progress: promoted; the Release Gate is warming up <application>;failure: <application> promoted, but its warmup failed: <request> answered <status>. The gate warms a revision once and rolls nothing back, so this stays the Rollout's last word;success: <project> <version> promoted and warmed up.deploy/delivery.project.ymlgives the Reporter an edge to the gate'shttpsurface, so the gate's derived policy admits it.deploy-kit validateaccepts the file.To know
Gatenil) ends a release on promotion, as before.cmd/reporteralways sets one.Checks
TestAPromotedReleaseEndsOnWhatTheGatesWarmupMet: no gate read, not warmed, warmed at an earlier revision, warmed, a 5xx, two Applications with one warmed, an earlier revision's failure not counted, and a member under analysis.TestARolloutEndsOnlyOnceTheGateHasWarmedItsRelease: against the fake GitHub, a gate that is away, then one that has warmed the release. It writesin_progressonce, thensuccess.TestTheGatesReleasesAreReadFromItsEndpoint: a real server answering releases, a 503, garbage and nothing; and a URL that does not parse.internal/reporterat 97.4%,cmd/reporterandinternal/gatepass, envtest included.golangci-lintreports 0 issues.