dapp 0.6.17 → 0.7.1
Sign up to get free protection for your applications and to get access to all the features.
- 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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 5421a51c8a7e4aa97dd4366da97409289c335b88
|
4
|
+
data.tar.gz: 29d5b0434a33f376ce6809a5c32bfada6ab19528
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 557da43530e8da7dd3051ce4e47de1e20bb3b4bb9d68b7c16e3dca37beebb334fe2be645b07e06a15113f79fc2d58ccb6e7e49383f46f7ffd18636a7d586d3b7
|
7
|
+
data.tar.gz: 9db7eea346c214b0990d7c823d7c95fcb179fc948e623ae17d3f09cc5f759f0fdb88cfd401e6bc4f70738f6acf4266f5620bafdb0cd112f24f21034617b5abf3
|
data/config/en/common.yml
CHANGED
@@ -28,7 +28,6 @@ en:
|
|
28
28
|
pulling: '[PULLING]'
|
29
29
|
building: '[BUILDING]'
|
30
30
|
default: '[RUNNING]'
|
31
|
-
tagging: '[TAGGING]'
|
32
31
|
success:
|
33
32
|
default: '[OK]'
|
34
33
|
failed:
|
@@ -41,8 +40,9 @@ en:
|
|
41
40
|
empty: '[EMPTY]'
|
42
41
|
push: '[PUSH]'
|
43
42
|
pull: '[PULL]'
|
44
|
-
tag: '[TAG]'
|
45
43
|
warning:
|
44
|
+
wrong_using_base_directive: "WARNING: Directive '%{directive}' has declared after dimg_group|dimg|artifact!"
|
45
|
+
wrong_using_directive: "WARNING: Directive '%{directive}' has declared after dimg_group|dimg!"
|
46
46
|
excess_builder_instruction: "WARNING: Excessive use of the 'builder' instruction. Builder type will be automatically determined by the first use of any builder."
|
47
47
|
excess_name_instruction: "WARNING: Excessive use of the 'name' instruction. Given name corresponds to default name."
|
48
48
|
another_image_already_tagged: 'WARNING: image with other id already exist.'
|
data/config/en/net_status.yml
CHANGED
@@ -3,10 +3,10 @@ en:
|
|
3
3
|
missing_translation: "Missing translation for code: '%{code}'!"
|
4
4
|
shellout:
|
5
5
|
shell_command_failed: ">>> START STREAM\n%{stream}\n>>> END STREAM"
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
git_branch_without_name: "
|
6
|
+
dimg:
|
7
|
+
dimg_not_built: "Dimg hasn't been built yet!"
|
8
|
+
dimg_not_run: "Dimg run failed!"
|
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
11
|
chef_stage_checksum_not_calculated: "Chef stage '%{stage}' checksum is not calculated yet, run build first"
|
12
12
|
dappfile:
|
@@ -18,38 +18,40 @@ en:
|
|
18
18
|
built_id_not_defined: '`from.built_id` not defined!'
|
19
19
|
from_image_not_found: 'Image `%{name}` not found!'
|
20
20
|
project:
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
repo_name_incorrect: "Incorrect repo ('%{name}') given!"
|
25
|
-
command_unexpected_apps_number: "Command can process only one application!"
|
26
|
-
no_such_app: "No such app: '%{apps_patterns}'!"
|
21
|
+
spush_command_unexpected_dimgs_number: "Command 'spush' can process only one dimg!"
|
22
|
+
command_unexpected_dimgs_number: "Command can process only one dimg!"
|
23
|
+
no_such_dimg: "No such dimg: '%{dimgs_patterns}'!"
|
27
24
|
dappfile_not_found: "Dappfile not found!"
|
28
25
|
cannot_run_ssh_agent: "Cannot run ssh-agent"
|
29
26
|
ssh_key_not_found: "Ssh key '%{path}' not exist!"
|
30
|
-
mrproper_required_option: "Expected command option '--
|
27
|
+
mrproper_required_option: "Expected command option '--all' or '--improper-cache-version-stages'!"
|
31
28
|
config:
|
29
|
+
dimg_name_required: 'Dimg name required!'
|
30
|
+
dimg_name_incorrect: "Dimg has incorrect name '%{name}': doesn't match regex '%{reg}'!"
|
31
|
+
export_to_required: "Export: 'to' directive required!"
|
32
|
+
export_cwd_absolute_path_required: "Export: given cwd path must be absolute!"
|
33
|
+
export_to_absolute_path_required: "Export: given 'to' path must be absolute!"
|
34
|
+
export_include_paths_relative_path_required: "Export: given 'include_paths' path must be relative!"
|
35
|
+
export_exclude_paths_relative_path_required: "Export: given 'exclude_paths' path must be relative!"
|
36
|
+
mount_from_absolute_path_required: "Mount: given 'from' path must be absolute!"
|
37
|
+
mount_from_type_required: "Mount: 'from' directive expect 'build_dir' or 'tmp_dir' type!"
|
32
38
|
builder_type_conflict: 'Conflict between builder types!'
|
33
39
|
builder_type_unsupported: "Defined unsupported builder type `%{type}`!"
|
34
|
-
|
40
|
+
docker_from_incorrect: "`docker.from` has incorrect value `%{name}`: expected format `image_name:tag`!"
|
41
|
+
stage_artifact_not_associated: "Artifact not associated with any stage: expected 'before' or 'after' attribute!"
|
42
|
+
stage_artifact_double_associate: "Artifact cannot use with both associated attributes 'before' and 'after'!"
|
43
|
+
stage_artifact_not_supported_associated_stage: "Artifact not supported associated stage '%{stage}'!"
|
35
44
|
artifact_conflict: "Conflict between artifacts paths!"
|
36
|
-
scratch_unsupported_directive: "Scratch
|
37
|
-
scratch_artifact_required: "Scratch
|
38
|
-
scratch_artifact_associated: "Scratch artifact cannot be associated: not expected 'before'/'after'
|
45
|
+
scratch_unsupported_directive: "Scratch dimg has unsupported directive '%{directive}'!"
|
46
|
+
scratch_artifact_required: "Scratch dimg without artifacts!"
|
47
|
+
scratch_artifact_associated: "Scratch artifact cannot be associated: not expected 'before'/'after' attribute!"
|
39
48
|
scratch_artifact_docker_from: "Scratch artifact must have directive 'docker.from'!"
|
40
|
-
stage_artifact_not_associated: "Artifact not associated with any stage: expected 'before' or 'after' option!"
|
41
|
-
stage_artifact_double_associate: "Artifact cannot use with both associated options 'before' and 'after'!"
|
42
|
-
stage_artifact_not_supported_associated_stage: "Artifact not supported associated stage '%{stage}'!"
|
43
|
-
git_artifact_unexpected_attribute: "'%{type}' git artifact doesn't has attribute '%{attr}'!"
|
44
|
-
docker_from_incorrect: "`docker.from` has incorrect value `%{name}`: expected format `image_name:tag`!"
|
45
|
-
docker_from_without_tag: "`docker.from` has incorrect value `%{name}`: expected format `image_name:tag`!"
|
46
|
-
app_name_incorrect: "Application has incorrect name '%{name}': doesn't match regex '%{reg}'!"
|
47
49
|
chef:
|
48
50
|
stage_path_overlap: "Cannot install '%{cookbook}' cookbook's path %{from} into %{to}: already exists"
|
49
51
|
mdapp_dependency_in_metadata_forbidden: "Using mdapp as dependency in metadata.rb forbidden: detected '%{dependency}'"
|
50
52
|
registry:
|
51
53
|
incorrect_repo: 'Incorrect repository!'
|
52
|
-
|
54
|
+
no_such_dimg: 'No such dimg in registry!'
|
53
55
|
authenticate_type_not_supported: 'Registry authenticate type not supported!'
|
54
56
|
page_not_found: "Page '%{url}' not found!"
|
55
57
|
user_not_authorized: 'User not authorized!'
|
data/lib/dapp.rb
CHANGED
@@ -24,7 +24,7 @@ require 'dapp/helper/sha256'
|
|
24
24
|
require 'dapp/helper/net_status'
|
25
25
|
require 'dapp/prctl'
|
26
26
|
require 'dapp/error/base'
|
27
|
-
require 'dapp/error/
|
27
|
+
require 'dapp/error/dimg'
|
28
28
|
require 'dapp/error/dappfile'
|
29
29
|
require 'dapp/error/build'
|
30
30
|
require 'dapp/error/config'
|
@@ -42,7 +42,6 @@ require 'dapp/cli/base'
|
|
42
42
|
require 'dapp/cli/build'
|
43
43
|
require 'dapp/cli/push'
|
44
44
|
require 'dapp/cli/spush'
|
45
|
-
require 'dapp/cli/tag'
|
46
45
|
require 'dapp/cli/list'
|
47
46
|
require 'dapp/cli/stages'
|
48
47
|
require 'dapp/cli/stages/flush_local'
|
@@ -57,24 +56,34 @@ require 'dapp/cli/bp'
|
|
57
56
|
require 'dapp/cli/mrproper'
|
58
57
|
require 'dapp/cli/stage_image'
|
59
58
|
require 'dapp/filelock'
|
59
|
+
require 'dapp/config/base'
|
60
|
+
require 'dapp/config/dimg/instance_methods'
|
61
|
+
require 'dapp/config/dimg/validation'
|
62
|
+
require 'dapp/config/dimg'
|
63
|
+
require 'dapp/config/artifact_dimg'
|
64
|
+
require 'dapp/config/dimg_group_base'
|
65
|
+
require 'dapp/config/dimg_group_main'
|
66
|
+
require 'dapp/config/dimg_group'
|
67
|
+
require 'dapp/config/artifact_group'
|
68
|
+
require 'dapp/config/directive/base'
|
69
|
+
require 'dapp/config/directive/artifact_base'
|
70
|
+
require 'dapp/config/directive/git_artifact_local'
|
71
|
+
require 'dapp/config/directive/git_artifact_remote'
|
60
72
|
require 'dapp/config/directive/artifact'
|
61
73
|
require 'dapp/config/directive/chef'
|
62
|
-
require 'dapp/config/directive/
|
63
|
-
require 'dapp/config/directive/
|
64
|
-
require 'dapp/config/directive/build_dir'
|
74
|
+
require 'dapp/config/directive/shell/dimg'
|
75
|
+
require 'dapp/config/directive/shell/artifact'
|
65
76
|
require 'dapp/config/directive/docker/base'
|
77
|
+
require 'dapp/config/directive/docker/dimg'
|
66
78
|
require 'dapp/config/directive/docker/artifact'
|
67
|
-
require 'dapp/config/directive/
|
68
|
-
require 'dapp/config/directive/shell/artifact'
|
69
|
-
require 'dapp/config/application'
|
70
|
-
require 'dapp/config/main'
|
71
|
-
require 'dapp/config/artifact'
|
79
|
+
require 'dapp/config/directive/mount'
|
72
80
|
require 'dapp/builder/base'
|
73
81
|
require 'dapp/builder/chef'
|
74
82
|
require 'dapp/builder/chef/error'
|
75
83
|
require 'dapp/builder/chef/cookbook_metadata'
|
76
84
|
require 'dapp/builder/chef/berksfile'
|
77
85
|
require 'dapp/builder/shell'
|
86
|
+
require 'dapp/builder/none'
|
78
87
|
require 'dapp/build/stage/mod/logging'
|
79
88
|
require 'dapp/build/stage/mod/group'
|
80
89
|
require 'dapp/build/stage/base'
|
@@ -120,7 +129,6 @@ require 'dapp/project/command/list'
|
|
120
129
|
require 'dapp/project/command/push'
|
121
130
|
require 'dapp/project/command/run'
|
122
131
|
require 'dapp/project/command/spush'
|
123
|
-
require 'dapp/project/command/tag'
|
124
132
|
require 'dapp/project/command/stages/common'
|
125
133
|
require 'dapp/project/command/stages/cleanup_local'
|
126
134
|
require 'dapp/project/command/stages/cleanup_repo'
|
@@ -143,11 +151,11 @@ require 'dapp/docker_registry/mod/request'
|
|
143
151
|
require 'dapp/docker_registry/mod/authorization'
|
144
152
|
require 'dapp/docker_registry/base'
|
145
153
|
require 'dapp/docker_registry/default'
|
146
|
-
require 'dapp/
|
147
|
-
require 'dapp/
|
148
|
-
require 'dapp/
|
149
|
-
require 'dapp/
|
150
|
-
require 'dapp/
|
154
|
+
require 'dapp/dimg/git_artifact'
|
155
|
+
require 'dapp/dimg/path'
|
156
|
+
require 'dapp/dimg/tags'
|
157
|
+
require 'dapp/dimg/stages'
|
158
|
+
require 'dapp/dimg'
|
151
159
|
require 'dapp/artifact'
|
152
160
|
require 'dapp/image/argument'
|
153
161
|
require 'dapp/image/docker'
|
data/lib/dapp/artifact.rb
CHANGED
@@ -3,8 +3,8 @@ module Dapp
|
|
3
3
|
module Stage
|
4
4
|
# AfterInstallArtifact
|
5
5
|
class AfterInstallArtifact < ArtifactDefault
|
6
|
-
def initialize(
|
7
|
-
@prev_stage = InstallGroup::GAPostInstallPatch.new(
|
6
|
+
def initialize(dimg, next_stage)
|
7
|
+
@prev_stage = InstallGroup::GAPostInstallPatch.new(dimg, self)
|
8
8
|
super
|
9
9
|
end
|
10
10
|
end # AfterInstallArtifact
|
@@ -3,11 +3,11 @@ module Dapp
|
|
3
3
|
module Stage
|
4
4
|
# AfterSetupArtifact
|
5
5
|
class AfterSetupArtifact < ArtifactDefault
|
6
|
-
def initialize(
|
7
|
-
@prev_stage = if
|
8
|
-
SetupGroup::ChefCookbooks.new(
|
6
|
+
def initialize(dimg, next_stage)
|
7
|
+
@prev_stage = if dimg.artifact?
|
8
|
+
SetupGroup::ChefCookbooks.new(dimg, self)
|
9
9
|
else
|
10
|
-
SetupGroup::GAPostSetupPatch.new(
|
10
|
+
SetupGroup::GAPostSetupPatch.new(dimg, self)
|
11
11
|
end
|
12
12
|
super
|
13
13
|
end
|
@@ -9,17 +9,17 @@ module Dapp
|
|
9
9
|
|
10
10
|
def prepare_image
|
11
11
|
super
|
12
|
-
|
12
|
+
artifacts_dimgs_build!
|
13
13
|
artifacts_labels = {}
|
14
14
|
artifacts.each do |artifact|
|
15
15
|
apply_artifact(artifact, image)
|
16
|
-
artifacts_labels["dapp-artifact-#{artifact[:name]}".to_sym] = artifact[:
|
16
|
+
artifacts_labels["dapp-artifact-#{artifact[:name]}".to_sym] = artifact[:dimg].send(:last_stage).image.built_id
|
17
17
|
end
|
18
18
|
image.add_service_change_label artifacts_labels
|
19
19
|
end
|
20
20
|
|
21
21
|
def images
|
22
|
-
[image].concat(artifacts.map { |artifact| artifact[:
|
22
|
+
[image].concat(artifacts.map { |artifact| artifact[:dimg].images }.flatten)
|
23
23
|
end
|
24
24
|
|
25
25
|
protected
|
@@ -34,43 +34,43 @@ module Dapp
|
|
34
34
|
|
35
35
|
def artifacts
|
36
36
|
@artifacts ||= begin
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
{ name: artifact._config._name, options: artifact._artifact_options,
|
37
|
+
dimg.config.public_send("_#{name}").map do |artifact|
|
38
|
+
artifact_dimg = Dapp::Artifact.new(config: artifact._config,
|
39
|
+
project: dimg.project,
|
40
|
+
ignore_git_fetch: dimg.ignore_git_fetch)
|
41
|
+
{ name: artifact._config._name, options: artifact._artifact_options, dimg: artifact_dimg }
|
42
42
|
end
|
43
43
|
end
|
44
44
|
end
|
45
45
|
|
46
46
|
def artifacts_signatures
|
47
|
-
artifacts.map { |artifact| hashsum [artifact[:
|
47
|
+
artifacts.map { |artifact| hashsum [artifact[:dimg].signature, artifact[:options]] }
|
48
48
|
end
|
49
49
|
|
50
|
-
def
|
50
|
+
def artifacts_dimgs_build!
|
51
51
|
artifacts.each do |artifact|
|
52
|
-
process =
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
artifact[:
|
52
|
+
process = dimg.project.t(code: 'process.artifact_building', data: { name: artifact[:name] })
|
53
|
+
dimg.project.log_secondary_process(process,
|
54
|
+
short: !dimg.project.log_verbose?,
|
55
|
+
quiet: dimg.artifact? && !dimg.project.log_verbose?) do
|
56
|
+
dimg.project.with_log_indent do
|
57
|
+
artifact[:dimg].build!
|
58
58
|
end
|
59
59
|
end
|
60
60
|
end
|
61
61
|
end
|
62
62
|
|
63
63
|
# rubocop:disable Metrics/AbcSize
|
64
|
-
def
|
64
|
+
def run_artifact_dimg(artifact_dimg, artifact_name, commands)
|
65
65
|
docker_options = ['--rm',
|
66
|
-
"--volume #{
|
67
|
-
"--volumes-from #{
|
68
|
-
"--entrypoint #{
|
69
|
-
|
70
|
-
|
71
|
-
|
72
|
-
|
73
|
-
|
66
|
+
"--volume #{dimg.tmp_path('artifact', artifact_name)}:#{artifact_dimg.container_tmp_path(artifact_name)}",
|
67
|
+
"--volumes-from #{dimg.project.base_container}",
|
68
|
+
"--entrypoint #{dimg.project.bash_path}"]
|
69
|
+
dimg.project.log_secondary_process(dimg.project.t(code: 'process.artifact_copy',
|
70
|
+
data: { name: artifact_name }),
|
71
|
+
short: true,
|
72
|
+
quiet: dimg.artifact? && !dimg.project.log_verbose?) do
|
73
|
+
artifact_dimg.run(docker_options, [%(-ec '#{dimg.project.shellout_pack(commands)}')])
|
74
74
|
end
|
75
75
|
end
|
76
76
|
# rubocop:enable Metrics/AbcSize
|
@@ -7,30 +7,30 @@ module Dapp
|
|
7
7
|
|
8
8
|
# rubocop:disable Metrics/AbcSize
|
9
9
|
def apply_artifact(artifact, image)
|
10
|
-
return if
|
10
|
+
return if dimg.project.dry_run?
|
11
11
|
|
12
12
|
artifact_name = artifact[:name]
|
13
|
-
|
13
|
+
artifact_dimg = artifact[:dimg]
|
14
14
|
cwd = artifact[:options][:cwd]
|
15
|
-
|
15
|
+
include_paths = artifact[:options][:include_paths]
|
16
16
|
exclude_paths = artifact[:options][:exclude_paths]
|
17
17
|
owner = artifact[:options][:owner]
|
18
18
|
group = artifact[:options][:group]
|
19
|
-
|
19
|
+
to = artifact[:options][:to]
|
20
20
|
|
21
|
-
command = safe_cp(
|
22
|
-
|
21
|
+
command = safe_cp(to, artifact_dimg.container_tmp_path(artifact_name), Process.uid, Process.gid, cwd, include_paths, exclude_paths)
|
22
|
+
run_artifact_dimg(artifact_dimg, artifact_name, command)
|
23
23
|
|
24
|
-
command = safe_cp(
|
24
|
+
command = safe_cp(dimg.container_tmp_path('artifact', artifact_name), to, owner, group, '', include_paths, exclude_paths)
|
25
25
|
image.add_command command
|
26
|
-
image.add_volume "#{
|
26
|
+
image.add_volume "#{dimg.tmp_path('artifact', artifact_name)}:#{dimg.container_tmp_path('artifact', artifact_name)}:ro"
|
27
27
|
end
|
28
28
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
29
29
|
|
30
30
|
private
|
31
31
|
|
32
32
|
# rubocop:disable Metrics/ParameterLists, Metrics/AbcSize, Metrics/MethodLength
|
33
|
-
def safe_cp(from, to, owner, group, cwd = '',
|
33
|
+
def safe_cp(from, to, owner, group, cwd = '', include_paths = [], exclude_paths = [])
|
34
34
|
credentials = ''
|
35
35
|
credentials += "-o #{owner} " if owner
|
36
36
|
credentials += "-g #{group} " if group
|
@@ -39,18 +39,18 @@ module Dapp
|
|
39
39
|
copy_files = proc do |from_, cwd_, path_ = ''|
|
40
40
|
cwd_ = File.expand_path(File.join('/', cwd_))
|
41
41
|
"if [[ -d #{File.join(from_, cwd_, path_)} ]]; then " \
|
42
|
-
"#{
|
43
|
-
"#{
|
42
|
+
"#{dimg.project.find_path} #{File.join(from_, cwd_, path_)} #{excludes} -type f -exec " \
|
43
|
+
"#{dimg.project.bash_path} -ec '#{dimg.project.install_path} -D #{credentials} {} " \
|
44
44
|
"#{File.join(to, '$(echo {} | ' \
|
45
|
-
"#{
|
45
|
+
"#{dimg.project.sed_path} -e \"s/#{File.join(from_, cwd_).gsub('/', '\\/')}//g\")")}' \\; ;" \
|
46
46
|
'fi'
|
47
47
|
end
|
48
48
|
|
49
49
|
commands = []
|
50
|
-
commands << [
|
51
|
-
commands.concat(
|
52
|
-
commands << "#{
|
53
|
-
"#{
|
50
|
+
commands << [dimg.project.install_path, credentials, '-d', to].join(' ')
|
51
|
+
commands.concat(include_paths.empty? ? Array(copy_files.call(from, cwd)) : include_paths.map { |path| copy_files.call(from, cwd, path) })
|
52
|
+
commands << "#{dimg.project.find_path} #{to} -type d -exec " \
|
53
|
+
"#{dimg.project.bash_path} -ec '#{dimg.project.install_path} -d #{credentials} {}' \\;"
|
54
54
|
commands.join(' && ')
|
55
55
|
end
|
56
56
|
# rubocop:enable Metrics/ParameterLists, Metrics/AbcSize, Metrics/MethodLength
|
@@ -8,10 +8,10 @@ module Dapp
|
|
8
8
|
include Mod::Logging
|
9
9
|
|
10
10
|
attr_accessor :prev_stage, :next_stage
|
11
|
-
attr_reader :
|
11
|
+
attr_reader :dimg
|
12
12
|
|
13
|
-
def initialize(
|
14
|
-
@
|
13
|
+
def initialize(dimg, next_stage)
|
14
|
+
@dimg = dimg
|
15
15
|
|
16
16
|
@next_stage = next_stage
|
17
17
|
@next_stage.prev_stage = self
|
@@ -19,14 +19,14 @@ module Dapp
|
|
19
19
|
|
20
20
|
# rubocop:disable Metrics/MethodLength, Metrics/PerceivedComplexity
|
21
21
|
def build_lock!
|
22
|
-
return yield if
|
22
|
+
return yield if dimg.project.dry_run?
|
23
23
|
|
24
24
|
try_lock = proc do
|
25
25
|
next yield unless should_be_tagged?
|
26
26
|
|
27
27
|
no_lock = false
|
28
28
|
|
29
|
-
|
29
|
+
dimg.project.lock("#{dimg.project.name}.image.#{image.name}") do
|
30
30
|
image.cache_reset
|
31
31
|
|
32
32
|
if should_be_tagged?
|
@@ -60,7 +60,7 @@ module Dapp
|
|
60
60
|
def save_in_cache!
|
61
61
|
prev_stage.save_in_cache! if prev_stage
|
62
62
|
return unless should_be_tagged?
|
63
|
-
image.
|
63
|
+
image.tag! unless dimg.project.dry_run?
|
64
64
|
end
|
65
65
|
|
66
66
|
def image
|
@@ -68,37 +68,48 @@ module Dapp
|
|
68
68
|
if empty?
|
69
69
|
prev_stage.image
|
70
70
|
else
|
71
|
-
Image::Stage.new(name: image_name, from: from_image, project:
|
71
|
+
Image::Stage.new(name: image_name, from: from_image, project: dimg.project)
|
72
72
|
end
|
73
73
|
end
|
74
74
|
end
|
75
75
|
|
76
76
|
def prepare_image
|
77
|
-
return if
|
78
|
-
image.add_volumes_from
|
79
|
-
|
80
|
-
|
81
|
-
image.add_service_change_label dapp: application.stage_dapp_label
|
77
|
+
return if dimg.project.dry_run?
|
78
|
+
image.add_volumes_from dimg.project.base_container
|
79
|
+
image_add_volumes
|
80
|
+
image.add_service_change_label dapp: dimg.stage_dapp_label
|
82
81
|
image.add_service_change_label 'dapp-cache-version'.to_sym => Dapp::BUILD_CACHE_VERSION
|
83
|
-
image.add_service_change_label 'dapp-dev-mode'.to_sym => true if application.dev_mode?
|
84
82
|
|
85
|
-
if
|
86
|
-
image.add_volume "#{
|
83
|
+
if dimg.project.ssh_auth_sock
|
84
|
+
image.add_volume "#{dimg.project.ssh_auth_sock}:/tmp/dapp-ssh-agent"
|
87
85
|
image.add_env 'SSH_AUTH_SOCK', '/tmp/dapp-ssh-agent'
|
88
86
|
end
|
89
87
|
end
|
90
88
|
|
91
|
-
def
|
92
|
-
|
89
|
+
def image_add_volumes
|
90
|
+
image_add_tmp_volumes
|
91
|
+
image_add_build_volumes
|
92
|
+
end
|
93
|
+
|
94
|
+
def image_add_tmp_volumes
|
95
|
+
image_add_default_volumes(:tmp_dir)
|
96
|
+
end
|
97
|
+
|
98
|
+
def image_add_build_volumes
|
99
|
+
image_add_default_volumes(:build_dir)
|
100
|
+
end
|
101
|
+
|
102
|
+
def image_add_default_volumes(type)
|
103
|
+
(dimg.config.public_send("_#{type}_mount").map(&:to) +
|
93
104
|
from_image.labels.select { |l, _| l == "dapp-#{type}-dir" }.map { |_, value| value.split(';') }.flatten).each do |path|
|
94
105
|
absolute_path = File.expand_path(File.join('/', path))
|
95
|
-
tmp_path =
|
106
|
+
tmp_path = dimg.send("#{type}_path", 'mount', absolute_path[1..-1]).tap(&:mkpath)
|
96
107
|
image.add_volume "#{tmp_path}:#{absolute_path}"
|
97
108
|
end
|
98
109
|
end
|
99
110
|
|
100
111
|
def image_should_be_build?
|
101
|
-
!empty? ||
|
112
|
+
!empty? || dimg.project.log_verbose?
|
102
113
|
end
|
103
114
|
|
104
115
|
def empty?
|
@@ -113,13 +124,7 @@ module Dapp
|
|
113
124
|
if empty?
|
114
125
|
prev_stage.signature
|
115
126
|
else
|
116
|
-
|
117
|
-
args << prev_stage.signature unless prev_stage.nil?
|
118
|
-
args << application.build_cache_version
|
119
|
-
args << builder_checksum
|
120
|
-
args.concat(dependencies.flatten)
|
121
|
-
|
122
|
-
hashsum args
|
127
|
+
hashsum [prev_stage.signature, builder_checksum, *dependencies.flatten]
|
123
128
|
end
|
124
129
|
end
|
125
130
|
|
@@ -137,7 +142,7 @@ module Dapp
|
|
137
142
|
end
|
138
143
|
|
139
144
|
def should_be_skipped?
|
140
|
-
image.tagged? && !
|
145
|
+
image.tagged? && !dimg.project.log_verbose? && !should_be_introspected?
|
141
146
|
end
|
142
147
|
|
143
148
|
def should_be_tagged?
|
@@ -150,7 +155,7 @@ module Dapp
|
|
150
155
|
end
|
151
156
|
|
152
157
|
def image_name
|
153
|
-
|
158
|
+
dimg.stage_cache_format % { signature: signature }
|
154
159
|
end
|
155
160
|
|
156
161
|
def from_image
|
@@ -164,15 +169,15 @@ module Dapp
|
|
164
169
|
end
|
165
170
|
|
166
171
|
def dependencies_files_checksum(regs)
|
167
|
-
regs.map! { |reg| File.directory?(File.join(
|
168
|
-
unless (files = regs.map { |reg| Dir[File.join(
|
172
|
+
regs.map! { |reg| File.directory?(File.join(dimg.project.path, reg)) ? File.join(reg, '**', '*') : reg }
|
173
|
+
unless (files = regs.map { |reg| Dir[File.join(dimg.project.path, reg)].map { |f| File.read(f) if File.file?(f) } }).empty?
|
169
174
|
hashsum files
|
170
175
|
end
|
171
176
|
end
|
172
177
|
|
173
178
|
def change_options
|
174
179
|
@change_options ||= begin
|
175
|
-
|
180
|
+
dimg.config._docker._change_options.to_h.delete_if do |_, val|
|
176
181
|
val.nil? || (val.respond_to?(:empty?) && val.empty?)
|
177
182
|
end
|
178
183
|
end
|