dapp 0.2.8 → 0.3.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 +8 -8
- data/config/en/common.yml +3 -1
- data/config/en/net_status.yml +5 -2
- data/lib/dapp.rb +9 -6
- data/lib/dapp/application.rb +30 -5
- data/lib/dapp/application/logging.rb +2 -2
- data/lib/dapp/application/path.rb +10 -6
- data/lib/dapp/build/stage/base.rb +77 -9
- data/lib/dapp/build/stage/chef_cookbooks.rb +1 -1
- data/lib/dapp/build/stage/from.rb +2 -1
- data/lib/dapp/build/stage/infra_install.rb +1 -1
- data/lib/dapp/build/stage/source_1.rb +1 -1
- data/lib/dapp/build/stage/source_1_archive.rb +0 -4
- data/lib/dapp/build/stage/source_2.rb +1 -1
- data/lib/dapp/build/stage/source_3.rb +1 -1
- data/lib/dapp/build/stage/source_base.rb +3 -3
- data/lib/dapp/builder/chef.rb +160 -140
- data/lib/dapp/cli.rb +2 -1
- data/lib/dapp/cli/base.rb +1 -1
- data/lib/dapp/cli/build.rb +7 -7
- data/lib/dapp/cli/flush.rb +3 -3
- data/lib/dapp/cli/flush/{build_cache.rb → metadata.rb} +7 -7
- data/lib/dapp/cli/flush/{stage_cache.rb → stages.rb} +4 -4
- data/lib/dapp/cli/push.rb +3 -3
- data/lib/dapp/cli/run.rb +59 -0
- data/lib/dapp/config/application.rb +20 -2
- data/lib/dapp/config/artifact.rb +69 -0
- data/lib/dapp/config/chef.rb +27 -0
- data/lib/dapp/config/docker.rb +1 -1
- data/lib/dapp/config/git_artifact.rb +3 -29
- data/lib/dapp/config/shell.rb +20 -0
- data/lib/dapp/controller.rb +21 -22
- data/lib/dapp/exception/base.rb +1 -5
- data/lib/dapp/filelock.rb +1 -1
- data/lib/dapp/git_artifact.rb +2 -2
- data/lib/dapp/git_repo/base.rb +5 -5
- data/lib/dapp/git_repo/own.rb +6 -2
- data/lib/dapp/git_repo/remote.rb +5 -3
- data/lib/dapp/helper/cli.rb +7 -1
- data/lib/dapp/helper/log.rb +2 -2
- data/lib/dapp/helper/shellout.rb +1 -1
- data/lib/dapp/helper/trivia.rb +0 -4
- data/lib/dapp/image/arguments.rb +115 -0
- data/lib/dapp/image/docker.rb +76 -0
- data/lib/dapp/image/stage.rb +74 -0
- data/lib/dapp/version.rb +1 -1
- metadata +9 -6
- data/lib/dapp/docker_image.rb +0 -51
- data/lib/dapp/stage_image.rb +0 -160
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.3.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2016-08-
|
11
|
+
date: 2016-08-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|
@@ -354,19 +354,20 @@ files:
|
|
354
354
|
- lib/dapp/cli/base.rb
|
355
355
|
- lib/dapp/cli/build.rb
|
356
356
|
- lib/dapp/cli/flush.rb
|
357
|
-
- lib/dapp/cli/flush/
|
358
|
-
- lib/dapp/cli/flush/
|
357
|
+
- lib/dapp/cli/flush/metadata.rb
|
358
|
+
- lib/dapp/cli/flush/stages.rb
|
359
359
|
- lib/dapp/cli/list.rb
|
360
360
|
- lib/dapp/cli/push.rb
|
361
|
+
- lib/dapp/cli/run.rb
|
361
362
|
- lib/dapp/cli/smartpush.rb
|
362
363
|
- lib/dapp/config/application.rb
|
364
|
+
- lib/dapp/config/artifact.rb
|
363
365
|
- lib/dapp/config/chef.rb
|
364
366
|
- lib/dapp/config/docker.rb
|
365
367
|
- lib/dapp/config/git_artifact.rb
|
366
368
|
- lib/dapp/config/main.rb
|
367
369
|
- lib/dapp/config/shell.rb
|
368
370
|
- lib/dapp/controller.rb
|
369
|
-
- lib/dapp/docker_image.rb
|
370
371
|
- lib/dapp/error/application.rb
|
371
372
|
- lib/dapp/error/base.rb
|
372
373
|
- lib/dapp/error/build.rb
|
@@ -389,7 +390,9 @@ files:
|
|
389
390
|
- lib/dapp/helper/shellout.rb
|
390
391
|
- lib/dapp/helper/streaming.rb
|
391
392
|
- lib/dapp/helper/trivia.rb
|
392
|
-
- lib/dapp/
|
393
|
+
- lib/dapp/image/arguments.rb
|
394
|
+
- lib/dapp/image/docker.rb
|
395
|
+
- lib/dapp/image/stage.rb
|
393
396
|
- lib/dapp/version.rb
|
394
397
|
homepage: https://github.com/flant/dapp
|
395
398
|
licenses:
|
data/lib/dapp/docker_image.rb
DELETED
@@ -1,51 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# DockerImage
|
3
|
-
class DockerImage
|
4
|
-
include Helper::Shellout
|
5
|
-
|
6
|
-
attr_reader :from
|
7
|
-
attr_reader :name
|
8
|
-
|
9
|
-
def initialize(name:, from: nil)
|
10
|
-
@from = from
|
11
|
-
@name = name
|
12
|
-
end
|
13
|
-
|
14
|
-
def id
|
15
|
-
@id || begin
|
16
|
-
unless (output = shellout!("docker images -q --no-trunc=true #{name}").stdout.strip).empty?
|
17
|
-
output
|
18
|
-
end
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
|
-
def untag!
|
23
|
-
raise Error::Build, code: :image_already_untagged, data: { name: name } unless tagged?
|
24
|
-
shellout!("docker rmi #{name}")
|
25
|
-
end
|
26
|
-
|
27
|
-
def push!(log_verbose: false, log_time: false)
|
28
|
-
raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
|
29
|
-
shellout!("docker push #{name}", log_verbose: log_verbose, log_time: log_time)
|
30
|
-
end
|
31
|
-
|
32
|
-
def pull!(log_verbose: false, log_time: false)
|
33
|
-
return if tagged?
|
34
|
-
shellout!("docker pull #{name}", log_verbose: log_verbose, log_time: log_time)
|
35
|
-
@pulled = true
|
36
|
-
end
|
37
|
-
|
38
|
-
def tagged?
|
39
|
-
!!id
|
40
|
-
end
|
41
|
-
|
42
|
-
def pulled?
|
43
|
-
!!@pulled
|
44
|
-
end
|
45
|
-
|
46
|
-
def info
|
47
|
-
raise Error::Build, code: :image_not_exist, data: { name: name } unless tagged?
|
48
|
-
shellout!("docker inspect --format='{{.Created}} {{.Size}}' #{name}").stdout.strip.split
|
49
|
-
end
|
50
|
-
end # DockerImage
|
51
|
-
end # Dapp
|
data/lib/dapp/stage_image.rb
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# StageImage
|
3
|
-
class StageImage < DockerImage
|
4
|
-
def initialize(name:, built_id: nil, from: nil)
|
5
|
-
@bash_commands = []
|
6
|
-
@options = {}
|
7
|
-
@change_options = {}
|
8
|
-
@container_name = SecureRandom.hex
|
9
|
-
@built_id = built_id
|
10
|
-
super(name: name, from: from)
|
11
|
-
end
|
12
|
-
|
13
|
-
def add_change_volume(value)
|
14
|
-
add_change_option(:volume, value)
|
15
|
-
end
|
16
|
-
|
17
|
-
def add_change_expose(value)
|
18
|
-
add_change_option(:expose, value)
|
19
|
-
end
|
20
|
-
|
21
|
-
def add_change_env(value)
|
22
|
-
add_change_option(:env, value)
|
23
|
-
end
|
24
|
-
|
25
|
-
def add_change_label(value)
|
26
|
-
add_change_option(:label, value)
|
27
|
-
end
|
28
|
-
|
29
|
-
def add_change_cmd(value)
|
30
|
-
add_change_option(:cmd, value)
|
31
|
-
end
|
32
|
-
|
33
|
-
def add_change_onbuild(value)
|
34
|
-
add_change_option(:onbuild, value)
|
35
|
-
end
|
36
|
-
|
37
|
-
def add_change_workdir(value)
|
38
|
-
add_change_option(:workdir, value)
|
39
|
-
end
|
40
|
-
|
41
|
-
def add_change_entrypoint(value)
|
42
|
-
add_change_option(:entrypoint, value)
|
43
|
-
end
|
44
|
-
|
45
|
-
def add_change_user(value)
|
46
|
-
add_change_option(:user, value)
|
47
|
-
end
|
48
|
-
|
49
|
-
def add_volume(value)
|
50
|
-
add_option(:volume, value)
|
51
|
-
end
|
52
|
-
|
53
|
-
def add_volumes_from(value)
|
54
|
-
add_option(:'volumes-from', value)
|
55
|
-
end
|
56
|
-
|
57
|
-
def add_commands(*commands)
|
58
|
-
@bash_commands.concat(commands.flatten)
|
59
|
-
end
|
60
|
-
|
61
|
-
def built_id
|
62
|
-
@built_id ||= id
|
63
|
-
end
|
64
|
-
|
65
|
-
def build!(**kvargs)
|
66
|
-
@built_id = if should_be_built?
|
67
|
-
begin
|
68
|
-
run!(**kvargs)
|
69
|
-
commit!
|
70
|
-
ensure
|
71
|
-
shellout("docker rm #{container_name}")
|
72
|
-
end
|
73
|
-
else
|
74
|
-
from.built_id
|
75
|
-
end
|
76
|
-
end
|
77
|
-
|
78
|
-
def export!(name, log_verbose: false, log_time: false, force: false)
|
79
|
-
image = self.class.new(built_id: built_id, name: name)
|
80
|
-
image.tag!(log_verbose: log_verbose, log_time: log_time, force: force)
|
81
|
-
image.push!(log_verbose: log_verbose, log_time: log_time)
|
82
|
-
image.untag!
|
83
|
-
end
|
84
|
-
|
85
|
-
def tag!(log_verbose: false, log_time: false, force: false)
|
86
|
-
if !(existed_id = id).nil? && !force
|
87
|
-
raise Error::Build, code: :another_image_already_tagged if built_id != existed_id
|
88
|
-
return
|
89
|
-
end
|
90
|
-
shellout!("docker tag #{built_id} #{name}", log_verbose: log_verbose, log_time: log_time)
|
91
|
-
end
|
92
|
-
|
93
|
-
protected
|
94
|
-
|
95
|
-
attr_reader :container_name
|
96
|
-
attr_reader :bash_commands
|
97
|
-
attr_reader :options, :change_options
|
98
|
-
|
99
|
-
def add_option(key, value)
|
100
|
-
add_option_default(options, key, value)
|
101
|
-
end
|
102
|
-
|
103
|
-
def add_change_option(key, value)
|
104
|
-
add_option_default(change_options, key, value)
|
105
|
-
end
|
106
|
-
|
107
|
-
def add_option_default(hash, key, value)
|
108
|
-
hash[key] = (hash[key].nil? ? value : (Array(hash[key]) << value).flatten)
|
109
|
-
end
|
110
|
-
|
111
|
-
def run!(log_verbose: false, log_time: false, introspect_error: false, introspect_before_error: false)
|
112
|
-
raise Error::Build, code: :built_id_not_defined if from.built_id.nil?
|
113
|
-
shellout!("docker run #{prepared_options} --name=#{container_name} #{from.built_id} #{prepared_bash_command}",
|
114
|
-
log_verbose: log_verbose, log_time: log_time)
|
115
|
-
rescue Error::Shellout => e
|
116
|
-
raise unless introspect_error || introspect_before_error
|
117
|
-
built_id = introspect_error ? commit! : from.built_id
|
118
|
-
raise Exception::IntrospectImage, message: Dapp::Helper::NetStatus.message(e),
|
119
|
-
data: { built_id: built_id, options: prepared_options, rmi: introspect_error }
|
120
|
-
end
|
121
|
-
|
122
|
-
def commit!
|
123
|
-
shellout!("docker commit #{prepared_change} #{container_name}").stdout.strip
|
124
|
-
end
|
125
|
-
|
126
|
-
def should_be_built?
|
127
|
-
!(bash_commands.empty? && change_options.empty?)
|
128
|
-
end
|
129
|
-
|
130
|
-
def prepared_options
|
131
|
-
prepared_options_default(options) { |k, vals| Array(vals).map { |v| "--#{k}=#{v}" }.join(' ') }
|
132
|
-
end
|
133
|
-
|
134
|
-
def prepared_change
|
135
|
-
prepared_options_default(change_options) do |k, vals|
|
136
|
-
if [:cmd, :entrypoint].include? k
|
137
|
-
%(-c '#{k.to_s.upcase} #{Array(vals)}')
|
138
|
-
else
|
139
|
-
Array(vals).map { |v| %(-c "#{k.to_s.upcase} #{v}") }.join(' ')
|
140
|
-
end
|
141
|
-
end
|
142
|
-
end
|
143
|
-
|
144
|
-
def prepared_options_default(hash)
|
145
|
-
hash.map { |k, vals| yield(k, vals) }.join(' ')
|
146
|
-
end
|
147
|
-
|
148
|
-
def prepared_bash_command
|
149
|
-
if bash_commands.empty?
|
150
|
-
'true'
|
151
|
-
else
|
152
|
-
shellout_pack prepared_commands.join(' && ')
|
153
|
-
end
|
154
|
-
end
|
155
|
-
|
156
|
-
def prepared_commands
|
157
|
-
bash_commands.map { |command| command.gsub(/^[\ |;]*|[\ |;]*$/, '') } # strip [' ', ';']
|
158
|
-
end
|
159
|
-
end # StageImage
|
160
|
-
end # Dapp
|