Simplify Container Registry view implementation
This commit is contained in:
parent
08396be619
commit
d7b91fb596
|
@ -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
|
||||
|
||||
|
|
|
@ -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}")
|
||||
|
|
|
@ -11,6 +11,10 @@ module ContainerRegistry
|
|||
digest.present?
|
||||
end
|
||||
|
||||
def path
|
||||
"#{repository.path}@#{digest}"
|
||||
end
|
||||
|
||||
def digest
|
||||
config['digest']
|
||||
end
|
||||
|
|
|
@ -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
|
||||
|
|
|
@ -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]
|
||||
|
|
Loading…
Reference in New Issue