Skip to content
GitLab
Menu
Projects
Groups
Snippets
/
Help
Help
Support
Community forum
Keyboard shortcuts
?
Submit feedback
Contribute to GitLab
Sign in / Register
Toggle navigation
Menu
Open sidebar
heptapod
heptapod
Commits
5cd62c00c02f
Commit
5cd62c00
authored
May 12, 2016
by
Kamil Trzcinski
Browse files
Fix CI tests
parent
054dfc55778a
Changes
13
Hide whitespace changes
Inline
Side-by-side
app/controllers/projects/container_registry_controller.rb
View file @
5cd62c00
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
...
...
app/helpers/gitlab_routing_helper.rb
View file @
5cd62c00
...
...
@@ -34,7 +34,7 @@
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
)
...
...
app/models/ability.rb
View file @
5cd62c00
...
...
@@ -291,7 +291,7 @@
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
...
...
app/models/namespace.rb
View file @
5cd62c00
...
...
@@ -128,7 +128,7 @@
gitlab_shell
.
add_namespace
(
path_was
)
if
any_project_has_container_registry_tags?
raise
Exception
.
new
(
'
n
amespace cannot be moved, because at least one project has tags in container registry'
)
raise
Exception
.
new
(
'
N
amespace cannot be moved, because at least one project has tags in container registry'
)
end
if
gitlab_shell
.
mv_namespace
(
path_was
,
path
)
...
...
app/models/project.rb
View file @
5cd62c00
...
...
@@ -377,7 +377,7 @@
def
container_registry_repository
@container_registry_repository
||=
begin
token
=
J
wt
::
ContainerRegistryAuthenticationService
.
full_access_token
(
path_with_namespace
)
token
=
J
WT
::
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 @@
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
)
...
...
app/services/jwt/container_registry_authentication_service.rb
View file @
5cd62c00
...
...
@@ -14,7 +14,7 @@
def
self
.
full_access_token
(
*
names
)
registry
=
Gitlab
.
config
.
registry
token
=
::
J
wt
::
RSAToken
.
new
(
registry
.
key
)
token
=
::
J
WT
::
RSAToken
.
new
(
registry
.
key
)
token
.
issuer
=
registry
.
issuer
token
.
audience
=
AUDIENCE
token
[
:access
]
=
names
.
map
do
|
name
|
...
...
app/services/projects/destroy_service.rb
View file @
5cd62c00
...
...
@@ -64,7 +64,9 @@
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
)
...
...
app/services/projects/transfer_service.rb
View file @
5cd62c00
...
...
@@ -36,7 +36,7 @@
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
)
...
...
app/views/projects/container_registry/_tag.html.haml
View file @
5cd62c00
...
...
@@ -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"
)
app/views/projects/container_registry/index.html.haml
View file @
5cd62c00
...
...
@@ -18,7 +18,7 @@
%code
docker login
#{
Gitlab
.
config
.
registry
.
host_port
}
%br
Then you are free to create and upload a container image
s
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
\ No newline at end of file
lib/container_registry/client.rb
View file @
5cd62c00
...
...
@@ -55,7 +55,7 @@
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
)
...
...
lib/container_registry/repository.rb
View file @
5cd62c00
...
...
@@ -30,6 +30,7 @@
def
tags
return
@tags
if
defined?
(
@tags
)
return
[]
unless
manifest
&&
manifest
[
'tags'
]
@tags
=
manifest
[
'tags'
].
map
do
|
tag
|
ContainerRegistry
::
Tag
.
new
(
self
,
tag
)
end
...
...
@@ -33,8 +34,7 @@
@tags
=
manifest
[
'tags'
].
map
do
|
tag
|
ContainerRegistry
::
Tag
.
new
(
self
,
tag
)
end
@tags
||=
[]
end
def
delete_tags
return
unless
tags
...
...
@@ -37,9 +37,10 @@
end
def
delete_tags
return
unless
tags
tags
.
each
(
:delete
)
end
def
mount_blob
(
blob
)
return
unless
blob
...
...
@@ -41,8 +42,9 @@
tags
.
each
(
:delete
)
end
def
mount_blob
(
blob
)
return
unless
blob
client
.
repository_mount_blob
(
name
,
blob
.
digest
,
blob
.
repository
.
name
)
end
...
...
spec/features/container_registry_spec.rb
View file @
5cd62c00
...
...
@@ -5,11 +5,13 @@
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
)
...
...
@@ -10,9 +12,11 @@
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 @@
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 @@
it
do
expect_any_instance_of
(
::
ContainerRegistry
::
Tag
).
to
receive
(
:delete
).
and_return
(
true
)
click_on
'Remove'
end
end
...
...
@@ -40,4 +46,4 @@
click_on
'Remove'
end
end
end
\ No newline at end of file
end
Write
Preview
Supports
Markdown
0%
Try again
or
attach a new file
.
Attach a file
Cancel
You are about to add
0
people
to the discussion. Proceed with caution.
Finish editing this message first!
Cancel
Please
register
or
sign in
to comment