diff options
author | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-11 09:06:38 +0000 |
---|---|---|
committer | GitLab Bot <gitlab-bot@gitlab.com> | 2019-11-11 09:06:38 +0000 |
commit | 4a45f0eff2a25c64bdd83926e35a8894a4f0469f (patch) | |
tree | 8068fff1731ccf4182605c2661c25f0a1c936866 /app/services/projects | |
parent | d9c3a63a4394990bcdccbaca73c58278469236b4 (diff) | |
download | gitlab-ce-4a45f0eff2a25c64bdd83926e35a8894a4f0469f.tar.gz |
Add latest changes from gitlab-org/gitlab@master
Diffstat (limited to 'app/services/projects')
-rw-r--r-- | app/services/projects/container_repository/delete_tags_service.rb | 16 |
1 files changed, 12 insertions, 4 deletions
diff --git a/app/services/projects/container_repository/delete_tags_service.rb b/app/services/projects/container_repository/delete_tags_service.rb index 6a8b68d8ae3..48bd9394dc5 100644 --- a/app/services/projects/container_repository/delete_tags_service.rb +++ b/app/services/projects/container_repository/delete_tags_service.rb @@ -22,10 +22,18 @@ module Projects def smart_delete(container_repository, tag_names) # generates the blobs for the dummy image dummy_manifest = container_repository.client.generate_empty_manifest(container_repository.path) + return error('could not generate manifest') if dummy_manifest.nil? # update the manifests of the tags with the new dummy image - tag_digests = tag_names.map do |name| - container_repository.client.put_tag(container_repository.path, name, dummy_manifest) + deleted_tags = [] + tag_digests = [] + + tag_names.each do |name| + digest = container_repository.client.put_tag(container_repository.path, name, dummy_manifest) + next unless digest + + deleted_tags << name + tag_digests << digest end # make sure the digests are the same (it should always be) @@ -37,8 +45,8 @@ module Projects # Deletes the dummy image # All created tag digests are the same since they all have the same dummy image. # a single delete is sufficient to remove all tags with it - if container_repository.delete_tag_by_digest(tag_digests.first) - success(deleted: tag_names) + if tag_digests.any? && container_repository.delete_tag_by_digest(tag_digests.first) + success(deleted: deleted_tags) else error('could not delete tags') end |