Vue 3 migration: organization Continuous Deployment (CD) SPA
What does this MR do and why?
Adds the vue3_migrate_organizations_cd feature flag and a vue3_migration.yml for the organization Continuous Deployment (CD) SPA entrypoint. It opts into Option 1: the bundler builds a Vue 2 and a Vue 3 chunk, and Rails serves the Vue 3 chunk only when the flag is on (default-off).
One entrypoint, pages/organizations/continuous_deployment/show, mounting the ee/cd app (CdRoot, Apollo) via initSinglePageApplication. status: rollout behind vue3_migrate_organizations_cd.
Risk
Low. The ee/cd tree (37 components + utils) and the shared SPA machinery were audited against the real Vue 2→3 breakers: data() is a function throughout, no removed filters: component option, no Vue.extend/propsData imperative mounts, no Vue.observable/$children/local functional components/custom directive hooks. The mount path already uses new Vue({ el, render }). The SPA renders no GFM/data-reference-type markup, so the shared issuable-popover Vue 3 issue does not apply here. Covered by ee/spec/frontend/cd (green under Vue 3).
References
- Migration issue: Vue 3 migration: organization Continuous Deploy... (#629041)
- Epic: &23285
Screenshots or screen recordings
How to set up and validate locally
- Enable the flags in the Rails console:
Feature.enable(:ai_native_deploy) Feature.enable(:vue3_migrate_organizations_cd) - Visit
/o/default/-/deploy. Confirm the console shows[V] Using Vue.js 3 (with @vue/compat) for CdRoot. - Navigate across
applications/environmentsand into an application/environment detail; confirm breadcrumbs show resource names and Apollo views load. - Run
VUE_VERSION=3 yarn jest ee/spec/frontend/cd.
MR acceptance checklist
Evaluate this MR against the MR acceptance checklist. It helps you analyze changes to reduce risks in quality, performance, reliability, security, and maintainability.