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

Screenshots or screen recordings

How to set up and validate locally

  1. Enable the flags in the Rails console:
    Feature.enable(:ai_native_deploy)
    Feature.enable(:vue3_migrate_organizations_cd)
  2. Visit /o/default/-/deploy. Confirm the console shows [V] Using Vue.js 3 (with @vue/compat) for CdRoot.
  3. Navigate across applications / environments and into an application/environment detail; confirm breadcrumbs show resource names and Apollo views load.
  4. 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.

Edited by Anna Vovchenko

Merge request reports

Loading
Loading