Skip to content

Add Repo Radius GHCR state end-to-end workflow#12476

Open
brooke-hamilton wants to merge 8 commits into
radius-project:mainfrom
brooke-hamilton:brooke-hamilton-repo-radius-state-e2e
Open

Add Repo Radius GHCR state end-to-end workflow#12476
brooke-hamilton wants to merge 8 commits into
radius-project:mainfrom
brooke-hamilton:brooke-hamilton-repo-radius-state-e2e

Conversation

@brooke-hamilton

@brooke-hamilton brooke-hamilton commented Jul 18, 2026

Copy link
Copy Markdown
Member

Summary

This PR adds a scheduled daily end-to-end workflow that tests the ability to run a control plane, serialize state to GHCR, then create a new control plane instance that rehydrates state from GHCR. If the workflow fails it adds an issue tagged with test-failure (the same as our other scheduled tests). There is already a functional test for GHCR state storage, and this adds an end-to-end test scenario that includes deployments to a local cluster.

  • add a scheduled and manually dispatchable Repo Radius GHCR state rehydration test
  • exercise state persistence across replacement control planes while preserving a workload on a separate target cluster
  • add timeout-safe remote state cleanup, diagnostics, and scheduled failure issue reporting
  • document package provisioning and the standalone functional-test lifecycle
  • add the Radius application model used by the graph tooling

Testing

Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8a31277c-6702-45f2-876b-013c8a0ec466
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8a31277c-6702-45f2-876b-013c8a0ec466
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 8a31277c-6702-45f2-876b-013c8a0ec466
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>

Copilot-Session: 29eb21e5-6540-4bbc-9e29-3ea5c1aeb994
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
@codecov

codecov Bot commented Jul 18, 2026

Copy link
Copy Markdown

Codecov Report

✅ All modified and coverable lines are covered by tests.
✅ Project coverage is 53.41%. Comparing base (67c36c6) to head (60a2052).

Additional details and impacted files
@@            Coverage Diff             @@
##             main   #12476      +/-   ##
==========================================
- Coverage   53.42%   53.41%   -0.01%     
==========================================
  Files         762      762              
  Lines       50246    50246              
==========================================
- Hits        26845    26841       -4     
- Misses      20878    20880       +2     
- Partials     2523     2525       +2     

☔ View full report in Codecov by Harness.
📢 Have feedback on the report? Share it here.

🚀 New features to boost your workflow:
  • ❄️ Test Analytics: Detect flaky tests, report on failures, and find test suite problems.
  • 📦 JS Bundle Analysis: Save yourself from yourself by tracking and limiting bundle sizes in JS merges.

Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds a scheduled + manually-dispatchable GitHub Actions workflow that validates Radius OCI state persistence in GHCR by saving state, replacing the control plane, restoring state, and confirming an existing workload on a separate target cluster remains managed. This fits into the repo’s CI/validation story by providing an end-to-end durability signal for the GHCR-backed state archive that can’t run in per-PR CI due to packages: write + private package requirements.

Changes:

  • Adds repo-radius-state-e2e GitHub Actions workflow plus supporting shell scripts to provision/validate a private GHCR package, run the lifecycle, collect diagnostics, and ensure cleanup.
  • Adds a minimal Radius application model (Bicep) used by the workflow to deploy/update a workload that proves state rehydration.
  • Documents how to provision the GHCR package and how to run/troubleshoot the standalone scheduled workflow; links this into contributing + architecture docs.

Reviewed changes

Copilot reviewed 7 out of 7 changed files in this pull request and generated 4 comments.

