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.indexpages.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
- Enable the flag:
Feature.enable(:vue3_migrate_zentao_issues). - Open a project's ZenTao issues list and an individual ZenTao issue, on an Ultimate namespace with the ZenTao integration configured.
- Confirm both pages render correctly and
document.querySelectorAll('[data-gitlab-vue3-app]')returns a node. - 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 -> VALIDMR acceptance checklist
Evaluate this MR against the MR acceptance checklist.