dapp 0.9.4 → 0.10.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 +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?
|