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
@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
......
- 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}")
......
......@@ -11,6 +11,10 @@ module ContainerRegistry
digest.present?
end
def path
"#{repository.path}@#{digest}"
end
def digest
config['digest']
end
......
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
......
......@@ -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
......
......@@ -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]
......
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