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 shared ArtifactRegistryGating concern (feature flag plus organization access), declares feature_category :artifact_registry, and renders not-found unless params[:slug] matches the temporary Organizations::ArtifactRegistry::STUB_SLUG (acme).
  • A helper building the mount data (the organization global ID organization_gid, the slug, and the base_path) and the mount view (#js-artifact-registry-repositories). The organization_gid is injected for org-scoped GraphQL queries in later slices; S01 itself issues no query.
  • Regenerated js-routes path 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

  1. In a rails console, enable the flag: Feature.enable(:artifact_registry_ui).
  2. As a member of an organization, visit /o/<organization_path>/-/artifact_registry/acme/repositories: expect 200, with the mount element #js-artifact-registry-repositories carrying data-app-data (organization_gid, slug, base_path).
  3. Confirm 404s: a non-acme slug, 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

Merge request reports

Loading
Loading