dapp 0.0.4 → 0.0.5
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 +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
|