summaryrefslogtreecommitdiff
diff options
context:
space:
mode:
-rw-r--r--app/models/project.rb10
-rw-r--r--app/views/projects/container_registry/index.html.haml41
-rw-r--r--lib/container_registry/blob.rb4
-rw-r--r--lib/container_registry/registry.rb3
-rw-r--r--lib/container_registry/repository.rb4
-rw-r--r--lib/container_registry/tag.rb4
6 files changed, 41 insertions, 25 deletions
diff --git a/app/models/project.rb b/app/models/project.rb
index d384c58ca36..36ce472f3a3 100644
--- a/app/models/project.rb
+++ b/app/models/project.rb
@@ -375,17 +375,19 @@ class Project < ActiveRecord::Base
@repository ||= Repository.new(path_with_namespace, self)
end
- def container_registry
+ def container_registry_repository
@container_registry_repository ||= begin
token = Jwt::ContainerRegistryAuthenticationService.full_access_token(path_with_namespace)
- registry = ContainerRegistry::Registry.new(Gitlab.config.registry.api_url, token: token)
+ url = Gitlab.config.registry.api_url
+ host_port = Gitlab.config.registry.host_port
+ registry = ContainerRegistry::Registry.new(url, token: token, path: host_port)
registry[path_with_namespace]
end
end
- def container_registry_url
+ def container_registry_repository_url
if container_registry_enabled? && Gitlab.config.registry.enabled
- "#{Gitlab.config.registry.host_with_port}/#{path_with_namespace}"
+ "#{Gitlab.config.registry.host_port}/#{path_with_namespace}"
end
end
diff --git a/app/views/projects/container_registry/index.html.haml b/app/views/projects/container_registry/index.html.haml
index 1ac3a62f54e..5b7dd27ace6 100644
--- a/app/views/projects/container_registry/index.html.haml
+++ b/app/views/projects/container_registry/index.html.haml
@@ -1,35 +1,36 @@
- page_title "Container Registry"
= render "header_title"
-.light.prepend-top-default
- %p
- A 'container image' is a snapshot of a container.
- You can host your 'container images' with GitLab.
- %br
- To start using container images hosted on GitLab you first need to login:
- %pre
- %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:
- %pre
- docker build -t #{Gitlab.config.registry.host_port}/#{@project.path_with_namespace} .
- %br
- docker push #{Gitlab.config.registry.host_port}/#{@project.path_with_namespace}
-
%hr
%ul.content-list
- if @tags.blank?
%li
- .nothing-here-block No images to show
+ .nothing-here-block No images in Container Registry for this project.
+
+ .light.prepend-top-default
+ %p
+ A 'container image' is a snapshot of a container.
+ You can host your container images with GitLab.
+ %br
+ To start using container images hosted on GitLab you first need to login:
+ %pre
+ %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:
+ %pre
+ docker build -t #{escape_once(@project.container_registry_repository_url)} .
+ %br
+ docker push #{escape_once(@project.container_registry_repository_url)}
+
- else
.table-holder
%table.table.builds
%thead
%tr
%th Name
- %th Digest
+ %th Image ID
%th Size
%th Created
%th
@@ -37,8 +38,8 @@
- @tags.each do |tag|
%tr
%td
- #{tag.repository.name}:#{tag.name}
- = clipboard_button(clipboard_text: "docker pull #{Gitlab.config.registry.host_port}/#{tag.repository.name}:#{tag.name}")
+ = escape_once(tag.name)
+ = clipboard_button(clipboard_text: "docker pull #{tag.path}")
%td
- if layer = tag.layers.first
%span.has-tooltip(title="#{layer.revision}")
diff --git a/lib/container_registry/blob.rb b/lib/container_registry/blob.rb
index e0d9923f217..16e3f853418 100644
--- a/lib/container_registry/blob.rb
+++ b/lib/container_registry/blob.rb
@@ -11,6 +11,10 @@ module ContainerRegistry
digest.present?
end
+ def path
+ "#{repository.path}@#{digest}"
+ end
+
def digest
config['digest']
end
diff --git a/lib/container_registry/registry.rb b/lib/container_registry/registry.rb
index f866862db22..a86ddb9326a 100644
--- a/lib/container_registry/registry.rb
+++ b/lib/container_registry/registry.rb
@@ -1,8 +1,9 @@
module ContainerRegistry
class Registry
- attr_reader :uri, :client
+ attr_reader :uri, :client, :path
def initialize(uri, options = {})
+ @path = uri || options[:path]
@uri = URI.parse(uri)
@client = ContainerRegistry::Client.new(uri, options)
end
diff --git a/lib/container_registry/repository.rb b/lib/container_registry/repository.rb
index c930878d265..f01330f3648 100644
--- a/lib/container_registry/repository.rb
+++ b/lib/container_registry/repository.rb
@@ -10,6 +10,10 @@ module ContainerRegistry
@client ||= registry.client
end
+ def path
+ [registry.path, name].compact.join('/')
+ end
+
def [](tag)
ContainerRegistry::Tag.new(self, tag)
end
diff --git a/lib/container_registry/tag.rb b/lib/container_registry/tag.rb
index 324778bdf2a..14cee8be889 100644
--- a/lib/container_registry/tag.rb
+++ b/lib/container_registry/tag.rb
@@ -15,6 +15,10 @@ module ContainerRegistry
@manifest = client.repository_manifest(repository.name, name)
end
+ def path
+ "#{repository.path}:#{name}"
+ end
+
def [](key)
return unless manifest
manifest[key]