Read about our upcoming Code of Conduct on this issue

This instance will be upgraded to Heptapod 0.28.0 on 2022-01-18 at 14:00 UTC+1 (a few minutes of down time)

Commit fbf82bf4 authored by Stan Hu's avatar Stan Hu Committed by Winnie Hellmann
Browse files

Fix inability to delete container registry tags

Because container registry tags can have periods, the addition of the `.json`
format caused ambiguity. Since the tag name regex is greedy, it would attempt
to locate an image named `foo.json` instead of `foo`.

Closes #39260
parent e041e51546b4
......@@ -4,7 +4,7 @@ class ContainerTagEntity < Grape::Entity
expose :name, :location, :revision, :short_revision, :total_size, :created_at
expose :destroy_path, if: -> (*) { can_destroy? } do |tag|
project_registry_repository_tag_path(project, tag.repository,, format: :json)
project_registry_repository_tag_path(project, tag.repository,
......@@ -281,8 +281,13 @@
namespace :registry do
resources :repository, only: [] do
resources :tags, only: [:index, :destroy],
constraints: { id: Gitlab::Regex.container_registry_tag_regex }
# We default to JSON format in the controller to avoid ambiguity.
# `latest.json` could either be a request for a tag named `latest`
# in JSON format, or a request for tag named `latest.json`.
scope format: false do
resources :tags, only: [:index, :destroy],
constraints: { id: Gitlab::Regex.container_registry_tag_regex }
Markdown is supported
0% or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment