ci(refactor-release): introduce release controller and swap triggers - #12872
DariuszPorowski wants to merge 6 commits into
Conversation
Dependency Review✅ No vulnerabilities or license issues or OpenSSF Scorecard issues found.OpenSSF Scorecard
Scanned Files
|
Codecov Report✅ All modified and coverable lines are covered by tests. Additional details and impacted files@@ Coverage Diff @@
## dp/goreleaser-sboms #12872 +/- ##
======================================================
Coverage ? 59.52%
======================================================
Files ? 772
Lines ? 45053
Branches ? 0
======================================================
Hits ? 26817
Misses ? 18236
Partials ? 0 ☔ View full report in Codecov by Harness. 🚀 New features to boost your workflow:
|
Functional Tests - upgrade-noncloud1 tests 0 ✅ 5m 4s ⏱️ For more details on these failures, see this check. Results for commit 56a5617. ♻️ This comment has been updated with latest results. |
5b2ee48 to
12a1f75
Compare
Functional Tests - corerp-noncloud190 tests 188 ✅ 1h 3m 26s ⏱️ Results for commit 039c78a. ♻️ This comment has been updated with latest results. |
039c78a to
ab64b70
Compare
There was a problem hiding this comment.
🔵 Needs a closer look
The release-path redesign remains draft with live App-tag triggering and release-cycle soak gates still unverified.
Pull request overview
Replaces the legacy versions.yaml release trigger with a source-bound, resumable release controller that validates immutable release plans and creates the Radius tag last.
Changes:
- Adds automatic, approval, and recovery controller entry points.
- Introduces schema-v2 plans, frozen sibling commits, and Deployment Engine provenance locking.
- Adds failure-injection tests and updates release documentation.
File summaries
| File | Description |
|---|---|
.github/ghalint.yaml |
Removes obsolete release-workflow exception. |
.github/scripts/capture-release-sibling-commits.sh |
Freezes sibling repository commits. |
.github/scripts/capture-release-sibling-commits_test.sh |
Tests sibling commit capture. |
.github/scripts/create-release-backport.sh |
Removes legacy workflow during metadata backports. |
.github/scripts/create-release-backport_test.sh |
Tests backport cleanup. |
.github/scripts/dispatch-release-controller.mjs |
Dispatches approved controller events. |
.github/scripts/dispatch-release-controller_test.mjs |
Tests dispatch validation. |
.github/scripts/monitor-remote-workflow.mjs |
Adds query-only and retry controls. |
.github/scripts/monitor-remote-workflow_test.mjs |
Tests updated remote-run reconciliation. |
.github/scripts/prepare-release.sh |
Generates schema-v2 committed plans. |
.github/scripts/prepare-release_test.sh |
Tests plan generation. |
.github/scripts/reconcile-release-controller-lock.mjs |
Persists Deployment Engine digest locks. |
.github/scripts/reconcile-release-controller-lock_test.mjs |
Tests immutable lock behavior. |
.github/scripts/release-controller-resume_test.sh |
Tests resumability after each stage. |
.github/scripts/release-controller_test.sh |
Verifies controller workflow contracts. |
.github/scripts/release-create-tag-and-branch.sh |
Adds non-mutating preflight mode. |
.github/scripts/release-create-tag-and-branch_test.sh |
Tests preflight reconciliation. |
.github/scripts/release-get-version_test.sh |
Removes legacy skip-path tests. |
.github/scripts/release-should-skip.sh |
Deletes obsolete branch-wait logic. |
.github/scripts/resolve-release-controller.mjs |
Resolves release and backport events. |
.github/scripts/resolve-release-controller_test.mjs |
Tests controller input resolution. |
.github/scripts/validate-release-controller-plan.sh |
Binds plans to exact release commits. |
.github/scripts/validate-release-controller-plan_test.sh |
Tests controller-plan validation. |
.github/scripts/validate-release-merge-group.sh |
Includes committed plans in merge validation. |
.github/scripts/validate-release-merge-group_test.sh |
Updates merge-group fixtures. |
.github/scripts/validate-release-plan.sh |
Validates schema-v2 plans and siblings. |
.github/scripts/validate-release-plan_test.sh |
Tests immutable plan validation. |
.github/scripts/verify-deployment-engine-image.sh |
Verifies image provenance and platforms. |
.github/scripts/verify-deployment-engine-image_test.sh |
Tests image verification. |
.github/scripts/verify-deployment-engine-tag.sh |
Verifies signed tag identity and target. |
.github/scripts/verify-deployment-engine-tag_test.sh |
Tests strengthened tag checks. |
.github/workflows/__changes.yml |
Removes deleted workflow classification. |
.github/workflows/__dispatch-release-controller.yaml |
Adds reusable secretless dispatcher. |
.github/workflows/__release-controller.yaml |
Implements staged release reconciliation. |
.github/workflows/approve-release.yaml |
Adds manual approval gateway. |
.github/workflows/prepare-release.yaml |
Captures and commits immutable plans. |
.github/workflows/release-controller.yaml |
Adds trusted controller entry workflow. |
.github/workflows/release.yaml |
Removes legacy release trigger. |
.github/workflows/resume-release.yaml |
Adds manual recovery gateway. |
build/test.mk |
Registers controller test suites. |
docs/contributing/contributing-releases/README.md |
Documents the new release process. |
Review details
- Files reviewed: 41/41 changed files
- Comments generated: 0
- Review effort level: Balanced
💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.
a3e0c72 to
6fce55a
Compare
14cbcaf to
3cad501
Compare
3cad501 to
ed55a86
Compare
ed55a86 to
3c6d49e
Compare
Functional Tests - samples-noncloud3 tests 3 ✅ 1m 25s ⏱️ Results for commit 187adaa. ♻️ This comment has been updated with latest results. |
9356431 to
187adaa
Compare
187adaa to
17507da
Compare
17507da to
e1afcd9
Compare
e1afcd9 to
5cfdebc
Compare
5cfdebc to
d5f4f9f
Compare
Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
…r workflow Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
…nd Deployment Engine token management Signed-off-by: Dariusz Porowski <3431813+DariuszPorowski@users.noreply.github.com>
d5f4f9f to
56a5617
Compare
Radius functional test overviewClick here to see the test run details
Test Status⌛ Building Radius and pushing container images for functional tests... |
Summary
Introduce the source-bound release controller and replace the legacy
versions.yamlpush trigger. Generated release PRs and metadata backports now resolve through one reusable controller; manual approval and recovery use secretless gateways into default-branch code.Release plans are committed as schema v2 with frozen sibling repository SHAs. The controller validates and preflights every destination, verifies the exact signed Deployment Engine tag and image provenance, persists its digest lock, reconciles sibling repositories, and creates the Radius tag last with the release App. Existing release branches remove their legacy workflow through the generated metadata backport.
This stacked PR depends on #12869.
Draft gates:
build-release.yamlin the repository.Reason for change
The previous workflow inferred release intent from any
versions.yamlpush, created the Radius tag before all prerequisites completed, and had no source-bound resume entry point. This implements the approved PR15 transaction and recovery model.Fixes #12813
How to test
make test-prepare-release test-release-controller test-release-plan test-release-backport test-release-tag-and-branch test-release-get-version test-monitor-remote-workflow test-release-cutover test-release-sbomswith pinned yq v4.53.3concurrency.queue: maxkey.File change summary
.github/workflows/{release-controller,approve-release,resume-release}.yaml, reusable controller workflows.github/workflows/release.yaml,.github/scripts/release-should-skip.sh.github/scripts/{prepare-release,validate-release-plan,validate-release-controller-plan,capture-release-sibling-commits}*.github/scripts/{monitor-remote-workflow,reconcile-release-controller-lock,verify-deployment-engine-*}*.github/scripts/{create-release-backport,release-create-tag-and-branch}*build/test.mkand controller fixturesdocs/contributing/contributing-releases/README.mdeng/design-notes/tools/2026-09-goreleaser-stack-review/pr-15-release-controller.md