Build the ZenTao issues pages under Vue 3 behind a flag

What does this MR do and why?

Declares the two ZenTao issues entrypoints as rollout so the bundler emits a Vue 3 chunk alongside the Vue 2 one, and Rails serves the Vue 3 chunk when vue3_migrate_zentao_issues is enabled.

  • pages.projects.integrations.zentao.issues.index
  • pages.projects.integrations.zentao.issues.show

Both files validate against config/vue3migration/migration_schema.js.

group::work items was derived rather than guessed: both ZenTao controllers declare feature_category :team_planning, which maps to product_group: work_items in the event definitions.

The rollout needs a GitLab DRI

This is the part a wider community contributor cannot do, so it is worth stating plainly rather than leaving it to be discovered.

The rollout issue is #630835. Its DRI is deliberately unfilled, because rolling this out means running /chatops gitlab run feature set ... in GitLab's internal #production channel and watching dashboards on log.gprd.gitlab.net. Someone from groupwork items needs to pick that up for the flag to ever reach 100%.

If the team would rather own these migrations end to end, closing this and doing it internally is a perfectly reasonable outcome. I have asked that question on #630032 as well.

References

Closes #630032

Rollout issue #630835

Part of gitlab-org#23066

Screenshots or screen recordings

No visible change while the flag is off, which is how it ships. With the flag enabled, the same pages render from the Vue 3 chunk.

To confirm which apps run under Vue 3 on an environment, query the DOM marker set by the Vue 3 runtime:

document.querySelectorAll('[data-gitlab-vue3-app]')

How to set up and validate locally

  1. Enable the flag: Feature.enable(:vue3_migrate_zentao_issues).
  2. Open a project's ZenTao issues list and an individual ZenTao issue, on an Ultimate namespace with the ZenTao integration configured.
  3. Confirm both pages render correctly and document.querySelectorAll('[data-gitlab-vue3-app]') returns a node.
  4. Disable the flag and confirm both pages still render from the Vue 2 chunk.

The two metadata files were checked against the repo's own validator:

node -e "const {validateVue3MigrationFile}=require('./config/vue3migration/migration_schema.js'); ..."
# issues/index/vue3_migration.yml -> VALID
# issues/show/vue3_migration.yml  -> VALID

MR acceptance checklist

Evaluate this MR against the MR acceptance checklist.

Merge request reports

Loading
Loading