dapp 0.9.4 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/bin/dapp +9 -1
- data/config/en/net_status.yml +5 -2
- data/lib/dapp.rb +2 -1
- data/lib/dapp/config/base.rb +5 -0
- data/lib/dapp/config/directive/base.rb +5 -4
- data/lib/dapp/dapp.rb +1 -1
- data/lib/dapp/dapp/deps/base.rb +2 -2
- data/lib/dapp/dapp/logging/paint.rb +1 -1
- data/lib/dapp/dapp/logging/process.rb +18 -5
- data/lib/dapp/dimg/build/stage/base.rb +39 -5
- data/lib/dapp/dimg/build/stage/before_setup.rb +2 -0
- data/lib/dapp/dimg/build/stage/build_artifact.rb +2 -0
- data/lib/dapp/dimg/build/stage/from.rb +2 -2
- data/lib/dapp/dimg/build/stage/ga_archive.rb +0 -8
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +4 -10
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +0 -8
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/install/install.rb +1 -0
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +23 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +1 -1
- data/lib/dapp/dimg/build/stage/mod/logging.rb +4 -2
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +0 -4
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +1 -1
- data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -0
- data/lib/dapp/dimg/builder/chef.rb +3 -3
- data/lib/dapp/dimg/config/artifact_group.rb +12 -16
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +22 -20
- data/lib/dapp/dimg/config/dimg/validation.rb +5 -5
- data/lib/dapp/dimg/config/directive/artifact.rb +18 -15
- data/lib/dapp/dimg/config/directive/artifact_base.rb +30 -27
- data/lib/dapp/dimg/config/directive/base.rb +5 -1
- data/lib/dapp/dimg/config/directive/chef.rb +14 -12
- data/lib/dapp/dimg/config/directive/docker/base.rb +7 -6
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +9 -11
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +11 -5
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +10 -14
- data/lib/dapp/dimg/config/directive/mount.rb +10 -6
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +14 -16
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +1 -1
- data/lib/dapp/dimg/dimg.rb +1 -1
- data/lib/dapp/dimg/dimg/stages.rb +5 -1
- data/lib/dapp/dimg/git_artifact.rb +10 -12
- data/lib/dapp/dimg/git_repo/base.rb +2 -0
- data/lib/dapp/dimg/git_repo/own.rb +1 -1
- data/lib/dapp/dimg/image/docker.rb +1 -0
- data/lib/dapp/dimg/image/stage.rb +1 -1
- data/lib/dapp/dimg/lock/file.rb +1 -1
- data/lib/dapp/helper/cli.rb +2 -1
- data/lib/dapp/helper/net_status.rb +13 -3
- data/lib/dapp/version.rb +1 -1
- metadata +17 -3
- data/lib/dapp/dimg/error/shellout.rb +0 -7
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 6ad43a1b900c01b03836a4856a0ea69070bec9a7
|
4
|
+
data.tar.gz: 6b178ca3754198f17e378b3b1ff489bc893e7b41
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 90cbe4a4cbced7f1bc8a5c0140227693740c940b8192664ec1bb85c0220946955402d638d6ea549eab0bdc4f8e19bdeda4058fb94deae3648f91a895c0fe4360
|
7
|
+
data.tar.gz: ccd71154c84ba441339fdfd078edfae8ba2ef41f846017c0a764e2df88f2badcf388d7db1394f5dc666e7ba30665d8fe07bbb400793fe82ecd51e189763187f9
|
data/bin/dapp
CHANGED
@@ -20,7 +20,15 @@ begin
|
|
20
20
|
check_docker_version
|
21
21
|
|
22
22
|
begin
|
23
|
-
|
23
|
+
begin
|
24
|
+
Dapp::CLI.new.run
|
25
|
+
rescue Dapp::Error::Base => e
|
26
|
+
unless (message = Dapp::Helper::NetStatus.before_error_message(e)).empty?
|
27
|
+
$stderr.puts(message)
|
28
|
+
end
|
29
|
+
|
30
|
+
raise
|
31
|
+
end
|
24
32
|
rescue ::SystemExit
|
25
33
|
raise
|
26
34
|
rescue ::Exception => e
|
data/config/en/net_status.yml
CHANGED
@@ -8,7 +8,6 @@ en:
|
|
8
8
|
dimg_not_run: "Dimg run failed!"
|
9
9
|
git_branch_without_name: "Dimg has specific revision that isn't associated with a branch name!"
|
10
10
|
ci_environment_required: 'CI environment required (Travis or GitLab CI)!'
|
11
|
-
chef_stage_checksum_not_calculated: "Chef stage `%{stage}` checksum is not calculated yet, run build first"
|
12
11
|
dappfile:
|
13
12
|
incorrect: "Dappfile with `%{error}`:\n%{message}"
|
14
13
|
build:
|
@@ -34,7 +33,9 @@ en:
|
|
34
33
|
config:
|
35
34
|
dimg_name_required: 'Dimg name required!'
|
36
35
|
dimg_name_incorrect: "Dimg has incorrect name `%{name}`: doesn't match regex `%{reg}`!"
|
36
|
+
mount_from_required: "Mount: `from` directive required!"
|
37
37
|
export_to_required: "Export: `to` directive required!"
|
38
|
+
add_to_required: "Add: `to` directive required!"
|
38
39
|
export_cwd_absolute_path_required: "Export: given cwd path must be absolute!"
|
39
40
|
export_to_absolute_path_required: "Export: given `to` path must be absolute!"
|
40
41
|
export_include_paths_relative_path_required: "Export: given `include_paths` path must be relative!"
|
@@ -45,7 +46,7 @@ en:
|
|
45
46
|
builder_type_conflict: 'Conflict between builder types!'
|
46
47
|
builder_type_unsupported: "Defined unsupported builder type `%{type}`!"
|
47
48
|
docker_from_incorrect: "`docker.from` has incorrect value `%{name}`!"
|
48
|
-
docker_from_without_tag: "`docker.from`: image `%{name}` without !"
|
49
|
+
docker_from_without_tag: "`docker.from`: image `%{name}` without tag!"
|
49
50
|
stage_artifact_not_associated: "Artifact not associated with any stage: expected `before` or `after` attribute!"
|
50
51
|
stage_artifact_double_associate: "Cannot use `%{stage}` stage for artifact, already used in `%{conflict_stage}` stage!"
|
51
52
|
stage_artifact_not_supported_associated_stage: "Bad artifact stage `%{stage}`!"
|
@@ -57,6 +58,7 @@ en:
|
|
57
58
|
scratch_artifact_associated: "Scratch artifact cannot be associated: not expected `before`/`after` attribute!"
|
58
59
|
scratch_artifact_docker_from: "Scratch artifact must have directive `docker.from`!"
|
59
60
|
chef:
|
61
|
+
stage_checksum_not_calculated: "Chef stage `%{stage}` checksum is not calculated yet, run build first"
|
60
62
|
stage_path_overlap: "Cannot install `%{cookbook}` cookbook's path %{from} into %{to}: already exists"
|
61
63
|
builder_cookbook_not_found: "Dapp cookbook directory not found at %{path}"
|
62
64
|
berksfile_absolute_path_forbidden: "Absolute paths in Berksfile are not allowed (cookbook `%{cookbook}`, path: `%{path}`)"
|
@@ -66,6 +68,7 @@ en:
|
|
66
68
|
page_not_found: "Registry `%{registry}`: page `%{url}` not found!"
|
67
69
|
user_not_authorized: 'Registry `%{registry}`: user not authorized!'
|
68
70
|
rugged:
|
71
|
+
git_repository_reference_error: "Git repo `%{name}`: %{message}!"
|
69
72
|
rugged_remote_error: "Remote git repo `%{url}`: `%{message}`!"
|
70
73
|
local_git_repository_does_not_exist: "Local git repo: doesn't exist!"
|
71
74
|
commit_not_found_in_local_git_repository: "Local git repo: commit `%{commit}` not found!\nIf commit has been rebased: run command `dapp dimg stages cleanup local --improper-git-commit`!"
|
data/lib/dapp.rb
CHANGED
@@ -17,6 +17,7 @@ require 'paint'
|
|
17
17
|
require 'inifile'
|
18
18
|
require 'rugged'
|
19
19
|
require 'rubygems/package'
|
20
|
+
require 'murmurhash3'
|
20
21
|
|
21
22
|
require 'net_status'
|
22
23
|
|
@@ -63,6 +64,7 @@ require 'dapp/dimg/builder/shell'
|
|
63
64
|
require 'dapp/dimg/builder/none'
|
64
65
|
require 'dapp/dimg/build/stage/mod/logging'
|
65
66
|
require 'dapp/dimg/build/stage/mod/group'
|
67
|
+
require 'dapp/dimg/build/stage/mod/git_artifact_dependencies'
|
66
68
|
require 'dapp/dimg/build/stage/base'
|
67
69
|
require 'dapp/dimg/build/stage/ga_base'
|
68
70
|
require 'dapp/dimg/build/stage/ga_dependencies_base'
|
@@ -170,7 +172,6 @@ require 'dapp/dimg/error/tar_writer'
|
|
170
172
|
require 'dapp/dimg/error/rugged'
|
171
173
|
require 'dapp/dimg/error/registry'
|
172
174
|
require 'dapp/dimg/error/chef'
|
173
|
-
require 'dapp/dimg/error/shellout'
|
174
175
|
require 'dapp/dimg/error/lock'
|
175
176
|
require 'dapp/dimg/error/config'
|
176
177
|
require 'dapp/dimg/error/command'
|
data/lib/dapp/config/base.rb
CHANGED
@@ -2,14 +2,15 @@ module Dapp
|
|
2
2
|
module Config
|
3
3
|
module Directive
|
4
4
|
class Base < Config::Base
|
5
|
-
protected
|
6
|
-
|
7
5
|
def clone
|
8
6
|
_clone
|
9
7
|
end
|
10
8
|
|
11
|
-
|
12
|
-
|
9
|
+
protected
|
10
|
+
|
11
|
+
def sub_directive_eval
|
12
|
+
yield if block_given?
|
13
|
+
self
|
13
14
|
end
|
14
15
|
|
15
16
|
def path_format(path)
|
data/lib/dapp/dapp.rb
CHANGED
@@ -78,7 +78,7 @@ module Dapp
|
|
78
78
|
|
79
79
|
def local_git_artifact_exclude_paths(&blk)
|
80
80
|
super do |exclude_paths|
|
81
|
-
build_path_relpath = Pathname.new(build_path).subpath_of(
|
81
|
+
build_path_relpath = Pathname.new(build_path).subpath_of(File.dirname(git_path))
|
82
82
|
exclude_paths << build_path_relpath.to_s if build_path_relpath
|
83
83
|
|
84
84
|
yield exclude_paths if block_given?
|
data/lib/dapp/dapp/deps/base.rb
CHANGED
@@ -2,7 +2,7 @@ module Dapp
|
|
2
2
|
class Dapp
|
3
3
|
module Deps
|
4
4
|
module Base
|
5
|
-
BASE_VERSION = '0.1.
|
5
|
+
BASE_VERSION = '0.1.15'.freeze
|
6
6
|
|
7
7
|
def base_container_name # FIXME: hashsum(image) or dockersafe()
|
8
8
|
"dappdeps_base_#{BASE_VERSION}"
|
@@ -24,7 +24,7 @@ module Dapp
|
|
24
24
|
end
|
25
25
|
|
26
26
|
%w(rm rsync diff date cat
|
27
|
-
stat sleep mkdir find
|
27
|
+
stat test sleep mkdir find
|
28
28
|
install sed cp true
|
29
29
|
bash tar sudo).each do |cmd|
|
30
30
|
define_method("#{cmd}_bin") { "/.dapp/deps/base/#{BASE_VERSION}/bin/#{cmd}" }
|
@@ -2,6 +2,7 @@ module Dapp
|
|
2
2
|
class Dapp
|
3
3
|
module Logging
|
4
4
|
module Process
|
5
|
+
DEFAULT_TERMINAL_WIDTH = 120
|
5
6
|
DEFAULT_STYLE = {
|
6
7
|
message: :step,
|
7
8
|
process: :secondary,
|
@@ -25,8 +26,6 @@ module Dapp
|
|
25
26
|
|
26
27
|
# rubocop:disable Metrics/ParameterLists
|
27
28
|
def log_process(message, process: nil, short: false, quiet: false, style: {}, status: {}, &blk)
|
28
|
-
return yield if quiet
|
29
|
-
|
30
29
|
style[:message] ||= DEFAULT_STYLE[:message]
|
31
30
|
style[:process] ||= DEFAULT_STYLE[:process]
|
32
31
|
style[:failed] ||= DEFAULT_STYLE[:failed]
|
@@ -35,7 +34,9 @@ module Dapp
|
|
35
34
|
status[:success] ||= t(code: 'status.success.default')
|
36
35
|
status[:failed] ||= t(code: 'status.failed.default')
|
37
36
|
|
38
|
-
if
|
37
|
+
if quiet
|
38
|
+
log_process_quiet(message.to_s, style: style, status: status, &blk)
|
39
|
+
elsif log_verbose? && !short
|
39
40
|
process ||= t(code: 'status.process.default')
|
40
41
|
log_process_verbose(message.to_s, process: process, style: style, status: status, &blk)
|
41
42
|
else
|
@@ -50,6 +51,15 @@ module Dapp
|
|
50
51
|
|
51
52
|
protected
|
52
53
|
|
54
|
+
def log_process_quiet(message, style: {}, status: {})
|
55
|
+
yield
|
56
|
+
rescue Error::Base => e
|
57
|
+
info = paint_string(slice(message), style[:message])
|
58
|
+
failed_message = paint_string(rjust(status[:failed], info), style[:failed])
|
59
|
+
before_error_messages = [log_indent + info + failed_message, e.net_status[:data][:before_error_messages]].flatten
|
60
|
+
raise e.class, **e.net_status.merge(data: e.net_status[:data].merge(before_error_messages: before_error_messages))
|
61
|
+
end
|
62
|
+
|
53
63
|
def log_process_verbose(message, process:, style: {}, status: {}, &blk)
|
54
64
|
process = paint_string(rjust(process, message), style[:process])
|
55
65
|
info = paint_string(message, style[:message]) + process
|
@@ -71,7 +81,7 @@ module Dapp
|
|
71
81
|
message = success_message
|
72
82
|
start = Time.now
|
73
83
|
yield
|
74
|
-
rescue
|
84
|
+
rescue Error::Base, SignalException, StandardError => _e
|
75
85
|
message = failed_message
|
76
86
|
raise
|
77
87
|
ensure
|
@@ -100,7 +110,10 @@ module Dapp
|
|
100
110
|
end
|
101
111
|
|
102
112
|
def terminal_width
|
103
|
-
@terminal_width ||=
|
113
|
+
@terminal_width ||= begin
|
114
|
+
tputs_cols = `tput cols`.strip.to_i
|
115
|
+
(tputs_cols == 0) ? DEFAULT_TERMINAL_WIDTH : tputs_cols
|
116
|
+
end
|
104
117
|
end
|
105
118
|
end
|
106
119
|
end # Logging
|
@@ -22,14 +22,14 @@ module Dapp
|
|
22
22
|
return yield if dimg.dapp.dry_run?
|
23
23
|
|
24
24
|
try_lock = proc do
|
25
|
-
next yield unless
|
25
|
+
next yield unless image_should_be_locked?
|
26
26
|
|
27
27
|
no_lock = false
|
28
28
|
|
29
29
|
dimg.dapp.lock("#{dimg.dapp.name}.image.#{image.name}") do
|
30
30
|
image.cache_reset
|
31
31
|
|
32
|
-
if
|
32
|
+
if image_should_be_locked?
|
33
33
|
yield
|
34
34
|
else
|
35
35
|
no_lock = true
|
@@ -52,7 +52,7 @@ module Dapp
|
|
52
52
|
return if build_should_be_skipped?
|
53
53
|
prev_stage.build! if prev_stage
|
54
54
|
if image_should_be_build?
|
55
|
-
prepare_image if !image.built? && !should_be_not_present?
|
55
|
+
prepare_image if !image.built? && !should_be_not_present? || should_be_introspected?
|
56
56
|
log_image_build(&method(:image_build))
|
57
57
|
end
|
58
58
|
dimg.introspect_image!(image: image.built_id, options: image.send(:prepared_options)) if should_be_introspected?
|
@@ -156,7 +156,19 @@ module Dapp
|
|
156
156
|
end
|
157
157
|
|
158
158
|
def git_artifacts_dependencies
|
159
|
-
|
159
|
+
local_git_artifacts_dependencies + remote_git_artifacts_dependencies
|
160
|
+
end
|
161
|
+
|
162
|
+
def local_git_artifacts_dependencies
|
163
|
+
default_git_artifacts_dependencies(dimg.local_git_artifacts)
|
164
|
+
end
|
165
|
+
|
166
|
+
def remote_git_artifacts_dependencies
|
167
|
+
default_git_artifacts_dependencies(dimg.remote_git_artifacts)
|
168
|
+
end
|
169
|
+
|
170
|
+
def default_git_artifacts_dependencies(git_artifacts)
|
171
|
+
git_artifacts.map { |git_artifact| git_artifact.stage_dependencies_checksums(self) }
|
160
172
|
end
|
161
173
|
|
162
174
|
def dependencies
|
@@ -167,6 +179,24 @@ module Dapp
|
|
167
179
|
false
|
168
180
|
end
|
169
181
|
|
182
|
+
def g_a_stage?
|
183
|
+
false
|
184
|
+
end
|
185
|
+
|
186
|
+
def prev_g_a_stage
|
187
|
+
stage = self
|
188
|
+
until (stage = stage.prev_stage).nil?
|
189
|
+
return stage if stage.g_a_stage?
|
190
|
+
end
|
191
|
+
end
|
192
|
+
|
193
|
+
def next_g_a_stage
|
194
|
+
stage = self
|
195
|
+
until (stage = stage.next_stage).nil?
|
196
|
+
return stage if stage.g_a_stage?
|
197
|
+
end
|
198
|
+
end
|
199
|
+
|
170
200
|
protected
|
171
201
|
|
172
202
|
def image_build
|
@@ -178,7 +208,11 @@ module Dapp
|
|
178
208
|
end
|
179
209
|
|
180
210
|
def should_be_tagged?
|
181
|
-
|
211
|
+
image.built? && !image.tagged?
|
212
|
+
end
|
213
|
+
|
214
|
+
def image_should_be_locked?
|
215
|
+
!(empty? || image.tagged? || should_be_not_present?)
|
182
216
|
end
|
183
217
|
|
184
218
|
def should_be_not_present?
|
@@ -3,16 +3,6 @@ module Dapp
|
|
3
3
|
module Build
|
4
4
|
module Stage
|
5
5
|
class GABase < Base
|
6
|
-
attr_accessor :prev_g_a_stage, :next_g_a_stage
|
7
|
-
|
8
|
-
def prev_g_a_stage
|
9
|
-
dependencies_stage.prev_stage.prev_stage
|
10
|
-
end
|
11
|
-
|
12
|
-
def next_g_a_stage
|
13
|
-
next_stage.next_stage.next_stage
|
14
|
-
end
|
15
|
-
|
16
6
|
def dependencies_stage
|
17
7
|
prev_stage
|
18
8
|
end
|
@@ -44,6 +34,10 @@ module Dapp
|
|
44
34
|
dependencies_stage.empty?
|
45
35
|
end
|
46
36
|
|
37
|
+
def g_a_stage?
|
38
|
+
true
|
39
|
+
end
|
40
|
+
|
47
41
|
def layer_commit(git_artifact)
|
48
42
|
commits[git_artifact] ||= begin
|
49
43
|
if dependencies_stage && dependencies_stage.image.tagged?
|