Vue 3 migration: project environments pages

What does this MR do and why?

Adds the vue3_migrate_environments feature flag and vue3_migration.yml for the project environments pages. 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).

Entrypoints under pages/projects/environments all share the ~/environments app (Apollo): index, show, new, edit, folder, k8s (re-imports show), and ee/show (re-imports show) — all status: rollout behind the flag. terminal is non-Vue (xterm.js), so it is set to status: migrated with no flag.

Risk

The ~/environments tree was audited thoroughly (a mechanical sweep plus full reads of all 75 files across components, environment_details incl. kubernetes, and the mount layer + Apollo client/resolvers). No hard Vue 3 runtime throws under @vue/compat MODE 2: data() is a function throughout, no filters: option, no Vue.extend/propsData/Vue.observable/$children/functional components/local directives; string router-view renders and root apolloProvider options resolve via the compat shims; kubernetes Apollo handlers reassign whole objects. Covered by spec/frontend/environments (67 spec files, green under Vue 3).

Residual follow-up (not a blocker, does not gate enabling the flag): environments_detail_header.vue runs renderGFM over the environment descriptionHtml; a milestone/iteration reference in a description drives the shared issuable/popover legacy mount path, which errors (async convertToGraphQLId(undefined)). Under MODE 2 this degrades to a console error + non-functional popover, not a page crash. Shares the fix tracked for the releases migration; to be resolved before wide ramp.

References

Screenshots or screen recordings

Path Video
Environments index + terminal
Environments show - deployments tab
Environments show - Kubernetes tab (no Flux)
Environments show - Kubernetes tab (with Flux)
Environments new and edit
Environments folder

How to set up and validate locally

  1. Enable the flag:
    Feature.enable(:vue3_migrate_environments)
  2. /-/environments — Available/Stopped tabs, search, folders, row actions (deploy/stop/rollback/pin/delete), review-app and stop-stale modals.
  3. /-/environments/:id — header actions, deployments table, SPA nav/breadcrumbs; kubernetes tabs on an agent-connected environment.
  4. /-/environments/new and /:id/edit — create/edit round-trip (name, external URL, agent/namespace/flux selectors).
  5. Run VUE_VERSION=3 yarn jest spec/frontend/environments.

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