BigW Consortium Gitlab

Commit 5c2f2fd2 by Kamil Trzcinski

Fix CI tests

parent 4d84ba43
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,6 +14,7 @@
= pluralize(tag.layers.size, "layer")
%td
= time_ago_in_words(tag.created_at)
- 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
......
......@@ -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,6 +33,7 @@
%th Image ID
%th Size
%th Created
- if can?(current_user, :update_container_registry, @project)
%th
- @tags.each do |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,6 +42,7 @@ describe "Container Registry" do
it do
expect_any_instance_of(::ContainerRegistry::Tag).to receive(:delete).and_return(true)
click_on 'Remove'
end
end
......
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