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)
|
@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
|
||||||
|
|
||||||
|
|
|
@ -1,35 +1,36 @@
|
||||||
- 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 @@
|
||||||
- @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
|
||||||
digest.present?
|
digest.present?
|
||||||
end
|
end
|
||||||
|
|
||||||
|
def path
|
||||||
|
"#{repository.path}@#{digest}"
|
||||||
|
end
|
||||||
|
|
||||||
def digest
|
def digest
|
||||||
config['digest']
|
config['digest']
|
||||||
end
|
end
|
||||||
|
|
|
@ -1,8 +1,9 @@
|
||||||
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
|
||||||
@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
|
||||||
@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…
Reference in New Issue