dapp 0.5.13 → 0.6.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 +3 -0
- data/config/en/common.yml +35 -6
- data/config/en/net_status.yml +20 -6
- data/lib/dapp.rb +53 -27
- data/lib/dapp/application.rb +48 -27
- data/lib/dapp/application/git_artifact.rb +1 -1
- data/lib/dapp/application/path.rb +2 -18
- data/lib/dapp/application/tags.rb +5 -5
- data/lib/dapp/build/stage/artifact.rb +8 -3
- data/lib/dapp/build/stage/base.rb +43 -30
- data/lib/dapp/build/stage/{infra_install.rb → before_install.rb} +6 -6
- data/lib/dapp/build/stage/before_setup.rb +27 -0
- data/lib/dapp/build/stage/docker_instructions.rb +12 -1
- data/lib/dapp/build/stage/from.rb +4 -3
- data/lib/dapp/build/stage/{source_1_archive.rb → ga_archive.rb} +7 -7
- data/lib/dapp/build/stage/{source_1_archive_dependencies.rb → ga_archive_dependencies.rb} +4 -4
- data/lib/dapp/build/stage/{source_base.rb → ga_base.rb} +31 -7
- data/lib/dapp/build/stage/{source_dependencies_base.rb → ga_dependencies_base.rb} +5 -6
- data/lib/dapp/build/stage/{source_5.rb → ga_latest_patch.rb} +6 -6
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +21 -0
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +21 -0
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +21 -0
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +31 -0
- data/lib/dapp/build/stage/install/install.rb +31 -0
- data/lib/dapp/build/stage/mod/artifact.rb +9 -19
- data/lib/dapp/build/stage/mod/group.rb +42 -0
- data/lib/dapp/build/stage/mod/logging.rb +62 -26
- data/lib/dapp/build/stage/setup/chef_cookbooks.rb +37 -0
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +25 -0
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +31 -0
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +25 -0
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +27 -0
- data/lib/dapp/build/stage/setup/setup.rb +31 -0
- data/lib/dapp/builder/base.rb +9 -6
- data/lib/dapp/builder/chef.rb +128 -107
- data/lib/dapp/builder/chef/berksfile.rb +3 -0
- data/lib/dapp/builder/shell.rb +4 -3
- data/lib/dapp/cli.rb +8 -6
- data/lib/dapp/cli/base.rb +6 -1
- data/lib/dapp/cli/bp.rb +41 -0
- data/lib/dapp/cli/build.rb +17 -4
- data/lib/dapp/cli/cleanup.rb +24 -0
- data/lib/dapp/cli/list.rb +2 -2
- data/lib/dapp/cli/push.rb +8 -9
- data/lib/dapp/cli/run.rb +3 -4
- data/lib/dapp/cli/spush.rb +20 -0
- data/lib/dapp/cli/stages.rb +2 -0
- data/lib/dapp/cli/stages/cleanup.rb +7 -3
- data/lib/dapp/cli/stages/flush.rb +6 -3
- data/lib/dapp/config/application.rb +17 -11
- data/lib/dapp/config/chef.rb +4 -0
- data/lib/dapp/config/docker.rb +3 -2
- data/lib/dapp/config/git_artifact.rb +1 -2
- data/lib/dapp/config/main.rb +5 -2
- data/lib/dapp/config/shell.rb +20 -16
- data/lib/dapp/docker_registry.rb +32 -0
- data/lib/dapp/docker_registry/base.rb +47 -0
- data/lib/dapp/docker_registry/default.rb +18 -0
- data/lib/dapp/docker_registry/mod/authorization.rb +62 -0
- data/lib/dapp/docker_registry/mod/request.rb +44 -0
- data/lib/dapp/error/image.rb +6 -0
- data/lib/dapp/error/project.rb +6 -0
- data/lib/dapp/error/registry.rb +6 -0
- data/lib/dapp/exception/registry.rb +6 -0
- data/lib/dapp/git_artifact.rb +6 -7
- data/lib/dapp/git_repo/base.rb +1 -1
- data/lib/dapp/git_repo/remote.rb +6 -38
- data/lib/dapp/helper/sha256.rb +3 -3
- data/lib/dapp/helper/shellout.rb +25 -7
- data/lib/dapp/helper/streaming.rb +1 -3
- data/lib/dapp/image/argument.rb +31 -18
- data/lib/dapp/image/docker.rb +15 -8
- data/lib/dapp/image/stage.rb +10 -12
- data/lib/dapp/lock/base.rb +44 -0
- data/lib/dapp/lock/error.rb +14 -0
- data/lib/dapp/lock/file.rb +33 -0
- data/lib/dapp/prctl.rb +22 -0
- data/lib/dapp/project.rb +75 -0
- data/lib/dapp/project/command/bp.rb +24 -0
- data/lib/dapp/project/command/build.rb +21 -0
- data/lib/dapp/project/command/cleanup.rb +24 -0
- data/lib/dapp/project/command/common.rb +51 -0
- data/lib/dapp/project/command/list.rb +14 -0
- data/lib/dapp/project/command/push.rb +21 -0
- data/lib/dapp/project/command/run.rb +15 -0
- data/lib/dapp/project/command/spush.rb +17 -0
- data/lib/dapp/project/command/stages_cleanup.rb +70 -0
- data/lib/dapp/project/command/stages_flush.rb +18 -0
- data/lib/dapp/project/dappfile.rb +70 -0
- data/lib/dapp/project/lock.rb +27 -0
- data/lib/dapp/project/logging/base.rb +107 -0
- data/lib/dapp/project/logging/process.rb +104 -0
- data/lib/dapp/project/paint.rb +16 -0
- data/lib/dapp/project/ssh_agent.rb +77 -0
- data/lib/dapp/version.rb +1 -1
- metadata +74 -27
- data/lib/dapp/application/deps/gitartifact.rb +0 -39
- data/lib/dapp/application/logging.rb +0 -120
- data/lib/dapp/application/system_shellout.rb +0 -63
- data/lib/dapp/build/stage/chef_cookbooks.rb +0 -33
- data/lib/dapp/build/stage/infra_setup.rb +0 -27
- data/lib/dapp/build/stage/install.rb +0 -27
- data/lib/dapp/build/stage/setup.rb +0 -27
- data/lib/dapp/build/stage/source_1.rb +0 -21
- data/lib/dapp/build/stage/source_1_dependencies.rb +0 -27
- data/lib/dapp/build/stage/source_2.rb +0 -17
- data/lib/dapp/build/stage/source_2_dependencies.rb +0 -17
- data/lib/dapp/build/stage/source_3.rb +0 -17
- data/lib/dapp/build/stage/source_3_dependencies.rb +0 -23
- data/lib/dapp/build/stage/source_4.rb +0 -21
- data/lib/dapp/build/stage/source_4_dependencies.rb +0 -27
- data/lib/dapp/cli/smartpush.rb +0 -19
- data/lib/dapp/controller.rb +0 -119
- data/lib/dapp/error/controller.rb +0 -6
- data/lib/dapp/helper/log.rb +0 -73
@@ -0,0 +1,21 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module InstallGroup
|
5
|
+
# GAPostInstallPatch
|
6
|
+
class GAPostInstallPatch < GABase
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = GAPostInstallPatchDependencies.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def next_g_a_stage
|
15
|
+
super.next_stage # GAPreSetupPatch
|
16
|
+
end
|
17
|
+
end # GAPostInstallPatch
|
18
|
+
end
|
19
|
+
end # Stage
|
20
|
+
end # Build
|
21
|
+
end # Dapp
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module InstallGroup
|
5
|
+
# GAPostInstallPatchDependencies
|
6
|
+
class GAPostInstallPatchDependencies < GADependenciesBase
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = Install.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def dependencies
|
15
|
+
[application.builder.before_setup_checksum]
|
16
|
+
end
|
17
|
+
end # GAPostInstallPatchDependencies
|
18
|
+
end
|
19
|
+
end # Stage
|
20
|
+
end # Build
|
21
|
+
end # Dapp
|
@@ -0,0 +1,21 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module InstallGroup
|
5
|
+
# GAPostInstallPatch
|
6
|
+
class GAPreInstallPatch < GABase
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = GAPreInstallPatchDependencies.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def prev_g_a_stage
|
15
|
+
dependencies_stage.prev_stage # GAArchive
|
16
|
+
end
|
17
|
+
end # GAPostInstallPatch
|
18
|
+
end
|
19
|
+
end # Stage
|
20
|
+
end # Build
|
21
|
+
end # Dapp
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module InstallGroup
|
5
|
+
# GAPreInstallPatchDependencies
|
6
|
+
class GAPreInstallPatchDependencies < GADependenciesBase
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = GAArchive.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def dependencies
|
15
|
+
[install_dependencies_files_checksum, application.builder.install_checksum]
|
16
|
+
end
|
17
|
+
|
18
|
+
def empty?
|
19
|
+
super || dependencies_empty?
|
20
|
+
end
|
21
|
+
|
22
|
+
private
|
23
|
+
|
24
|
+
def install_dependencies_files_checksum
|
25
|
+
@install_dependencies_files_checksum ||= dependencies_files_checksum(application.config._install_dependencies)
|
26
|
+
end
|
27
|
+
end # GAPreInstallPatchDependencies
|
28
|
+
end
|
29
|
+
end # Stage
|
30
|
+
end # Build
|
31
|
+
end # Dapp
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module InstallGroup
|
5
|
+
# Install
|
6
|
+
class Install < Base
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = GAPreInstallPatch.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def empty?
|
15
|
+
super && !application.builder.install?
|
16
|
+
end
|
17
|
+
|
18
|
+
def dependencies
|
19
|
+
prev_stage.prev_stage.dependencies # GAPreInstallPatchDependencies
|
20
|
+
end
|
21
|
+
|
22
|
+
def image
|
23
|
+
super do |image|
|
24
|
+
application.builder.install(image)
|
25
|
+
end
|
26
|
+
end
|
27
|
+
end # Install
|
28
|
+
end
|
29
|
+
end # Stage
|
30
|
+
end # Build
|
31
|
+
end # Dapp
|
@@ -7,15 +7,14 @@ module Dapp
|
|
7
7
|
module Artifact
|
8
8
|
def artifacts
|
9
9
|
@artifacts ||= begin
|
10
|
-
verbose = application.log_verbose?
|
11
10
|
application.config._artifact.map do |artifact|
|
12
|
-
process = application.t(code: 'process.artifact_building', data: { name: artifact._config._name })
|
13
|
-
application.log_secondary_process(process, short: !
|
14
|
-
application.with_log_indent do
|
11
|
+
process = application.project.t(code: 'process.artifact_building', data: { name: artifact._config._name })
|
12
|
+
application.project.log_secondary_process(process, short: !application.project.log_verbose?) do
|
13
|
+
application.project.with_log_indent do
|
15
14
|
{
|
16
15
|
name: artifact._config._name,
|
17
16
|
options: artifact._artifact_options,
|
18
|
-
app:
|
17
|
+
app: application.artifact(artifact._config).tap(&:build!)
|
19
18
|
}
|
20
19
|
end
|
21
20
|
end
|
@@ -23,22 +22,13 @@ module Dapp
|
|
23
22
|
end
|
24
23
|
end
|
25
24
|
|
26
|
-
def artifact_app_options(artifact, verbose)
|
27
|
-
{
|
28
|
-
config: artifact._config,
|
29
|
-
cli_options: application.cli_options.merge(log_quiet: !verbose),
|
30
|
-
ignore_git_fetch: application.ignore_git_fetch,
|
31
|
-
is_artifact: true
|
32
|
-
}
|
33
|
-
end
|
34
|
-
|
35
25
|
def artifacts_signatures
|
36
26
|
artifacts.map { |artifact| hashsum [artifact[:app].signature, artifact[:options]] }
|
37
27
|
end
|
38
28
|
|
39
29
|
# rubocop:disable Metrics/AbcSize, Metrics/MethodLength
|
40
30
|
def apply_artifact(artifact, image)
|
41
|
-
return if application.dry_run?
|
31
|
+
return if application.project.dry_run?
|
42
32
|
|
43
33
|
artifact_name = artifact[:name]
|
44
34
|
app = artifact[:app]
|
@@ -52,8 +42,9 @@ module Dapp
|
|
52
42
|
"--volume #{application.tmp_path('artifact', artifact_name)}:#{app.container_tmp_path(artifact_name)}",
|
53
43
|
'--entrypoint /bin/bash']
|
54
44
|
commands = safe_cp(where_to_add, app.container_tmp_path(artifact_name), Process.uid, Process.gid)
|
55
|
-
application.log_secondary_process(application.t(code: 'process.artifact_copy',
|
56
|
-
|
45
|
+
application.project.log_secondary_process(application.project.t(code: 'process.artifact_copy',
|
46
|
+
data: { name: artifact_name }), short: true) do
|
47
|
+
app.run(docker_options, [%(-ec '#{application.project.shellout_pack(commands)}')])
|
57
48
|
end
|
58
49
|
|
59
50
|
commands = safe_cp(application.container_tmp_path('artifact', artifact_name), where_to_add, owner, group, cwd, paths)
|
@@ -68,8 +59,7 @@ module Dapp
|
|
68
59
|
credentials += "-o #{owner} " if owner
|
69
60
|
credentials += "-g #{group} " if group
|
70
61
|
|
71
|
-
copy_files =
|
72
|
-
cwd_ = File.expand_path(File.join('/', cwd_))
|
62
|
+
copy_files = lambda do |from_, cwd_, path_ = ''|
|
73
63
|
"find #{File.join(from_, cwd_, path_)} -type f -exec bash -ec 'install -D #{credentials} {} " \
|
74
64
|
"#{File.join(to, "$(echo {} | sed -e \"s/#{File.join(from_, cwd_).gsub('/', '\\/')}//g\")")}' \\;"
|
75
65
|
end
|
@@ -0,0 +1,42 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
# Mod
|
5
|
+
module Mod
|
6
|
+
# Group
|
7
|
+
module Group
|
8
|
+
def log_image_build
|
9
|
+
return super if should_be_quiet?
|
10
|
+
log_group_name if group_should_be_opened?
|
11
|
+
application.project.with_log_indent { super }
|
12
|
+
end
|
13
|
+
|
14
|
+
def log_group_name
|
15
|
+
application.project.log_step(application.project.t(code: group_name, context: :group))
|
16
|
+
end
|
17
|
+
|
18
|
+
def group_name
|
19
|
+
class_to_lowercase(self.class.name.split('::')[-2])
|
20
|
+
end
|
21
|
+
|
22
|
+
def group_should_be_opened?
|
23
|
+
!group_opened? && image_should_be_build?
|
24
|
+
end
|
25
|
+
|
26
|
+
def group_opened?
|
27
|
+
return false if prev_group_stage.nil?
|
28
|
+
prev_group_stage.group_opened? || prev_group_stage.image_should_be_build?
|
29
|
+
end
|
30
|
+
|
31
|
+
def prev_group_stage
|
32
|
+
prev_stage if prev_stage.respond_to?(:group_name) && prev_stage.group_name == group_name
|
33
|
+
end
|
34
|
+
|
35
|
+
def log_name_context
|
36
|
+
[super, group_name].join('.')
|
37
|
+
end
|
38
|
+
end
|
39
|
+
end # Mod
|
40
|
+
end # Stage
|
41
|
+
end # Build
|
42
|
+
end # Dapp
|
@@ -5,42 +5,74 @@ module Dapp
|
|
5
5
|
module Mod
|
6
6
|
# Logging
|
7
7
|
module Logging
|
8
|
+
def log_image_build(&image_build)
|
9
|
+
if empty? then log_state(:empty)
|
10
|
+
elsif image.tagged? then log_state(:using_cache)
|
11
|
+
elsif should_be_not_present? then log_state(:not_present)
|
12
|
+
elsif application.project.dry_run? then log_state(:build, styles: { status: :success })
|
13
|
+
else log_image_build_process(&image_build)
|
14
|
+
end
|
15
|
+
ensure
|
16
|
+
log_build
|
17
|
+
end
|
18
|
+
|
8
19
|
def log_build
|
9
|
-
application.with_log_indent do
|
10
|
-
application.log_info application.t(code: 'image.signature', data: { signature: image_name })
|
11
|
-
unless empty?
|
12
|
-
|
13
|
-
|
14
|
-
|
15
|
-
|
20
|
+
application.project.with_log_indent do
|
21
|
+
application.project.log_info application.project.t(code: 'image.signature', data: { signature: image_name })
|
22
|
+
log_image_details unless empty?
|
23
|
+
end if application.project.log_verbose? && !should_be_quiet?
|
24
|
+
end
|
25
|
+
|
26
|
+
def log_image_details
|
27
|
+
if image.tagged?
|
28
|
+
log_image_created_at
|
29
|
+
log_image_size
|
30
|
+
end
|
31
|
+
log_image_commands unless ignore_log_commands?
|
32
|
+
end
|
33
|
+
|
34
|
+
def log_image_created_at
|
35
|
+
application.project.log_info application.project.t(code: 'image.info.created_at',
|
36
|
+
data: { value: Time.parse(image.created_at).localtime })
|
37
|
+
end
|
38
|
+
|
39
|
+
def log_image_size
|
40
|
+
if from_image.tagged? && !prev_stage.nil?
|
41
|
+
size = image.size.to_f - from_image.size.to_f
|
42
|
+
code = 'image.info.difference'
|
43
|
+
else
|
44
|
+
size = image.size
|
45
|
+
code = 'image.info.size'
|
46
|
+
end
|
47
|
+
application.project.log_info application.project.t(code: code, data: { value: size.to_f.round(2) })
|
16
48
|
end
|
17
49
|
|
18
50
|
def log_image_commands
|
19
51
|
return if (bash_commands = image.send(:bash_commands)).empty?
|
20
|
-
application.log_info application.t(code: 'image.commands')
|
21
|
-
application.with_log_indent { application.log_info bash_commands.join("\n") }
|
52
|
+
application.project.log_info application.project.t(code: 'image.commands')
|
53
|
+
application.project.with_log_indent { application.project.log_info bash_commands.join("\n") }
|
22
54
|
end
|
23
55
|
|
24
|
-
def
|
25
|
-
|
26
|
-
date, size = image_info
|
27
|
-
application.log_info application.t(code: 'image.info.date', data: { value: date })
|
28
|
-
size_code = size_difference? ? 'image.info.difference' : 'image.info.size'
|
29
|
-
application.log_info application.t(code: size_code, data: { value: size })
|
56
|
+
def log_name
|
57
|
+
application.project.t(code: name, context: log_name_context)
|
30
58
|
end
|
31
59
|
|
32
|
-
def
|
33
|
-
|
34
|
-
|
35
|
-
_date, from_size = from_image.info
|
36
|
-
size = size.to_f - from_size.to_f
|
37
|
-
end
|
60
|
+
def log_name_context
|
61
|
+
:stage
|
62
|
+
end
|
38
63
|
|
39
|
-
|
64
|
+
def log_state(state_code, styles: {})
|
65
|
+
application.project.log_state(log_name,
|
66
|
+
state: application.project.t(code: state_code, context: 'state'),
|
67
|
+
styles: styles) unless should_be_quiet?
|
40
68
|
end
|
41
69
|
|
42
|
-
def
|
43
|
-
|
70
|
+
def log_image_build_process
|
71
|
+
return yield if should_be_quiet?
|
72
|
+
application.project.log_process(log_name, process: application.project.t(code: 'status.process.building'),
|
73
|
+
short: should_not_be_detailed?) do
|
74
|
+
yield
|
75
|
+
end
|
44
76
|
end
|
45
77
|
|
46
78
|
def ignore_log_commands?
|
@@ -48,7 +80,7 @@ module Dapp
|
|
48
80
|
end
|
49
81
|
|
50
82
|
def should_be_skipped?
|
51
|
-
image.tagged? && !application.log_verbose? && application.cli_options[:introspect_stage].nil?
|
83
|
+
image.tagged? && !application.project.log_verbose? && application.project.cli_options[:introspect_stage].nil?
|
52
84
|
end
|
53
85
|
|
54
86
|
def should_not_be_detailed?
|
@@ -56,7 +88,11 @@ module Dapp
|
|
56
88
|
end
|
57
89
|
|
58
90
|
def should_be_introspected?
|
59
|
-
application.cli_options[:introspect_stage] == name && !application.dry_run? && !application.is_artifact
|
91
|
+
application.project.cli_options[:introspect_stage] == name && !application.project.dry_run? && !application.is_artifact
|
92
|
+
end
|
93
|
+
|
94
|
+
def should_be_quiet?
|
95
|
+
application.is_artifact && !application.project.log_verbose?
|
60
96
|
end
|
61
97
|
end
|
62
98
|
end # Mod
|
@@ -0,0 +1,37 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module SetupGroup
|
5
|
+
# ChefCookbooks
|
6
|
+
class ChefCookbooks < Base
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = Setup.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def dependencies
|
15
|
+
[application.builder.chef_cookbooks_checksum]
|
16
|
+
end
|
17
|
+
|
18
|
+
def image
|
19
|
+
super do |image|
|
20
|
+
application.builder.chef_cookbooks(image)
|
21
|
+
end
|
22
|
+
end
|
23
|
+
|
24
|
+
protected
|
25
|
+
|
26
|
+
def should_not_be_detailed?
|
27
|
+
true
|
28
|
+
end
|
29
|
+
|
30
|
+
def ignore_log_commands?
|
31
|
+
true
|
32
|
+
end
|
33
|
+
end # ChefCookbooks
|
34
|
+
end
|
35
|
+
end # Stage
|
36
|
+
end # Build
|
37
|
+
end # Dapp
|
@@ -0,0 +1,25 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module SetupGroup
|
5
|
+
# GAPostSetupPatch
|
6
|
+
class GAPostSetupPatch < GABase
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
def initialize(application, next_stage)
|
10
|
+
@prev_stage = GAPostSetupPatchDependencies.new(application, self)
|
11
|
+
super
|
12
|
+
end
|
13
|
+
|
14
|
+
def prev_g_a_stage
|
15
|
+
super.prev_stage # GAPreSetupPatch
|
16
|
+
end
|
17
|
+
|
18
|
+
def next_g_a_stage
|
19
|
+
next_stage # GALatestPatch
|
20
|
+
end
|
21
|
+
end # GAPostSetupPatch
|
22
|
+
end
|
23
|
+
end # Stage
|
24
|
+
end # Build
|
25
|
+
end # Dapp
|
@@ -0,0 +1,31 @@
|
|
1
|
+
module Dapp
|
2
|
+
module Build
|
3
|
+
module Stage
|
4
|
+
module SetupGroup
|
5
|
+
# GAPostSetupPatchDependencies
|
6
|
+
class GAPostSetupPatchDependencies < GADependenciesBase
|
7
|
+
include Mod::Group
|
8
|
+
|
9
|
+
MAX_PATCH_SIZE = 1024 * 1024
|
10
|
+
|
11
|
+
def initialize(application, next_stage)
|
12
|
+
@prev_stage = ChefCookbooks.new(application, self)
|
13
|
+
super
|
14
|
+
end
|
15
|
+
|
16
|
+
def dependencies
|
17
|
+
[(changes_size_since_g_a_pre_setup_patch / MAX_PATCH_SIZE).to_i]
|
18
|
+
end
|
19
|
+
|
20
|
+
private
|
21
|
+
|
22
|
+
def changes_size_since_g_a_pre_setup_patch
|
23
|
+
application.git_artifacts.map do |git_artifact|
|
24
|
+
git_artifact.patch_size(prev_stage.prev_stage.prev_stage.layer_commit(git_artifact), git_artifact.latest_commit)
|
25
|
+
end.reduce(0, :+)
|
26
|
+
end
|
27
|
+
end # GAPostSetupPatchDependencies
|
28
|
+
end
|
29
|
+
end # Stage
|
30
|
+
end # Build
|
31
|
+
end # Dapp
|