Repository navigation
Phase 3: native Radius frontend and native standalone host - #416
Conversation
Qualify root and alpha package entries, native backend auth and proxy behavior, and native standalone composition. Preserve shared product pages and legacy public exports. Record the open FS-16 rollback image gate. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Verify image revision labels and in-image yarn.lock blobs before journeys, keep failed container logs, and make cleanup best-effort. Allow local image builds to use a registry through a BuildKit secret; release builds reject it. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Regenerate yarn.lock from public npm without internal __archiveUrl values. Keep the qualified Backstage set and take main's exact Babel and security bumps. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Run the previous revision's e2e tests, taken with git archive, against the restored image. Newer fixes are not required from an older image, and the STANDALONE_ROLLBACK switch is no longer needed. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Dependency ReviewThe following issues were found:
|
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com>
Resolve yarn.lock with main dependency updates and the native frontend pins retained. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: nicolejms <nicolej@microsoft.com>
Keep FS-16 non-blocking on release tags and document when to remove the automatic gate. Cover guest sign-in failures without the legacy-token dialog. Signed-off-by: nicolejms <nicolej@microsoft.com> Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: nicolejms <nicolej@microsoft.com>
Co-authored-by: nicolejms <101607760+nicolejms@users.noreply.github.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Nicole James <nicolej@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Nicole James <nicolej@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Nicole James <nicolej@microsoft.com>
nithyatsu
left a comment
There was a problem hiding this comment.
Thanks for the thorough follow-up. Almost all of the earlier feedback is addressed. The docs cleanup, #421 tracking, removed source-text tests and registry override, apis cleanup and dialog handling all look good, and CI is green (candidate 10/10, restored 6/6).
A few remaining items inline. The main ones are the shared config file in the rollback script (the restored container can briefly read the candidate's config) and the duplicated port-retry helper.
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: nicolejms <nicolej@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: nicolejms <nicolej@microsoft.com>
Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: nicolejms <nicolej@microsoft.com>
nithyatsu
left a comment
There was a problem hiding this comment.
Thank you, Nicole. All of the review feedback is addressed. The rollback runner now uses a separate upstream container and resets the config for each image. The backend startup retry lives in one shared helper, the route binding is back inline, and CI passes. Approving.
…bot-alerts-403 Resolve conflicts with #416: - package.json: keep this branch's resolutions and add main's "uuid@npm:^10.0.0": "11.1.1" resolution. - yarn.lock: take main's version and regenerate it with yarn install (plus yarn up -R @azure/identity) so the resolutions apply. Co-authored-by: Copilot App <223556219+Copilot@users.noreply.github.com> Signed-off-by: Nithya Subramanian <nithyasu@microsoft.com>
Summary
Phase 3 of the Backstage plugin migration, as defined in the plan in #406 (commit
1d3105b).@internal/plugin-radius/alpha. It usescreateFrontendPlugin, oneApiBlueprint(radius-api) and eightPageBlueprintpages with the existing URLs. The plugin ID staysradius, and theradius-catalogflag and Kubernetes API dependencies are kept. The legacy root exports stay for the support window. Packed-artifact tests install the root and/alphaentries in real hosts. The six-plugin backend is now built by a testable factory. The health-only Radius backend scaffold stays uninstalled.createApphost. It uses native catalog, catalog graph, home, user settings and Kubernetes entries. Auth, themes, sidebar, cards, alerts and dialogs are native extensions. It has noconvertLegacyPlugin, and no legacy app helpers are required. Auto guest sign-in is kept. A failed guest-backend sign-in now displays an error instead of offering a legacy-token fallback.yarn test:e2e:rollbackruns all journeys on the candidate image. Then it restores the previous qualified image on the same address and runs that revision's journeys. Before any test runs, it checks each image's revision label andyarn.lockGit blob. The Build workflow runs this check on the CI-built image.test:all. Documentation separates historical image records from current CI evidence.The package remains private. Public naming and publication are separate decisions. Out of scope, as the plan requires: the graph POST stays in
ApplicationTab; no@radius-project/coreorgraph-reactadoption (Phase 4); no publication; React stays at 18.Reason for change
Backstage's legacy frontend system is being retired. This change implements Phase 3 of the plan in #406.
Fixes #
How to test
Prerequisites: Node 24,
corepack enable, Docker withlinux/amd64support, and Playwright Chromium (yarn exec playwright install --with-deps chromium). Use Bash or WSL for the environment-variable syntax below.yarn install --immutable && yarn tsc && yarn lint:all: expect no errors.yarn test:all: expect the release-image tests, cleanup regression tests and workspace suites to pass. To run only the new regressions, useyarn test:qualification-runners; all three must exit without a process timeout.yarn test:package: expect the packed root and/alphahosts to pass.yarn build:backend && NODE_ENV=production yarn test:e2e:standalone: expect 9 journeys to pass against the real backend and the built native app.yarn build-image. Then runyarn test:e2e:rollback ghcr.io/radius-project/dashboard@sha256:166dcc84f8399b6c7b2e060c22eda390763d9379001e24695a961154679daa44 4f243cc02166e1330fe5769683d2a70aca23ded1 <built image ID> <HEAD revision>. Expect the candidate to pass 9/9 and the restored image to pass 6/6. A wrong revision must fail before any tests run.Recorded results
Build run 40589071183 passed for head
d30482c(checked-out merge revision944d80359e77102c54998f344d48dfd3b4b59cae). Dependency Review run 40589071602 also passed. DCO passed.yarn install --immutableyarn run tsc,yarn run lint:all,yarn run format:checkyarn run test:allyarn run test:packageyarn run test:e2e:standalonewithNODE_ENV=productionyarn run test:e2e:componentsPLAYWRIGHT_URL=http://localhost:7007 PLAYWRIGHT_DISABLE_WEBSERVER=true yarn run test:e2eyarn run test:e2e:rollback <previous digest> <previous revision> <candidate ID> <candidate revision>YARN_ENABLE_HARDENED_MODE=1 corepack yarn install --immutable --mode=skip-buildnode --test scripts/release-image.test.ts scripts/qualify-plugin-host.test.tsshellcheck --shell=bash -,shellcheck --shell=sh -The CI candidate image ID is
sha256:afa29d094a14ebee9b18ab4a9c1e7681bfeb00dc18937fc7f99e538f6f146aee, with lockfile Git blobe16d68e3d4e49b5c3fbe6fd52404b7ac384c9c0e. The previous image uses revision4f243cc02166e1330fe5769683d2a70aca23ded1and lockfile blob858e8c64a07fc43c8dc52a526eb5cb07c30865fb. The CI candidate is not claimed as a published registry image.The two new startup/shutdown regressions failed with a timeout before the fix and now pass. A separate check confirmed that Dockerode can require UUID 11.1.1 and call
v4(), and that an out-of-boundsv5()buffer write throwsRangeError. The lockfile contains no internal registry URLs. Local image rebuilds remain limited by this machine's registry network access; current image evidence comes from CI.File change summary
plugins/plugin-radius/src/alpha.tsx,src/api/ref.ts,package.json/alphaplugin, shared API ref, export mapplugins/plugin-radius/src/components/**plugins/plugin-radius/src/*.test.ts(x),fixtures/*packages/app/src/**packages/app/e2e-tests/*packages/backend/src/*packages/backend/Dockerfilescripts/qualify-*.tsscripts/release-image.ts,.test.ts.github/workflows/build.yamldocs/contributing/**package.json,playwright.config.ts,yarn.lock