dapp 0.6.17 → 0.7.1
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/config/en/common.yml +2 -2
- data/config/en/net_status.yml +25 -23
- data/lib/dapp.rb +24 -16
- data/lib/dapp/artifact.rb +1 -1
- data/lib/dapp/build/stage/after_install_artifact.rb +2 -2
- data/lib/dapp/build/stage/after_setup_artifact.rb +4 -4
- data/lib/dapp/build/stage/artifact_base.rb +25 -25
- data/lib/dapp/build/stage/artifact_default.rb +16 -16
- data/lib/dapp/build/stage/base.rb +36 -31
- data/lib/dapp/build/stage/before_install.rb +8 -8
- data/lib/dapp/build/stage/before_install_artifact.rb +2 -2
- data/lib/dapp/build/stage/before_setup.rb +8 -8
- data/lib/dapp/build/stage/before_setup_artifact.rb +2 -2
- data/lib/dapp/build/stage/build_artifact.rb +10 -10
- data/lib/dapp/build/stage/docker_instructions.rb +3 -3
- data/lib/dapp/build/stage/from.rb +7 -3
- data/lib/dapp/build/stage/ga_archive.rb +2 -2
- data/lib/dapp/build/stage/ga_archive_dependencies.rb +3 -3
- data/lib/dapp/build/stage/ga_artifact_patch.rb +2 -2
- data/lib/dapp/build/stage/ga_base.rb +2 -2
- data/lib/dapp/build/stage/ga_dependencies_base.rb +2 -2
- data/lib/dapp/build/stage/ga_latest_patch.rb +3 -3
- data/lib/dapp/build/stage/import_artifact.rb +19 -19
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +2 -2
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +2 -2
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +2 -2
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +2 -2
- data/lib/dapp/build/stage/install/install.rb +9 -9
- data/lib/dapp/build/stage/mod/group.rb +2 -2
- data/lib/dapp/build/stage/mod/logging.rb +19 -19
- data/lib/dapp/build/stage/setup/chef_cookbooks.rb +4 -4
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +2 -2
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +3 -3
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +2 -2
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +2 -2
- data/lib/dapp/build/stage/setup/setup.rb +9 -9
- data/lib/dapp/builder/base.rb +4 -4
- data/lib/dapp/builder/chef.rb +65 -64
- data/lib/dapp/builder/none.rb +45 -0
- data/lib/dapp/builder/shell.rb +3 -3
- data/lib/dapp/cli.rb +9 -10
- data/lib/dapp/cli/base.rb +6 -1
- data/lib/dapp/cli/bp.rb +2 -2
- data/lib/dapp/cli/build.rb +2 -2
- data/lib/dapp/cli/cleanup.rb +2 -2
- data/lib/dapp/cli/list.rb +2 -2
- data/lib/dapp/cli/mrproper.rb +0 -4
- data/lib/dapp/cli/push.rb +3 -3
- data/lib/dapp/cli/run.rb +3 -3
- data/lib/dapp/cli/spush.rb +2 -2
- data/lib/dapp/cli/stage_image.rb +2 -2
- data/lib/dapp/cli/stages/cleanup_local.rb +3 -3
- data/lib/dapp/cli/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/cli/stages/flush_local.rb +3 -3
- data/lib/dapp/cli/stages/flush_repo.rb +3 -3
- data/lib/dapp/cli/stages/pull.rb +3 -3
- data/lib/dapp/cli/stages/push.rb +3 -3
- data/lib/dapp/config/artifact_dimg.rb +18 -0
- data/lib/dapp/config/artifact_group.rb +54 -0
- data/lib/dapp/config/base.rb +19 -0
- data/lib/dapp/config/dimg.rb +23 -0
- data/lib/dapp/config/dimg/instance_methods.rb +179 -0
- data/lib/dapp/config/dimg/validation.rb +124 -0
- data/lib/dapp/config/dimg_group.rb +56 -0
- data/lib/dapp/config/dimg_group_base.rb +36 -0
- data/lib/dapp/config/dimg_group_main.rb +21 -0
- data/lib/dapp/config/directive/artifact.rb +29 -54
- data/lib/dapp/config/directive/artifact_base.rb +92 -0
- data/lib/dapp/config/directive/base.rb +22 -0
- data/lib/dapp/config/directive/chef.rb +23 -61
- data/lib/dapp/config/directive/docker/artifact.rb +3 -14
- data/lib/dapp/config/directive/docker/base.rb +3 -78
- data/lib/dapp/config/directive/docker/dimg.rb +81 -0
- data/lib/dapp/config/directive/git_artifact_local.rb +13 -0
- data/lib/dapp/config/directive/git_artifact_remote.rb +55 -0
- data/lib/dapp/config/directive/mount.rb +25 -0
- data/lib/dapp/config/directive/shell/artifact.rb +3 -24
- data/lib/dapp/config/directive/shell/dimg.rb +68 -0
- data/lib/dapp/{application.rb → dimg.rb} +12 -33
- data/lib/dapp/{application → dimg}/git_artifact.rb +3 -3
- data/lib/dapp/{application → dimg}/path.rb +9 -5
- data/lib/dapp/{application → dimg}/stages.rb +8 -8
- data/lib/dapp/{application → dimg}/tags.rb +6 -6
- data/lib/dapp/docker_registry.rb +11 -15
- data/lib/dapp/error/dimg.rb +6 -0
- data/lib/dapp/git_artifact.rb +19 -20
- data/lib/dapp/git_repo/base.rb +6 -6
- data/lib/dapp/git_repo/own.rb +4 -4
- data/lib/dapp/git_repo/remote.rb +5 -5
- data/lib/dapp/image/docker.rb +0 -15
- data/lib/dapp/image/stage.rb +12 -22
- data/lib/dapp/project.rb +14 -18
- data/lib/dapp/project/command/build.rb +2 -2
- data/lib/dapp/project/command/cleanup.rb +9 -11
- data/lib/dapp/project/command/common.rb +8 -20
- data/lib/dapp/project/command/list.rb +7 -1
- data/lib/dapp/project/command/mrproper.rb +12 -22
- data/lib/dapp/project/command/push.rb +3 -4
- data/lib/dapp/project/command/run.rb +2 -2
- data/lib/dapp/project/command/spush.rb +3 -4
- data/lib/dapp/project/command/stage_image.rb +2 -2
- data/lib/dapp/project/command/stages/cleanup_local.rb +20 -24
- data/lib/dapp/project/command/stages/cleanup_repo.rb +3 -3
- data/lib/dapp/project/command/stages/common.rb +2 -3
- data/lib/dapp/project/command/stages/flush_local.rb +5 -7
- data/lib/dapp/project/command/stages/flush_repo.rb +2 -2
- data/lib/dapp/project/command/stages/pull.rb +3 -4
- data/lib/dapp/project/command/stages/push.rb +3 -4
- data/lib/dapp/project/dappfile.rb +9 -26
- data/lib/dapp/project/logging/base.rb +14 -0
- data/lib/dapp/project/logging/process.rb +1 -1
- data/lib/dapp/project/shellout/system.rb +2 -4
- data/lib/dapp/version.rb +1 -1
- metadata +25 -17
- data/lib/dapp/cli/tag.rb +0 -24
- data/lib/dapp/config/application.rb +0 -288
- data/lib/dapp/config/artifact.rb +0 -20
- data/lib/dapp/config/directive/build_dir.rb +0 -9
- data/lib/dapp/config/directive/git_artifact.rb +0 -59
- data/lib/dapp/config/directive/shell/base.rb +0 -85
- data/lib/dapp/config/directive/tmp_dir.rb +0 -36
- data/lib/dapp/config/main.rb +0 -20
- data/lib/dapp/error/application.rb +0 -6
- data/lib/dapp/project/command/tag.rb +0 -18
@@ -9,7 +9,7 @@ module Dapp
|
|
9
9
|
if empty? then log_state(:empty)
|
10
10
|
elsif image.tagged? then log_state(:using_cache)
|
11
11
|
elsif should_be_not_present? then log_state(:not_present)
|
12
|
-
elsif
|
12
|
+
elsif dimg.project.dry_run? then log_state(:build, styles: { status: :success })
|
13
13
|
else log_image_build_process(&image_build)
|
14
14
|
end
|
15
15
|
ensure
|
@@ -17,10 +17,10 @@ module Dapp
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def log_build
|
20
|
-
|
21
|
-
|
20
|
+
dimg.project.with_log_indent do
|
21
|
+
dimg.project.log_info dimg.project.t(code: 'image.signature', data: { signature: image_name })
|
22
22
|
log_image_details unless empty?
|
23
|
-
end if
|
23
|
+
end if dimg.project.log_verbose? && !should_be_quiet?
|
24
24
|
end
|
25
25
|
|
26
26
|
def log_image_details
|
@@ -34,13 +34,13 @@ module Dapp
|
|
34
34
|
|
35
35
|
def log_image_instructions
|
36
36
|
return if (instructions = image.prepare_instructions(image.send(:change_options))).empty?
|
37
|
-
|
38
|
-
|
37
|
+
dimg.project.log_info dimg.project.t(code: 'image.instructions')
|
38
|
+
dimg.project.with_log_indent { dimg.project.log_info instructions.join("\n") }
|
39
39
|
end
|
40
40
|
|
41
41
|
def log_image_created_at
|
42
|
-
|
43
|
-
|
42
|
+
dimg.project.log_info dimg.project.t(code: 'image.info.created_at',
|
43
|
+
data: { value: Time.parse(image.created_at).localtime })
|
44
44
|
end
|
45
45
|
|
46
46
|
def log_image_size
|
@@ -51,17 +51,17 @@ module Dapp
|
|
51
51
|
size = image.size
|
52
52
|
code = 'image.info.size'
|
53
53
|
end
|
54
|
-
|
54
|
+
dimg.project.log_info dimg.project.t(code: code, data: { value: size.to_f.round(2) })
|
55
55
|
end
|
56
56
|
|
57
57
|
def log_image_commands
|
58
58
|
return if (bash_commands = image.send(:bash_commands)).empty?
|
59
|
-
|
60
|
-
|
59
|
+
dimg.project.log_info dimg.project.t(code: 'image.commands')
|
60
|
+
dimg.project.with_log_indent { dimg.project.log_info bash_commands.join("\n") }
|
61
61
|
end
|
62
62
|
|
63
63
|
def log_name
|
64
|
-
|
64
|
+
dimg.project.t(code: name, context: log_name_context)
|
65
65
|
end
|
66
66
|
|
67
67
|
def log_name_context
|
@@ -69,15 +69,15 @@ module Dapp
|
|
69
69
|
end
|
70
70
|
|
71
71
|
def log_state(state_code, styles: {})
|
72
|
-
|
73
|
-
|
74
|
-
|
72
|
+
dimg.project.log_state(log_name,
|
73
|
+
state: dimg.project.t(code: state_code, context: 'state'),
|
74
|
+
styles: styles) unless should_be_quiet?
|
75
75
|
end
|
76
76
|
|
77
77
|
def log_image_build_process
|
78
78
|
return yield if should_be_quiet?
|
79
|
-
|
80
|
-
|
79
|
+
dimg.project.log_process(log_name, process: dimg.project.t(code: 'status.process.building'),
|
80
|
+
short: should_not_be_detailed?) do
|
81
81
|
yield
|
82
82
|
end
|
83
83
|
end
|
@@ -91,11 +91,11 @@ module Dapp
|
|
91
91
|
end
|
92
92
|
|
93
93
|
def should_be_introspected?
|
94
|
-
|
94
|
+
dimg.project.cli_options[:introspect_stage] == name && !dimg.project.dry_run? && !dimg.artifact?
|
95
95
|
end
|
96
96
|
|
97
97
|
def should_be_quiet?
|
98
|
-
|
98
|
+
dimg.artifact? && !dimg.project.log_verbose?
|
99
99
|
end
|
100
100
|
end
|
101
101
|
end # Mod
|
@@ -6,18 +6,18 @@ module Dapp
|
|
6
6
|
class ChefCookbooks < Base
|
7
7
|
include Mod::Group
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@prev_stage = Setup.new(
|
9
|
+
def initialize(dimg, next_stage)
|
10
|
+
@prev_stage = Setup.new(dimg, self)
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
14
14
|
def dependencies
|
15
|
-
[
|
15
|
+
[dimg.builder.chef_cookbooks_checksum]
|
16
16
|
end
|
17
17
|
|
18
18
|
def prepare_image
|
19
19
|
super
|
20
|
-
|
20
|
+
dimg.builder.chef_cookbooks(image)
|
21
21
|
end
|
22
22
|
|
23
23
|
protected
|
@@ -6,8 +6,8 @@ module Dapp
|
|
6
6
|
class GAPostSetupPatch < GABase
|
7
7
|
include Mod::Group
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@prev_stage = GAPostSetupPatchDependencies.new(
|
9
|
+
def initialize(dimg, next_stage)
|
10
|
+
@prev_stage = GAPostSetupPatchDependencies.new(dimg, self)
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
@@ -8,8 +8,8 @@ module Dapp
|
|
8
8
|
|
9
9
|
MAX_PATCH_SIZE = 1024 * 1024
|
10
10
|
|
11
|
-
def initialize(
|
12
|
-
@prev_stage = ChefCookbooks.new(
|
11
|
+
def initialize(dimg, next_stage)
|
12
|
+
@prev_stage = ChefCookbooks.new(dimg, self)
|
13
13
|
super
|
14
14
|
end
|
15
15
|
|
@@ -20,7 +20,7 @@ module Dapp
|
|
20
20
|
private
|
21
21
|
|
22
22
|
def changes_size_since_g_a_pre_setup_patch
|
23
|
-
|
23
|
+
dimg.git_artifacts.map do |git_artifact|
|
24
24
|
git_artifact.patch_size(prev_stage.prev_stage.prev_stage.layer_commit(git_artifact), git_artifact.latest_commit)
|
25
25
|
end.reduce(0, :+)
|
26
26
|
end
|
@@ -6,8 +6,8 @@ module Dapp
|
|
6
6
|
class GAPreSetupPatch < GABase
|
7
7
|
include Mod::Group
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@prev_stage = GAPreSetupPatchDependencies.new(
|
9
|
+
def initialize(dimg, next_stage)
|
10
|
+
@prev_stage = GAPreSetupPatchDependencies.new(dimg, self)
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
@@ -6,8 +6,8 @@ module Dapp
|
|
6
6
|
class GAPreSetupPatchDependencies < GADependenciesBase
|
7
7
|
include Mod::Group
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@prev_stage = BeforeSetupArtifact.new(
|
9
|
+
def initialize(dimg, next_stage)
|
10
|
+
@prev_stage = BeforeSetupArtifact.new(dimg, self)
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
@@ -6,32 +6,32 @@ module Dapp
|
|
6
6
|
class Setup < Base
|
7
7
|
include Mod::Group
|
8
8
|
|
9
|
-
def initialize(
|
10
|
-
@prev_stage = GAPreSetupPatch.new(
|
9
|
+
def initialize(dimg, next_stage)
|
10
|
+
@prev_stage = GAPreSetupPatch.new(dimg, self)
|
11
11
|
super
|
12
12
|
end
|
13
13
|
|
14
14
|
def empty?
|
15
|
-
!
|
16
|
-
end
|
17
|
-
|
18
|
-
def builder_checksum
|
19
|
-
application.builder.setup_checksum
|
15
|
+
!dimg.builder.setup?
|
20
16
|
end
|
21
17
|
|
22
18
|
def context
|
23
19
|
[setup_dependencies_files_checksum, builder_checksum]
|
24
20
|
end
|
25
21
|
|
22
|
+
def builder_checksum
|
23
|
+
dimg.builder.setup_checksum
|
24
|
+
end
|
25
|
+
|
26
26
|
def prepare_image
|
27
27
|
super
|
28
|
-
|
28
|
+
dimg.builder.setup(image)
|
29
29
|
end
|
30
30
|
|
31
31
|
private
|
32
32
|
|
33
33
|
def setup_dependencies_files_checksum
|
34
|
-
@setup_files_checksum ||= dependencies_files_checksum(
|
34
|
+
@setup_files_checksum ||= dependencies_files_checksum(dimg.config._setup_dependencies)
|
35
35
|
end
|
36
36
|
end # Setup
|
37
37
|
end
|
data/lib/dapp/builder/base.rb
CHANGED
@@ -2,13 +2,13 @@ module Dapp
|
|
2
2
|
module Builder
|
3
3
|
# Base
|
4
4
|
class Base
|
5
|
-
attr_reader :
|
5
|
+
attr_reader :dimg
|
6
6
|
|
7
|
-
def initialize(
|
8
|
-
@
|
7
|
+
def initialize(dimg)
|
8
|
+
@dimg = dimg
|
9
9
|
end
|
10
10
|
|
11
|
-
def
|
11
|
+
def before_dimg_should_be_built_check
|
12
12
|
end
|
13
13
|
|
14
14
|
def before_install?
|
data/lib/dapp/builder/chef.rb
CHANGED
@@ -13,9 +13,9 @@ module Dapp
|
|
13
13
|
|
14
14
|
%i(before_install install before_setup setup build_artifact).each do |stage|
|
15
15
|
define_method("#{stage}_checksum") do
|
16
|
-
|
17
|
-
|
18
|
-
|
16
|
+
dimg.hashsum [stage_cookbooks_checksum(stage),
|
17
|
+
stage_attributes_raw(stage),
|
18
|
+
*stage_cookbooks_runlist(stage)]
|
19
19
|
end
|
20
20
|
|
21
21
|
define_method("#{stage}?") { !stage_empty?(stage) }
|
@@ -38,21 +38,21 @@ module Dapp
|
|
38
38
|
end
|
39
39
|
|
40
40
|
def chef_cookbooks(image)
|
41
|
-
image.add_volume "#{cookbooks_vendor_path(chef_cookbooks_stage: true)}:#{
|
41
|
+
image.add_volume "#{cookbooks_vendor_path(chef_cookbooks_stage: true)}:#{dimg.container_dapp_path('chef_cookbooks')}"
|
42
42
|
image.add_command(
|
43
|
-
"#{
|
44
|
-
["#{
|
43
|
+
"#{dimg.project.mkdir_path} -p /usr/share/dapp/chef_repo",
|
44
|
+
["#{dimg.project.cp_path} -a #{dimg.container_dapp_path('chef_cookbooks')} ",
|
45
45
|
'/usr/share/dapp/chef_repo/cookbooks'].join
|
46
46
|
)
|
47
47
|
end
|
48
48
|
|
49
|
-
def
|
49
|
+
def before_dimg_should_be_built_check
|
50
50
|
super
|
51
51
|
|
52
52
|
%i(before_install install before_setup setup chef_cookbooks).each do |stage|
|
53
|
-
unless stage_empty?(stage)
|
54
|
-
raise ::Dapp::Error::
|
55
|
-
|
53
|
+
unless stage_empty?(stage) || stage_cookbooks_checksum_path(stage).exist?
|
54
|
+
raise ::Dapp::Error::Dimg, code: :chef_stage_checksum_not_calculated,
|
55
|
+
data: { stage: stage }
|
56
56
|
end
|
57
57
|
end
|
58
58
|
end
|
@@ -60,15 +60,15 @@ module Dapp
|
|
60
60
|
private
|
61
61
|
|
62
62
|
def enabled_modules
|
63
|
-
|
63
|
+
dimg.config._chef._module
|
64
64
|
end
|
65
65
|
|
66
66
|
def enabled_recipes
|
67
|
-
|
67
|
+
dimg.config._chef._recipe
|
68
68
|
end
|
69
69
|
|
70
70
|
def stage_attributes(stage)
|
71
|
-
|
71
|
+
dimg.config._chef.send("__#{stage}_attributes")
|
72
72
|
end
|
73
73
|
|
74
74
|
def stage_attributes_raw(stage)
|
@@ -80,19 +80,19 @@ module Dapp
|
|
80
80
|
end
|
81
81
|
|
82
82
|
def berksfile_path
|
83
|
-
|
83
|
+
dimg.chef_path('Berksfile')
|
84
84
|
end
|
85
85
|
|
86
86
|
def berksfile_lock_path
|
87
|
-
|
87
|
+
dimg.chef_path('Berksfile.lock')
|
88
88
|
end
|
89
89
|
|
90
90
|
def berksfile
|
91
|
-
@berksfile ||= Berksfile.new(
|
91
|
+
@berksfile ||= Berksfile.new(dimg.chef_path, berksfile_path)
|
92
92
|
end
|
93
93
|
|
94
94
|
def cookbook_metadata_path
|
95
|
-
|
95
|
+
dimg.chef_path('metadata.rb')
|
96
96
|
end
|
97
97
|
|
98
98
|
def cookbook_metadata
|
@@ -105,11 +105,11 @@ module Dapp
|
|
105
105
|
end
|
106
106
|
|
107
107
|
def berksfile_lock_checksum
|
108
|
-
|
108
|
+
dimg.hashsum(berksfile_lock_path.read) if berksfile_lock_path.exist?
|
109
109
|
end
|
110
110
|
|
111
111
|
def stage_cookbooks_checksum_path(stage)
|
112
|
-
|
112
|
+
dimg.build_path.join("#{cookbooks_checksum}.#{stage}.checksum")
|
113
113
|
end
|
114
114
|
|
115
115
|
def stage_cookbooks_checksum(stage)
|
@@ -119,15 +119,15 @@ module Dapp
|
|
119
119
|
checksum = if stage == :chef_cookbooks
|
120
120
|
paths = Dir[cookbooks_vendor_path('**/*', chef_cookbooks_stage: true)].map(&Pathname.method(:new))
|
121
121
|
|
122
|
-
|
123
|
-
|
122
|
+
dimg.hashsum [
|
123
|
+
dimg.paths_content_hashsum(paths),
|
124
124
|
*paths.map { |p| p.relative_path_from(cookbooks_vendor_path(chef_cookbooks_stage: true)).to_s }.sort
|
125
125
|
]
|
126
126
|
else
|
127
127
|
paths = Dir[stage_cookbooks_path(stage, '**/*')].map(&Pathname.method(:new))
|
128
128
|
|
129
|
-
|
130
|
-
|
129
|
+
dimg.hashsum [
|
130
|
+
dimg.paths_content_hashsum(paths),
|
131
131
|
*paths.map { |p| p.relative_path_from(stage_cookbooks_path(stage)).to_s }.sort,
|
132
132
|
stage == :before_install ? chefdk_image : nil
|
133
133
|
].compact
|
@@ -153,10 +153,10 @@ module Dapp
|
|
153
153
|
.flatten
|
154
154
|
.map(&Pathname.method(:new))
|
155
155
|
|
156
|
-
|
157
|
-
|
156
|
+
dimg.hashsum [
|
157
|
+
dimg.paths_content_hashsum(paths),
|
158
158
|
*paths.map { |p| p.relative_path_from(berksfile.home_path).to_s }.sort,
|
159
|
-
(berksfile_lock_checksum unless
|
159
|
+
(berksfile_lock_checksum unless dimg.project.dev_mode?),
|
160
160
|
*enabled_recipes,
|
161
161
|
*enabled_modules
|
162
162
|
].compact
|
@@ -173,9 +173,9 @@ module Dapp
|
|
173
173
|
|
174
174
|
def chefdk_container
|
175
175
|
@chefdk_container ||= begin
|
176
|
-
if
|
177
|
-
|
178
|
-
|
176
|
+
if dimg.project.shellout("docker inspect #{chefdk_container_name}").exitstatus.nonzero?
|
177
|
+
dimg.project.log_secondary_process(dimg.project.t(code: 'process.chefdk_container_loading'), short: true) do
|
178
|
+
dimg.project.shellout!(
|
179
179
|
['docker create',
|
180
180
|
"--name #{chefdk_container_name}",
|
181
181
|
"--volume /.dapp/deps/chefdk #{chefdk_image}"].join(' ')
|
@@ -189,18 +189,18 @@ module Dapp
|
|
189
189
|
|
190
190
|
# rubocop:disable Metrics/MethodLength, Metrics/AbcSize
|
191
191
|
def install_cookbooks(dest_path, chef_cookbooks_stage: false)
|
192
|
-
volumes_from = [
|
192
|
+
volumes_from = [dimg.project.base_container, chefdk_container]
|
193
193
|
process_code = [
|
194
194
|
'process',
|
195
195
|
chef_cookbooks_stage ? 'chef_cookbooks_stage_berks_vendor' : 'berks_vendor'
|
196
196
|
].compact.join('.')
|
197
197
|
|
198
|
-
|
198
|
+
dimg.project.log_secondary_process(dimg.project.t(code: process_code)) do
|
199
199
|
before_vendor_commands = [].tap do |commands|
|
200
|
-
unless
|
200
|
+
unless dimg.project.dev_mode? || chef_cookbooks_stage
|
201
201
|
commands.push(
|
202
202
|
['if [ ! -f Berksfile.lock ] ; then ',
|
203
|
-
|
203
|
+
'echo "Berksfile.lock not found" 1>&2 ; ',
|
204
204
|
'exit 1 ; ',
|
205
205
|
'fi'].join
|
206
206
|
)
|
@@ -208,15 +208,15 @@ module Dapp
|
|
208
208
|
end
|
209
209
|
|
210
210
|
after_vendor_commands = [].tap do |commands|
|
211
|
-
if
|
211
|
+
if dimg.project.dev_mode?
|
212
212
|
commands.push(
|
213
|
-
["#{
|
214
|
-
"--mode $(#{
|
213
|
+
["#{dimg.project.install_path} -o #{Process.uid} -g #{Process.gid} ",
|
214
|
+
"--mode $(#{dimg.project.stat_path} -c %a Berksfile.lock) ",
|
215
215
|
"Berksfile.lock #{berksfile_lock_path}"].join
|
216
216
|
)
|
217
217
|
elsif !chef_cookbooks_stage
|
218
218
|
commands.push(
|
219
|
-
"export LOCKDIFF=$(#{
|
219
|
+
"export LOCKDIFF=$(#{dimg.project.diff_path} -u1 Berksfile.lock #{berksfile_lock_path})",
|
220
220
|
['if [ "$LOCKDIFF" != "" ] ; then ',
|
221
221
|
"echo -e \"Bad Berksfile.lock\n$LOCKDIFF\" 1>&2 ; ",
|
222
222
|
'exit 1 ; ',
|
@@ -226,14 +226,15 @@ module Dapp
|
|
226
226
|
end
|
227
227
|
|
228
228
|
vendor_commands = [
|
229
|
-
"#{
|
229
|
+
"#{dimg.project.mkdir_path} -p ~/.ssh",
|
230
230
|
"echo \"Host *\" >> ~/.ssh/config",
|
231
231
|
"echo \" StrictHostKeyChecking no\" >> ~/.ssh/config",
|
232
232
|
*berksfile
|
233
233
|
.local_cookbooks
|
234
234
|
.values
|
235
235
|
.map {|cookbook|
|
236
|
-
["#{
|
236
|
+
["#{dimg.project.rsync_path} --archive",
|
237
|
+
*cookbook[:chefignore].map {|path| "--exclude #{path}"},
|
237
238
|
"--relative #{cookbook[:path]} /tmp/local_cookbooks",
|
238
239
|
].join(' ')
|
239
240
|
},
|
@@ -241,34 +242,34 @@ module Dapp
|
|
241
242
|
*before_vendor_commands,
|
242
243
|
'/.dapp/deps/chefdk/bin/berks vendor /tmp/cookbooks',
|
243
244
|
*after_vendor_commands,
|
244
|
-
["#{
|
245
|
-
"#{
|
246
|
-
"#{dest_path}/$(echo {} | #{
|
247
|
-
["#{
|
248
|
-
"#{
|
249
|
-
"#{dest_path}/$(echo {} | #{
|
250
|
-
"#{
|
245
|
+
["#{dimg.project.find_path} /tmp/cookbooks -type d -exec #{dimg.project.bash_path} -ec '",
|
246
|
+
"#{dimg.project.install_path} -o #{Process.uid} -g #{Process.gid} --mode $(#{dimg.project.stat_path} -c %a {}) -d ",
|
247
|
+
"#{dest_path}/$(echo {} | #{dimg.project.sed_path} -e \"s/^\\/tmp\\/cookbooks//\")' \\;"].join,
|
248
|
+
["#{dimg.project.find_path} /tmp/cookbooks -type f -exec #{dimg.project.bash_path} -ec '",
|
249
|
+
"#{dimg.project.install_path} -o #{Process.uid} -g #{Process.gid} --mode $(#{dimg.project.stat_path} -c %a {}) {} ",
|
250
|
+
"#{dest_path}/$(echo {} | #{dimg.project.sed_path} -e \"s/\\/tmp\\/cookbooks//\")' \\;"].join,
|
251
|
+
"#{dimg.project.install_path} -o #{Process.uid} -g #{Process.gid} --mode 0644 <(#{dimg.project.date_path} +%s.%N) #{dest_path.join('.created_at')}"
|
251
252
|
]
|
252
253
|
|
253
|
-
|
254
|
+
dimg.project.shellout!(
|
254
255
|
['docker run --rm',
|
255
256
|
volumes_from.map { |container| "--volumes-from #{container}" }.join(' '),
|
256
257
|
*berksfile.local_cookbooks
|
257
258
|
.values
|
258
259
|
.map { |cookbook| "--volume #{cookbook[:path]}:#{cookbook[:path]}" },
|
259
|
-
("--volume #{
|
260
|
+
("--volume #{dimg.project.ssh_auth_sock}:/tmp/dapp-ssh-agent" if dimg.project.ssh_auth_sock),
|
260
261
|
"--volume #{dest_path.tap(&:mkpath)}:#{dest_path}",
|
261
|
-
(
|
262
|
+
('--env SSH_AUTH_SOCK=/tmp/dapp-ssh-agent' if dimg.project.ssh_auth_sock),
|
262
263
|
('--env DAPP_CHEF_COOKBOOKS_VENDORING=1' if chef_cookbooks_stage),
|
263
|
-
"dappdeps/berksdeps:0.1.0 #{
|
264
|
-
|
264
|
+
"dappdeps/berksdeps:0.1.0 #{dimg.project.bash_path} -ec '#{dimg.project.shellout_pack(vendor_commands.join(' && '))}'"].compact.join(' '),
|
265
|
+
log_verbose: dimg.project.log_verbose?
|
265
266
|
)
|
266
267
|
end
|
267
268
|
end
|
268
269
|
# rubocop:enable Metrics/MethodLength, Metrics/AbcSize
|
269
270
|
|
270
271
|
def _cookbooks_vendor_path(chef_cookbooks_stage: false)
|
271
|
-
|
272
|
+
dimg.build_path.join(
|
272
273
|
['cookbooks', chef_cookbooks_stage ? 'chef_cookbooks_stage' : nil].compact.join('.'),
|
273
274
|
cookbooks_checksum
|
274
275
|
)
|
@@ -277,16 +278,16 @@ module Dapp
|
|
277
278
|
def cookbooks_vendor_path(*path, chef_cookbooks_stage: false)
|
278
279
|
_cookbooks_vendor_path(chef_cookbooks_stage: chef_cookbooks_stage).tap do |_cookbooks_path|
|
279
280
|
lock_name = [
|
280
|
-
|
281
|
+
dimg.project.name,
|
281
282
|
'cookbooks',
|
282
283
|
chef_cookbooks_stage ? 'chef_cookbooks_stage' : nil,
|
283
284
|
cookbooks_checksum
|
284
285
|
].compact.join('.')
|
285
286
|
|
286
|
-
|
287
|
+
dimg.project.lock(lock_name, default_timeout: 120) do
|
287
288
|
@install_cookbooks ||= {}
|
288
289
|
@install_cookbooks[chef_cookbooks_stage] ||= begin
|
289
|
-
install_cookbooks(_cookbooks_path, chef_cookbooks_stage: chef_cookbooks_stage) unless _cookbooks_path.join('.created_at').exist? && !
|
290
|
+
install_cookbooks(_cookbooks_path, chef_cookbooks_stage: chef_cookbooks_stage) unless _cookbooks_path.join('.created_at').exist? && !dimg.project.dev_mode?
|
290
291
|
true
|
291
292
|
end
|
292
293
|
end
|
@@ -330,14 +331,14 @@ module Dapp
|
|
330
331
|
end
|
331
332
|
elsif is_mdapp && mdapp_enabled
|
332
333
|
common_mdapp_paths = select_existing_paths.call(cookbook_path, [
|
333
|
-
|
334
|
-
|
335
|
-
|
336
|
-
|
337
|
-
|
338
|
-
|
339
|
-
|
340
|
-
|
334
|
+
*common_paths,
|
335
|
+
["files/#{stage}", 'files/default'],
|
336
|
+
['files/common', 'files/default'],
|
337
|
+
["templates/#{stage}", 'templates/default'],
|
338
|
+
['templates/common', 'templates/default'],
|
339
|
+
["attributes/#{stage}.rb", "attributes/#{stage}.rb"],
|
340
|
+
['attributes/common.rb', 'attributes/common.rb']
|
341
|
+
])
|
341
342
|
|
342
343
|
recipe_path = "recipes/#{stage}.rb"
|
343
344
|
if cookbook_path.join(recipe_path).exist?
|
@@ -474,7 +475,7 @@ module Dapp
|
|
474
475
|
end
|
475
476
|
|
476
477
|
def stage_build_path(stage, *path)
|
477
|
-
|
478
|
+
dimg.tmp_path(dimg.config._name, stage).join(*path)
|
478
479
|
end
|
479
480
|
|
480
481
|
def container_stage_build_path(_stage, *path)
|