Commit d7b91fb5 authored by Kamil Trzcinski's avatar Kamil Trzcinski

Simplify Container Registry view implementation

parent 08396be6
...@@ -375,17 +375,19 @@ class Project < ActiveRecord::Base ...@@ -375,17 +375,19 @@ class Project < ActiveRecord::Base
@repository ||= Repository.new(path_with_namespace, self) @repository ||= Repository.new(path_with_namespace, self)
end end
def container_registry def container_registry_repository
@container_registry_repository ||= begin @container_registry_repository ||= begin
token = Jwt::ContainerRegistryAuthenticationService.full_access_token(path_with_namespace) 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] registry[path_with_namespace]
end end
end end
def container_registry_url def container_registry_repository_url
if container_registry_enabled? && Gitlab.config.registry.enabled 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
end end
......
- page_title "Container Registry" - page_title "Container Registry"
= render "header_title" = 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 %hr
%ul.content-list %ul.content-list
- if @tags.blank? - if @tags.blank?
%li %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 - else
.table-holder .table-holder
%table.table.builds %table.table.builds
%thead %thead
%tr %tr
%th Name %th Name
%th Digest %th Image ID
%th Size %th Size
%th Created %th Created
%th %th
...@@ -37,8 +38,8 @@ ...@@ -37,8 +38,8 @@
- @tags.each do |tag| - @tags.each do |tag|
%tr %tr
%td %td
#{tag.repository.name}:#{tag.name} = escape_once(tag.name)
= clipboard_button(clipboard_text: "docker pull #{Gitlab.config.registry.host_port}/#{tag.repository.name}:#{tag.name}") = clipboard_button(clipboard_text: "docker pull #{tag.path}")
%td %td
- if layer = tag.layers.first - if layer = tag.layers.first
%span.has-tooltip(title="#{layer.revision}") %span.has-tooltip(title="#{layer.revision}")
......
...@@ -11,6 +11,10 @@ module ContainerRegistry ...@@ -11,6 +11,10 @@ module ContainerRegistry
digest.present? digest.present?
end end
def path
"#{repository.path}@#{digest}"
end
def digest def digest
config['digest'] config['digest']
end end
......
module ContainerRegistry module ContainerRegistry
class Registry class Registry
attr_reader :uri, :client attr_reader :uri, :client, :path
def initialize(uri, options = {}) def initialize(uri, options = {})
@path = uri || options[:path]
@uri = URI.parse(uri) @uri = URI.parse(uri)
@client = ContainerRegistry::Client.new(uri, options) @client = ContainerRegistry::Client.new(uri, options)
end end
......
...@@ -10,6 +10,10 @@ module ContainerRegistry ...@@ -10,6 +10,10 @@ module ContainerRegistry
@client ||= registry.client @client ||= registry.client
end end
def path
[registry.path, name].compact.join('/')
end
def [](tag) def [](tag)
ContainerRegistry::Tag.new(self, tag) ContainerRegistry::Tag.new(self, tag)
end end
......
...@@ -15,6 +15,10 @@ module ContainerRegistry ...@@ -15,6 +15,10 @@ module ContainerRegistry
@manifest = client.repository_manifest(repository.name, name) @manifest = client.repository_manifest(repository.name, name)
end end
def path
"#{repository.path}:#{name}"
end
def [](key) def [](key)
return unless manifest return unless manifest
manifest[key] manifest[key]
......
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