Skip to content
Snippets Groups Projects
Commit d7b91fb5 authored by Kamil Trzcinski's avatar Kamil Trzcinski
Browse files

Simplify Container Registry view implementation

parent 08396be6
No related branches found
No related tags found
No related merge requests found
Loading
@@ -375,17 +375,19 @@ class Project < ActiveRecord::Base
Loading
@@ -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
   
Loading
Loading
- 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
Loading
@@ -37,8 +38,8 @@
Loading
@@ -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}")
Loading
Loading
Loading
@@ -11,6 +11,10 @@ module ContainerRegistry
Loading
@@ -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
Loading
Loading
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
Loading
Loading
Loading
@@ -10,6 +10,10 @@ module ContainerRegistry
Loading
@@ -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
Loading
Loading
Loading
@@ -15,6 +15,10 @@ module ContainerRegistry
Loading
@@ -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]
Loading
Loading
0% Loading or .
You are about to add 0 people to the discussion. Proceed with caution.
Finish editing this message first!
Please register or to comment