Show a summary per file
File Description
test/functional-portable/statestore/noncloud/testdata/repo-radius-state-app.bicep Adds the app/container Bicep model used by the E2E workflow to verify updates across restore.
docs/contributing/contributing-code/contributing-code-tests/repo-radius-state-e2e.md New contributor doc explaining provisioning, running, and troubleshooting the state E2E workflow.
docs/contributing/contributing-code/contributing-code-tests/README.md Links the new E2E workflow doc from the tests docs index.
docs/architecture/state-archive.md Documents the existence/purpose of the dedicated E2E test for the OCI state archive.
.github/workflows/repo-radius-state-e2e.yaml New scheduled + dispatchable workflow to run the state save/restore lifecycle against GHCR.
.github/scripts/test-repo-radius-state-e2e.sh Implements the E2E lifecycle phases, diagnostics collection, and cleanup behavior.
.github/scripts/precreate-repo-radius-state-package.sh Idempotent helper to create/verify the required private/internal, linked GHCR package bootstrap tag.

Comment thread .github/workflows/repo-radius-state-e2e.yaml Outdated
Comment thread .github/workflows/repo-radius-state-e2e.yaml
Comment thread .github/workflows/repo-radius-state-e2e.yaml
Comment thread docs/architecture/state-archive.md Outdated
@github-actions

github-actions Bot commented Jul 18, 2026

Copy link
Copy Markdown

Functional Tests - corerp-cloud

30 tests  ±0   29 ✅ ±0   20m 32s ⏱️ - 2m 34s
 2 suites ±0    1 💤 ±0 
 1 files   ±0    0 ❌ ±0 

Results for commit 60a2052. ± Comparison against base commit 67c36c6.

♻️ This comment has been updated with latest results.

brooke-hamilton and others added 2 commits July 18, 2026 11:50
Use vars.RADIUS_REPOSITORY in the state-rehydration job gate to match
the report-failure job in the same workflow and the sibling
functional-test workflows, instead of hardcoding the repository name.

Reflow the new End-to-End Test section in state-archive.md to a single
line per paragraph, per the repo Markdown convention (MD013 disabled).

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
Rename the workflow display name from "Repo Radius GHCR State E2E" to
"Repo Radius State E2E" so it derives directly from the filename
repo-radius-state-e2e.yaml, per the GitHub Workflows instructions.

Co-authored-by: Copilot <223556219+Copilot@users.noreply.github.com>
Signed-off-by: Brooke Hamilton <45323234+brooke-hamilton@users.noreply.github.com>
@radius-functional-tests

radius-functional-tests Bot commented Jul 18, 2026

Copy link
Copy Markdown

Radius functional test overview

🔍 Go to test action run

Click here to see the test run details
Name Value
Repository brooke-hamilton/radius
Commit ref 60a2052
Unique ID funce746412773
Image tag pr-funce746412773
  • Dapr: 1.14.4
  • Azure KeyVault CSI driver: 1.4.2
  • Azure Workload identity webhook: 1.3.0
  • Bicep recipe location ghcr.io/radius-project/dev/test/testrecipes/test-bicep-recipes/<name>:pr-funce746412773
  • Terraform recipe location http://tf-module-server.radius-test-tf-module-server.svc.cluster.local/<name>.zip (in cluster)
  • applications-rp test image location: ghcr.io/radius-project/dev/applications-rp:pr-funce746412773
  • dynamic-rp test image location: ghcr.io/radius-project/dev/dynamic-rp:pr-funce746412773
  • controller test image location: ghcr.io/radius-project/dev/controller:pr-funce746412773
  • ucp test image location: ghcr.io/radius-project/dev/ucpd:pr-funce746412773
  • deployment-engine test image location: ghcr.io/radius-project/deployment-engine:latest

Test Status

⌛ Building Radius and pushing container images for functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting ucp-cloud functional tests...
⌛ Starting corerp-cloud functional tests...
✅ Container images build succeeded
⌛ Publishing Bicep Recipes for functional tests...
✅ Recipe publishing succeeded
⌛ Starting corerp-cloud functional tests...
⌛ Starting ucp-cloud functional tests...
✅ ucp-cloud functional tests succeeded
✅ ucp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded
✅ corerp-cloud functional tests succeeded

@brooke-hamilton
brooke-hamilton marked this pull request as ready for review July 18, 2026 19:01
@brooke-hamilton
brooke-hamilton requested review from a team as code owners July 18, 2026 19:01
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants