Loading
Add artifact registry repositories area Rails mount
What does this MR do and why?
Stands up the slug-scoped organization Artifact Registry repositories-area Rails mount (monolith/S01 Step 4). The Vue SPA that fills the mount arrives in a later step; this MR ships only the Rails surface:
- Route
artifact_registry/:slug/repositories(/*vueroute)(SPA catch-all,format: false) under the EE organization member scope. Organizations::ArtifactRegistryRepositoriesController#index: includes the sharedArtifactRegistryGatingconcern (feature flag plus organization access), declaresfeature_category :artifact_registry, and renders not-found unlessparams[:slug]matches the temporaryOrganizations::ArtifactRegistry::STUB_SLUG(acme).- A helper building the mount data (the organization global ID
organization_gid, theslug, and thebase_path) and the mount view (#js-artifact-registry-repositories). Theorganization_gidis injected for org-scoped GraphQL queries in later slices; S01 itself issues no query. - Regenerated
js-routespath helper for the new route.
Dark behind the disabled artifact_registry_ui feature flag (established earlier in S01), so flag-off, no-access, and unknown-slug all return an identical 404, and no changelog entry is added yet.
References
Related to #604732 (closed)
How to set up and validate locally
- In a rails console, enable the flag:
Feature.enable(:artifact_registry_ui). - As a member of an organization, visit
/o/<organization_path>/-/artifact_registry/acme/repositories: expect 200, with the mount element#js-artifact-registry-repositoriescarryingdata-app-data(organization_gid,slug,base_path). - Confirm 404s: a non-
acmeslug, the flag disabled, or a user without organization access returns 404, including deep catch-all sub-paths (e.g..../acme/repositories/foo/bar).
MR acceptance checklist
This MR meets the MR acceptance checklist.
Edited by Rahul Chanila