picsolve_docker_builder 0.4.0 → 0.5.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: de22e1ddc1a2ea198d0c73b3d7666ff4478e1ebd
|
4
|
+
data.tar.gz: 5081529443f27fc76d6cae03744a88b064129857
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: b8f4cc5d83cd5677610d743262e9a4751e8165a06d76af80c73b8932eb1ffc87f00a4cb46ad25f84ae18dc780f8b99c2e870776f0530dfc930fa44b6fc06aeee
|
7
|
+
data.tar.gz: fbfa2a3eae645fea2af45289fa5e174817a4f157fac45de0cfd294d2e139a8b0207adac0e8a96383538960ac59767300762c087cc0d7eb09bd3c1ddd13967966
|
@@ -1,7 +1,9 @@
|
|
1
1
|
require 'picsolve_docker_builder/base'
|
2
|
-
require 'picsolve_docker_builder/
|
2
|
+
require 'picsolve_docker_builder/helpers/registry'
|
3
3
|
require 'picsolve_docker_builder/composer/requirements'
|
4
4
|
|
5
|
+
Registry = PicsolveDockerBuilder::Helpers::Registry
|
6
|
+
|
5
7
|
module PicsolveDockerBuilder
|
6
8
|
module Composer
|
7
9
|
# Represents an container in an namespace
|
@@ -1,10 +1,12 @@
|
|
1
1
|
require 'picsolve_docker_builder/helpers/ssh_auth_forwarding'
|
2
|
-
require 'picsolve_docker_builder/
|
2
|
+
require 'picsolve_docker_builder/helpers/registry'
|
3
3
|
require 'picsolve_docker_builder/base'
|
4
4
|
require 'docker'
|
5
5
|
require 'logger'
|
6
6
|
require 'psych'
|
7
7
|
|
8
|
+
Registry = PicsolveDockerBuilder::Helpers::Registry
|
9
|
+
|
8
10
|
module PicsolveDockerBuilder
|
9
11
|
# Docker image building template
|
10
12
|
# rubocop:disable Metrics/ClassLength
|
@@ -105,7 +107,7 @@ module PicsolveDockerBuilder
|
|
105
107
|
repotag = "#{dest_image_name}:#{tag}"
|
106
108
|
log.info "pushing image with #{repotag}"
|
107
109
|
@docker_build.push(
|
108
|
-
|
110
|
+
Registry.creds,
|
109
111
|
tag: tag
|
110
112
|
) do |resp|
|
111
113
|
resp = JSON.parse resp
|
@@ -378,7 +380,7 @@ module PicsolveDockerBuilder
|
|
378
380
|
log.debug "pulling image '#{image_name}' from registry"
|
379
381
|
Docker::Image.create(
|
380
382
|
{ 'fromImage' => image_name },
|
381
|
-
|
383
|
+
Registry.creds
|
382
384
|
)
|
383
385
|
log.debug "building asset image from '#{image_name}'"
|
384
386
|
asset_image_build
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: picsolve_docker_builder
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.5.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Christian Simon
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-
|
11
|
+
date: 2016-02-03 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: bundler
|
@@ -259,7 +259,6 @@ files:
|
|
259
259
|
- lib/picsolve_docker_builder/builder/file.rb
|
260
260
|
- lib/picsolve_docker_builder/composer/composer.rb
|
261
261
|
- lib/picsolve_docker_builder/composer/container.rb
|
262
|
-
- lib/picsolve_docker_builder/composer/registry.rb
|
263
262
|
- lib/picsolve_docker_builder/composer/requirements.rb
|
264
263
|
- lib/picsolve_docker_builder/composer/requirements/base.rb
|
265
264
|
- lib/picsolve_docker_builder/composer/requirements/context.rb
|
@@ -1,84 +0,0 @@
|
|
1
|
-
require 'picsolve_docker_builder/base'
|
2
|
-
require 'excon'
|
3
|
-
require 'json'
|
4
|
-
require 'base64'
|
5
|
-
|
6
|
-
module PicsolveDockerBuilder
|
7
|
-
module Composer
|
8
|
-
# This represents a remote registry, that is queried for
|
9
|
-
# for informations about images
|
10
|
-
class Registry
|
11
|
-
include PicsolveDockerBuilder::Base
|
12
|
-
|
13
|
-
attr_reader :config
|
14
|
-
|
15
|
-
def self.dockercfg_path
|
16
|
-
File.expand_path '~/.dockercfg'
|
17
|
-
end
|
18
|
-
|
19
|
-
def self.dockercfg
|
20
|
-
JSON.parse(
|
21
|
-
File.open(
|
22
|
-
dockercfg_path
|
23
|
-
).read
|
24
|
-
)
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.creds(*args)
|
28
|
-
auth = Base64.decode64(
|
29
|
-
get_login_basic(
|
30
|
-
*args
|
31
|
-
)
|
32
|
-
).split(':')
|
33
|
-
{
|
34
|
-
'username' => auth[0],
|
35
|
-
'password' => auth[1]
|
36
|
-
}
|
37
|
-
end
|
38
|
-
|
39
|
-
def self.get_login_basic(registry = 'docker.picsolve.net')
|
40
|
-
dockercfg[registry]['auth']
|
41
|
-
rescue StandardError
|
42
|
-
nil
|
43
|
-
end
|
44
|
-
|
45
|
-
def self.login_basic(*args)
|
46
|
-
auth = creds(*args)
|
47
|
-
Base64.encode64("#{auth['username']}:#{auth['password']}").delete("\n")
|
48
|
-
end
|
49
|
-
|
50
|
-
def self.repo_tag_unique(image_name)
|
51
|
-
repo_tag = image_name.split(%r{/})[1..-1].join('/')
|
52
|
-
repo_tag_split = repo_tag.split(/:/)
|
53
|
-
repo = repo_tag_split[0]
|
54
|
-
tag = repo_tag_split[1] || 'latest'
|
55
|
-
|
56
|
-
headers = {}
|
57
|
-
headers['Authorization'] = "Basic #{login_basic}" \
|
58
|
-
unless login_basic.nil?
|
59
|
-
|
60
|
-
connection = Excon.new(
|
61
|
-
'https://docker.picsolve.net',
|
62
|
-
headers: headers
|
63
|
-
)
|
64
|
-
response = connection.get(path: "/v1/repositories/#{repo}/tags")
|
65
|
-
|
66
|
-
tags = JSON.parse(response.body)
|
67
|
-
|
68
|
-
hash = tags[tag]
|
69
|
-
|
70
|
-
tags.each do |t, h|
|
71
|
-
next if h != hash
|
72
|
-
next if t == tag
|
73
|
-
next unless t.match(/jenkins-[0-9]+/)
|
74
|
-
return {
|
75
|
-
tag_unique: "#{image_name.split(':').first}:#{t}",
|
76
|
-
hash: hash
|
77
|
-
}
|
78
|
-
end
|
79
|
-
|
80
|
-
fail "Can not find a uniqe tag for #{image_name}"
|
81
|
-
end
|
82
|
-
end
|
83
|
-
end
|
84
|
-
end
|