dapp 0.0.4 → 0.0.5
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +8 -8
- data/lib/dapp/builder.rb +0 -7
- data/lib/dapp/builder/cascade_tagging.rb +11 -11
- data/lib/dapp/builder/chefify.rb +8 -9
- data/lib/dapp/builder/git_tagging.rb +4 -8
- data/lib/dapp/cli/build.rb +7 -8
- data/lib/dapp/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,15 +1,15 @@
|
|
1
1
|
---
|
2
2
|
!binary "U0hBMQ==":
|
3
3
|
metadata.gz: !binary |-
|
4
|
-
|
4
|
+
N2E1Mzg3YzlmYzUyMDQ2ZDViNDZlMDU3ZDYxOGEyZWEwNzJlYTZhMA==
|
5
5
|
data.tar.gz: !binary |-
|
6
|
-
|
6
|
+
OTkzMzA3NzVlNmIyNTk4MjdkMzYxMmJjOWQ4Yjc4OTNjZmEyODljOQ==
|
7
7
|
SHA512:
|
8
8
|
metadata.gz: !binary |-
|
9
|
-
|
10
|
-
|
11
|
-
|
9
|
+
YWJhNWIyYTZlOWZkOGY2M2E3ZTA2MDc1NmNlYzhjZGNjNDY3ZmZjMzcxZTZh
|
10
|
+
NDZmOGMzMmE1NDllMjE3YTdmZGU1N2UwMzA5ZTI0OGI2MzcxYTMzNjA4Y2My
|
11
|
+
NDZiOTE3ODFkM2Y1MTUyYzE5ZmYxZGViNDZmMDljMzk0M2NhOTA=
|
12
12
|
data.tar.gz: !binary |-
|
13
|
-
|
14
|
-
|
15
|
-
|
13
|
+
Y2U4NWNjZmM5YmQ4MGY3MzJjOTEzZGQ3NGUxNTBhZWI1NzE3ZjVjYjA0MmFi
|
14
|
+
MzQzNjBmMDhhMDFlZmI1ZWI0ZDAwNDY4Yjc1MDY3ZTEwZDM5NDhlY2EzYTE0
|
15
|
+
NjdkOTlkMmNiZGI2NTg3NTJjM2YzNmI5ZDc4NGU0NDI2MzNlYmU=
|
data/lib/dapp/builder.rb
CHANGED
@@ -186,13 +186,6 @@ module Dapp
|
|
186
186
|
end
|
187
187
|
# rubocop:enable Metrics/AbcSize
|
188
188
|
|
189
|
-
def tag(image_id, name: nil, tag: nil, registry: nil)
|
190
|
-
return unless name && tag
|
191
|
-
|
192
|
-
new = { name: name, tag: tag, registry: registry }
|
193
|
-
docker.tag image_id, new
|
194
|
-
end
|
195
|
-
|
196
189
|
def register_atomizer(atomizer)
|
197
190
|
atomizers << atomizer
|
198
191
|
end
|
@@ -4,43 +4,43 @@ module Dapp
|
|
4
4
|
module CascadeTagging
|
5
5
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
6
6
|
def tag_cascade(image_id)
|
7
|
-
return unless opts[:
|
7
|
+
return unless opts[:tag_cascade]
|
8
8
|
|
9
9
|
log 'Applying cascade tagging'
|
10
10
|
|
11
11
|
opts[:build_history_length] ||= 10
|
12
12
|
|
13
|
-
|
13
|
+
spec = {
|
14
14
|
name: name,
|
15
15
|
tag: home_branch,
|
16
16
|
registry: opts[:docker_registry]
|
17
17
|
}
|
18
18
|
|
19
19
|
# return if nothing changed
|
20
|
-
return if image_id == docker.image_id(
|
20
|
+
return if image_id == docker.image_id(spec)
|
21
21
|
|
22
22
|
# remove excess tags
|
23
|
-
tags_to_remove = docker.images(name:
|
24
|
-
|
25
|
-
|
23
|
+
tags_to_remove = docker.images(name: spec[:name], registry: spec[:registry])
|
24
|
+
tags_to_remove.map! { |image| image[:tag] }
|
25
|
+
tags_to_remove.select! { |tag| tag.start_with?("#{spec[:tag]}_") && tag.sub(/^#{spec[:tag]}_/, '').to_i >= opts[:build_history_length] }
|
26
26
|
tags_to_remove.each do |tag_to_remove|
|
27
|
-
docker.rmi
|
27
|
+
docker.rmi spec.merge(tag: tag_to_remove)
|
28
28
|
end
|
29
29
|
|
30
30
|
# shift old images: 1 -> 2, 2 -> 3, ..., n -> n+1
|
31
31
|
(opts[:build_history_length] - 1).downto(1).each do |n|
|
32
|
-
origin =
|
32
|
+
origin = spec.merge(tag: "#{spec[:tag]}_#{n}")
|
33
33
|
|
34
34
|
if docker.image_exist?(**origin)
|
35
|
-
docker.tag origin,
|
35
|
+
docker.tag origin, spec.merge(tag: "#{spec[:tag]}_#{n + 1}")
|
36
36
|
end
|
37
37
|
end
|
38
38
|
|
39
39
|
# shift top -> 1
|
40
|
-
docker.tag
|
40
|
+
docker.tag spec, spec.merge(tag: "#{spec[:tag]}_1") if docker.image_exist?(**spec)
|
41
41
|
|
42
42
|
# tag top
|
43
|
-
docker.tag image_id,
|
43
|
+
docker.tag image_id, spec
|
44
44
|
end
|
45
45
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
46
46
|
end
|
data/lib/dapp/builder/chefify.rb
CHANGED
@@ -12,16 +12,14 @@ module Dapp
|
|
12
12
|
# run chef-solo for extra dapps
|
13
13
|
extra_dapps.each do |extra_dapp|
|
14
14
|
if dapp_chef_cookbooks_artifact.exist_in_step? "cookbooks/#{extra_dapp}/recipes/#{step}.rb", step
|
15
|
-
|
16
|
-
docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o #{extra_dapp}::#{step},env-#{opts[:basename]}::void", step: step
|
15
|
+
docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o mdapp-#{extra_dapp}::#{step},dapp-#{opts[:basename]}::void", step: step
|
17
16
|
end
|
18
17
|
end
|
19
18
|
|
20
19
|
# run chef-solo for app
|
21
20
|
recipe = [opts[:name], step].compact.join '-'
|
22
|
-
|
23
|
-
|
24
|
-
docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o env-#{opts[:basename]}::#{recipe}", step: step
|
21
|
+
if dapp_chef_cookbooks_artifact.exist_in_step? "cookbooks/dapp-#{opts[:basename]}/recipes/#{recipe}.rb", step
|
22
|
+
docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o dapp-#{opts[:basename]}::#{recipe}", step: step
|
25
23
|
end
|
26
24
|
end
|
27
25
|
end
|
@@ -41,12 +39,14 @@ module Dapp
|
|
41
39
|
# init cronicler
|
42
40
|
repo = GitRepo::Chronicler.new(self, 'dapp_cookbooks', build_path: home_branch)
|
43
41
|
|
42
|
+
# verify berks lock
|
43
|
+
shellout "berks verify --berksfile=#{home_path 'Berksfile'}"
|
44
|
+
|
44
45
|
# vendor cookbooks
|
45
46
|
shellout "berks vendor --berksfile=#{home_path 'Berksfile'} #{repo.chronodir_path 'cookbooks'}", log_verbose: true
|
46
47
|
|
47
48
|
# create void receipt
|
48
|
-
|
49
|
-
FileUtils.touch repo.chronodir_path 'cookbooks', "env-#{opts[:basename]}", 'recipes', 'void.rb'
|
49
|
+
FileUtils.touch repo.chronodir_path 'cookbooks', "dapp-#{opts[:basename]}", 'recipes', 'void.rb'
|
50
50
|
|
51
51
|
# commit (if smth changed)
|
52
52
|
repo.commit!
|
@@ -72,8 +72,7 @@ module Dapp
|
|
72
72
|
def run_chef_solo_for_dapp_common
|
73
73
|
[:prepare, :build, :setup].each do |step|
|
74
74
|
if dapp_chef_cookbooks_artifact.exist_in_step? "cookbooks/dapp-common/recipes/#{step}.rb", step
|
75
|
-
|
76
|
-
docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o dapp-common::#{step},env-#{opts[:basename]}::void", step: step
|
75
|
+
docker.run "chef-solo -c /usr/share/dapp/chef_solo.rb -o mdapp-common::#{step},dapp-#{opts[:basename]}::void", step: step
|
77
76
|
end
|
78
77
|
end
|
79
78
|
end
|
@@ -8,16 +8,12 @@ module Dapp
|
|
8
8
|
registry: opts[:docker_registry]
|
9
9
|
}
|
10
10
|
|
11
|
-
|
12
|
-
|
11
|
+
{ commit: 'rev-parse HEAD', branch: 'rev-parse --abbrev-ref HEAD' }.each do |tag_type, git_command|
|
12
|
+
next unless opts[:"tag_#{tag_type}"]
|
13
13
|
|
14
|
-
|
15
|
-
end
|
16
|
-
|
17
|
-
if opts[:tag_branch]
|
18
|
-
log 'Applying git branch tag'
|
14
|
+
log "Applying git #{tag_type} tag"
|
19
15
|
|
20
|
-
docker.tag image_id, spec.merge(tag: shellout("git -C #{home_path}
|
16
|
+
docker.tag image_id, spec.merge(tag: shellout("git -C #{home_path} #{git_command}").stdout.strip)
|
21
17
|
end
|
22
18
|
end
|
23
19
|
end
|
data/lib/dapp/cli/build.rb
CHANGED
@@ -20,11 +20,11 @@ BANNER
|
|
20
20
|
class << self
|
21
21
|
def option(name, args)
|
22
22
|
if args.delete :builder_opt
|
23
|
-
args[:proc]
|
24
|
-
|
25
|
-
|
26
|
-
|
27
|
-
|
23
|
+
args[:proc] = if args[:boolean]
|
24
|
+
proc { Dapp::Builder.default_opts[name] = true }
|
25
|
+
else
|
26
|
+
proc { |v| Dapp::Builder.default_opts[name] = v }
|
27
|
+
end
|
28
28
|
end
|
29
29
|
|
30
30
|
super(name, args)
|
@@ -82,8 +82,8 @@ BANNER
|
|
82
82
|
boolean: true,
|
83
83
|
builder_opt: true
|
84
84
|
|
85
|
-
option :
|
86
|
-
long: '--cascade
|
85
|
+
option :tag_cascade,
|
86
|
+
long: '--tag-cascade',
|
87
87
|
description: 'Use cascade tagging',
|
88
88
|
boolean: true,
|
89
89
|
builder_opt: true
|
@@ -103,7 +103,6 @@ BANNER
|
|
103
103
|
option :tag,
|
104
104
|
long: '--tag TAG',
|
105
105
|
description: 'Add tag (can be used one or more times)',
|
106
|
-
on: :tail,
|
107
106
|
proc: proc { |v| (Dapp::Builder.default_opts[:tags] ||= []) << v }
|
108
107
|
|
109
108
|
option :tag_commit,
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.5
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
@@ -9,7 +9,7 @@ authors:
|
|
9
9
|
autorequire:
|
10
10
|
bindir: bin
|
11
11
|
cert_chain: []
|
12
|
-
date: 2016-04-
|
12
|
+
date: 2016-04-04 00:00:00.000000000 Z
|
13
13
|
dependencies:
|
14
14
|
- !ruby/object:Gem::Dependency
|
15
15
|
name: mixlib-shellout
|