Fix CI tests
This commit is contained in:
parent
4d84ba43d8
commit
5c2f2fd289
13 changed files with 31 additions and 20 deletions
|
@ -1,7 +1,6 @@
|
|||
class Projects::ContainerRegistryController < Projects::ApplicationController
|
||||
before_action :authorize_read_container_registry!
|
||||
before_action :authorize_update_container_registry!, only: [:destroy]
|
||||
before_action :tag, except: [:index]
|
||||
layout 'project'
|
||||
|
||||
def index
|
||||
|
|
|
@ -34,7 +34,7 @@ module GitlabRoutingHelper
|
|||
end
|
||||
|
||||
def project_container_registry_path(project, *args)
|
||||
namespace_project_container_registry_index_url(project.namespace, project, *args)
|
||||
namespace_project_container_registry_index_path(project.namespace, project, *args)
|
||||
end
|
||||
|
||||
def activity_project_path(project, *args)
|
||||
|
|
|
@ -291,7 +291,7 @@ class Ability
|
|||
rules += named_abilities('build')
|
||||
end
|
||||
|
||||
unless project.container_registry_enabled
|
||||
unless project.container_registry_enabled && Gitlab.config.registry.enabled
|
||||
rules += named_abilities('container_registry')
|
||||
end
|
||||
|
||||
|
|
|
@ -128,7 +128,7 @@ class Namespace < ActiveRecord::Base
|
|||
gitlab_shell.add_namespace(path_was)
|
||||
|
||||
if any_project_has_container_registry_tags?
|
||||
raise Exception.new('namespace cannot be moved, because at least one project has tags in container registry')
|
||||
raise Exception.new('Namespace cannot be moved, because at least one project has tags in container registry')
|
||||
end
|
||||
|
||||
if gitlab_shell.mv_namespace(path_was, path)
|
||||
|
|
|
@ -377,7 +377,7 @@ class Project < ActiveRecord::Base
|
|||
|
||||
def container_registry_repository
|
||||
@container_registry_repository ||= begin
|
||||
token = Jwt::ContainerRegistryAuthenticationService.full_access_token(path_with_namespace)
|
||||
token = JWT::ContainerRegistryAuthenticationService.full_access_token(path_with_namespace)
|
||||
url = Gitlab.config.registry.api_url
|
||||
host_port = Gitlab.config.registry.host_port
|
||||
registry = ContainerRegistry::Registry.new(url, token: token, path: host_port)
|
||||
|
@ -814,7 +814,7 @@ class Project < ActiveRecord::Base
|
|||
|
||||
if has_container_registry_tags?
|
||||
# we currently doesn't support renaming repository if it contains tags in container registry
|
||||
raise Exception.new('repository cannot be renamed, due to tags in container registry')
|
||||
raise Exception.new('Project cannot be renamed, because tags are present in its container registry')
|
||||
end
|
||||
|
||||
if gitlab_shell.mv_repository(old_path_with_namespace, new_path_with_namespace)
|
||||
|
|
|
@ -14,7 +14,7 @@ module JWT
|
|||
|
||||
def self.full_access_token(*names)
|
||||
registry = Gitlab.config.registry
|
||||
token = ::Jwt::RSAToken.new(registry.key)
|
||||
token = ::JWT::RSAToken.new(registry.key)
|
||||
token.issuer = registry.issuer
|
||||
token.audience = AUDIENCE
|
||||
token[:access] = names.map do |name|
|
||||
|
|
|
@ -64,7 +64,9 @@ module Projects
|
|||
end
|
||||
|
||||
def remove_registry_tags
|
||||
project.image_registry.delete_tags
|
||||
return unless Gitlab.config.registry.enabled
|
||||
|
||||
project.container_registry_repository.delete_tags
|
||||
end
|
||||
|
||||
def raise_error(message)
|
||||
|
|
|
@ -36,7 +36,7 @@ module Projects
|
|||
|
||||
if project.has_container_registry_tags?
|
||||
# we currently doesn't support renaming repository if it contains tags in container registry
|
||||
raise TransferError.new('Repository cannot be renamed, due to tags in container registry')
|
||||
raise TransferError.new('Project cannot be transferred, because tags are present in its container registry')
|
||||
end
|
||||
|
||||
project.expire_caches_before_rename(old_path)
|
||||
|
|
|
@ -14,7 +14,8 @@
|
|||
= pluralize(tag.layers.size, "layer")
|
||||
%td
|
||||
= time_ago_in_words(tag.created_at)
|
||||
%td.content
|
||||
.controls.hidden-xs.pull-right
|
||||
= link_to namespace_project_container_registry_path(@project.namespace, @project, tag.name), class: 'btn btn-remove has-tooltip', title: "Remove", data: { confirm: "Are you sure?" }, method: :delete do
|
||||
= icon("trash cred")
|
||||
- if can?(current_user, :update_container_registry, @project)
|
||||
%td.content
|
||||
.controls.hidden-xs.pull-right
|
||||
= link_to namespace_project_container_registry_path(@project.namespace, @project, tag.name), class: 'btn btn-remove has-tooltip', title: "Remove", data: { confirm: "Are you sure?" }, method: :delete do
|
||||
= icon("trash cred")
|
||||
|
|
|
@ -18,7 +18,7 @@
|
|||
%code
|
||||
docker login #{Gitlab.config.registry.host_port}
|
||||
%br
|
||||
Then you are free to create and upload a container images with build and push commands:
|
||||
Then you are free to create and upload a container image with build and push commands:
|
||||
%pre
|
||||
docker build -t #{escape_once(@project.container_registry_repository_url)} .
|
||||
%br
|
||||
|
@ -33,7 +33,8 @@
|
|||
%th Image ID
|
||||
%th Size
|
||||
%th Created
|
||||
%th
|
||||
- if can?(current_user, :update_container_registry, @project)
|
||||
%th
|
||||
|
||||
- @tags.each do |tag|
|
||||
= render 'tag', tag: tag
|
|
@ -55,7 +55,7 @@ module ContainerRegistry
|
|||
conn.request :json
|
||||
conn.headers['Accept'] = MANIFEST_VERSION
|
||||
|
||||
conn.response :json, :content_type => /\bjson$/
|
||||
conn.response :json, content_type: /\bjson$/
|
||||
|
||||
if options[:user] && options[:password]
|
||||
conn.request(:basic_auth, options[:user].to_s, options[:password].to_s)
|
||||
|
|
|
@ -30,19 +30,21 @@ module ContainerRegistry
|
|||
def tags
|
||||
return @tags if defined?(@tags)
|
||||
return [] unless manifest && manifest['tags']
|
||||
|
||||
@tags = manifest['tags'].map do |tag|
|
||||
ContainerRegistry::Tag.new(self, tag)
|
||||
end
|
||||
@tags ||= []
|
||||
end
|
||||
|
||||
def delete_tags
|
||||
return unless tags
|
||||
|
||||
tags.each(:delete)
|
||||
end
|
||||
|
||||
def mount_blob(blob)
|
||||
return unless blob
|
||||
|
||||
client.repository_mount_blob(name, blob.digest, blob.repository.name)
|
||||
end
|
||||
|
||||
|
|
|
@ -5,14 +5,18 @@ describe "Container Registry" do
|
|||
let(:repository) { project.container_registry_repository }
|
||||
let(:tag_name) { 'latest' }
|
||||
let(:tags) { [tag_name] }
|
||||
|
||||
before do
|
||||
let(:registry_settings) do
|
||||
{
|
||||
enabled: true
|
||||
}
|
||||
end
|
||||
|
||||
before do
|
||||
login_as(:user)
|
||||
project.team << [@user, :developer]
|
||||
stub_container_registry(*tags)
|
||||
allow(Gitlab.config.registry).to receive_messages(registry_settings)
|
||||
allow(JWT::ContainerRegistryAuthenticationService).to receive(:full_access_token).and_return('token')
|
||||
end
|
||||
|
||||
describe 'GET /:project/container_registry' do
|
||||
|
@ -22,6 +26,7 @@ describe "Container Registry" do
|
|||
|
||||
context 'when no tags' do
|
||||
let(:tags) { [] }
|
||||
|
||||
it { expect(page).to have_content('No images in Container Registry for this project') }
|
||||
end
|
||||
|
||||
|
@ -37,7 +42,8 @@ describe "Container Registry" do
|
|||
|
||||
it do
|
||||
expect_any_instance_of(::ContainerRegistry::Tag).to receive(:delete).and_return(true)
|
||||
|
||||
click_on 'Remove'
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
|
Loading…
Reference in a new issue