dapp 0.10.2 → 0.36.24
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 +5 -5
- data/bin/dapp +77 -15
- data/config/en/common.yml +20 -11
- data/config/en/net_status.yml +108 -27
- data/lib/dapp/cli/cli.rb +1 -0
- data/lib/dapp/cli/command/base.rb +111 -0
- data/lib/dapp/cli/command/sample/base.rb +28 -0
- data/lib/dapp/cli/command/sample/create.rb +24 -0
- data/lib/dapp/cli/command/sample/list.rb +25 -0
- data/lib/dapp/cli/command/sample.rb +20 -0
- data/lib/dapp/cli/command/slug.rb +26 -0
- data/lib/dapp/cli/command/update.rb +65 -0
- data/lib/dapp/cli/options/ssh.rb +18 -0
- data/lib/dapp/cli/options/tag.rb +51 -0
- data/lib/dapp/cli.rb +11 -3
- data/lib/dapp/config/config.rb +21 -0
- data/lib/dapp/config/directive/base.rb +100 -3
- data/lib/dapp/core_ext/hash.rb +14 -0
- data/lib/dapp/core_ext/pathname.rb +6 -4
- data/lib/dapp/dapp/chef.rb +1 -9
- data/lib/dapp/dapp/command/common.rb +24 -0
- data/lib/dapp/dapp/command/sample/common.rb +54 -0
- data/lib/dapp/dapp/command/sample/create.rb +57 -0
- data/lib/dapp/dapp/command/sample/list.rb +13 -0
- data/lib/dapp/dapp/command/slug.rb +11 -0
- data/lib/dapp/dapp/dapp_config.rb +85 -0
- data/lib/dapp/dapp/dappfile.rb +108 -27
- data/lib/dapp/dapp/deps/base.rb +9 -32
- data/lib/dapp/dapp/deps/common.rb +26 -0
- data/lib/dapp/dapp/deps/gitartifact.rb +2 -20
- data/lib/dapp/dapp/deps/toolchain.rb +11 -0
- data/lib/dapp/dapp/git_artifact.rb +6 -4
- data/lib/dapp/dapp/lock.rb +6 -5
- data/lib/dapp/dapp/logging/base.rb +32 -20
- data/lib/dapp/dapp/logging/i18n.rb +5 -1
- data/lib/dapp/dapp/logging/process.rb +6 -6
- data/lib/dapp/dapp/option_tags.rb +98 -0
- data/lib/dapp/dapp/ruby2go.rb +130 -0
- data/lib/dapp/dapp/sentry.rb +97 -0
- data/lib/dapp/dapp/shellout/base.rb +26 -18
- data/lib/dapp/dapp/shellout/streaming.rb +2 -2
- data/lib/dapp/dapp/slug.rb +12 -0
- data/lib/dapp/dapp/ssh_agent.rb +25 -7
- data/lib/dapp/dapp.rb +192 -41
- data/lib/dapp/deployment.rb +1 -0
- data/lib/dapp/dimg/artifact.rb +12 -4
- data/lib/dapp/dimg/build/stage/artifact_base.rb +26 -30
- data/lib/dapp/dimg/build/stage/artifact_default.rb +50 -28
- data/lib/dapp/dimg/build/stage/base.rb +187 -52
- data/lib/dapp/dimg/build/stage/before_install.rb +4 -15
- data/lib/dapp/dimg/build/stage/before_install_artifact.rb +4 -0
- data/lib/dapp/dimg/build/stage/before_setup.rb +1 -20
- data/lib/dapp/dimg/build/stage/build_artifact.rb +1 -20
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +5 -4
- data/lib/dapp/dimg/build/stage/from.rb +62 -9
- data/lib/dapp/dimg/build/stage/ga_archive.rb +14 -1
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +1 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +5 -35
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +15 -34
- data/lib/dapp/dimg/build/stage/ga_related_base.rb +21 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +22 -11
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/install/install.rb +1 -19
- data/lib/dapp/dimg/build/stage/instructions.rb +27 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +19 -7
- data/lib/dapp/dimg/build/stage/mod/logging.rb +15 -19
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +24 -1
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +6 -2
- data/lib/dapp/dimg/build/stage/setup/setup.rb +1 -19
- data/lib/dapp/dimg/builder/ansible.rb +5 -0
- data/lib/dapp/dimg/builder/chef/cookbook.rb +8 -8
- data/lib/dapp/dimg/builder/chef.rb +29 -16
- data/lib/dapp/dimg/builder/none.rb +1 -34
- data/lib/dapp/dimg/builder/ruby2go.rb +57 -0
- data/lib/dapp/dimg/builder/shell.rb +1 -20
- data/lib/dapp/dimg/cli/cli.rb +2 -1
- data/lib/dapp/dimg/cli/command/base.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/bp.rb +60 -0
- data/lib/dapp/dimg/cli/command/dimg/build.rb +43 -0
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/export.rb +9 -4
- data/lib/dapp/dimg/cli/{build_context → command/dimg/build_context}/import.rb +4 -4
- data/lib/dapp/dimg/cli/{build_context.rb → command/dimg/build_context.rb} +5 -5
- data/lib/dapp/dimg/cli/{cleanup.rb → command/dimg/cleanup.rb} +4 -6
- data/lib/dapp/dimg/cli/command/dimg/cleanup_repo.rb +47 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_repo.rb +36 -0
- data/lib/dapp/dimg/cli/{list.rb → command/dimg/list.rb} +6 -3
- data/lib/dapp/dimg/cli/{mrproper.rb → command/dimg/mrproper.rb} +4 -4
- data/lib/dapp/dimg/cli/command/dimg/push.rb +39 -0
- data/lib/dapp/dimg/cli/{run.rb → command/dimg/run.rb} +30 -15
- data/lib/dapp/dimg/cli/{spush.rb → command/dimg/spush.rb} +4 -4
- data/lib/dapp/dimg/cli/{stage_image.rb → command/dimg/stage_image.rb} +12 -3
- data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +13 -0
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_local.rb +13 -9
- data/lib/dapp/dimg/cli/{stages → command/dimg/stages}/cleanup_repo.rb +6 -8
- data/lib/dapp/dimg/cli/command/dimg/stages/flush_local.rb +21 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/flush_repo.rb +28 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/pull.rb +34 -0
- data/lib/dapp/dimg/cli/command/dimg/stages/push.rb +30 -0
- data/lib/dapp/dimg/cli/command/dimg/stages.rb +22 -0
- data/lib/dapp/dimg/cli/command/dimg/tag.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg.rb +31 -0
- data/lib/dapp/dimg/cli/options/introspection.rb +45 -0
- data/lib/dapp/dimg/config/config.rb +24 -0
- data/lib/dapp/dimg/config/directive/artifact.rb +13 -15
- data/lib/dapp/dimg/config/directive/artifact_base.rb +13 -8
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +12 -0
- data/lib/dapp/dimg/config/directive/artifact_group.rb +60 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +203 -0
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +217 -0
- data/lib/dapp/dimg/config/directive/dimg.rb +36 -0
- data/lib/dapp/dimg/config/directive/dimg_group.rb +73 -0
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +46 -0
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +5 -0
- data/lib/dapp/dimg/config/directive/docker/base.rb +2 -3
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +4 -4
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +24 -5
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +23 -12
- data/lib/dapp/dimg/config/directive/mount.rb +11 -3
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +2 -2
- data/lib/dapp/dimg/dapp/command/bp.rb +3 -5
- data/lib/dapp/dimg/dapp/command/build.rb +4 -6
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +2 -2
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +14 -14
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +28 -23
- data/lib/dapp/dimg/dapp/command/cleanup.rb +4 -11
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +143 -0
- data/lib/dapp/dimg/dapp/command/common.rb +148 -38
- data/lib/dapp/dimg/dapp/command/flush_local.rb +25 -0
- data/lib/dapp/dimg/dapp/command/flush_repo.rb +25 -0
- data/lib/dapp/dimg/dapp/command/list.rb +1 -1
- data/lib/dapp/dimg/dapp/command/mrproper.rb +16 -63
- data/lib/dapp/dimg/dapp/command/push.rb +11 -16
- data/lib/dapp/dimg/dapp/command/ruby2go_cleanup.rb +48 -0
- data/lib/dapp/dimg/dapp/command/run.rb +4 -4
- data/lib/dapp/dimg/dapp/command/spush.rb +4 -5
- data/lib/dapp/dimg/dapp/command/stage_image.rb +2 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +13 -115
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +23 -102
- data/lib/dapp/dimg/dapp/command/stages/common.rb +57 -39
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +13 -7
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +14 -8
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +4 -13
- data/lib/dapp/dimg/dapp/command/stages/push.rb +4 -9
- data/lib/dapp/dimg/dapp/command/tag.rb +4 -6
- data/lib/dapp/dimg/dapp/config_artifact_group.rb +20 -0
- data/lib/dapp/dimg/dapp/dapp.rb +40 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +43 -0
- data/lib/dapp/dimg/dapp/dimg.rb +41 -0
- data/lib/dapp/dimg/dimg/git_artifact.rb +25 -11
- data/lib/dapp/dimg/dimg/path.rb +7 -9
- data/lib/dapp/dimg/dimg/stages.rb +27 -15
- data/lib/dapp/dimg/dimg.rb +172 -69
- data/lib/dapp/dimg/docker_registry/base.rb +31 -74
- data/lib/dapp/dimg/docker_registry/dimg.rb +55 -0
- data/lib/dapp/dimg/docker_registry.rb +5 -23
- data/lib/dapp/dimg/error/build.rb +1 -1
- data/lib/dapp/dimg/error/chef.rb +1 -5
- data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
- data/lib/dapp/dimg/error/dimg.rb +1 -1
- data/lib/dapp/dimg/error/lock.rb +1 -1
- data/lib/dapp/dimg/error/registry.rb +1 -1
- data/lib/dapp/dimg/error/rugged.rb +1 -1
- data/lib/dapp/dimg/error/tar_writer.rb +1 -1
- data/lib/dapp/dimg/git_artifact.rb +195 -179
- data/lib/dapp/dimg/git_repo/base.rb +49 -45
- data/lib/dapp/dimg/git_repo/local.rb +45 -0
- data/lib/dapp/dimg/git_repo/own.rb +3 -31
- data/lib/dapp/dimg/git_repo/remote.rb +65 -26
- data/lib/dapp/dimg/image/argument.rb +15 -50
- data/lib/dapp/dimg/image/dimg.rb +15 -0
- data/lib/dapp/dimg/image/scratch.rb +35 -9
- data/lib/dapp/dimg/image/stage.rb +223 -44
- data/lib/dapp/dimg/lock/file.rb +4 -4
- data/lib/dapp/downloader.rb +117 -0
- data/lib/dapp/error/base.rb +1 -5
- data/lib/dapp/error/command.rb +5 -0
- data/lib/dapp/error/config.rb +5 -0
- data/lib/dapp/error/dapp.rb +1 -1
- data/lib/dapp/error/dappfile.rb +1 -1
- data/lib/dapp/error/default.rb +11 -0
- data/lib/dapp/error/mod/user.rb +11 -0
- data/lib/dapp/error/shellout.rb +1 -1
- data/lib/dapp/exception/base.rb +1 -1
- data/lib/dapp/helper/case_conversion.rb +17 -0
- data/lib/dapp/helper/cli.rb +18 -7
- data/lib/dapp/helper/net_status.rb +5 -1
- data/lib/dapp/helper/sha256.rb +1 -1
- data/lib/dapp/helper/tar.rb +31 -0
- data/lib/dapp/helper/trivia.rb +40 -1
- data/lib/dapp/helper/url.rb +23 -0
- data/lib/dapp/helper/yaml.rb +24 -0
- data/lib/dapp/kube/cli/cli.rb +1 -0
- data/lib/dapp/kube/cli/command/base.rb +14 -0
- data/lib/dapp/kube/cli/command/kube/chart_create.rb +19 -0
- data/lib/dapp/kube/cli/command/kube/deploy.rb +80 -0
- data/lib/dapp/kube/cli/command/kube/dismiss.rb +31 -0
- data/lib/dapp/kube/cli/command/kube/lint.rb +53 -0
- data/lib/dapp/kube/cli/command/kube/minikube_setup.rb +19 -0
- data/lib/dapp/kube/cli/command/kube/render.rb +63 -0
- data/lib/dapp/kube/cli/command/kube/secret_edit.rb +30 -0
- data/lib/dapp/kube/cli/command/kube/secret_extract.rb +39 -0
- data/lib/dapp/kube/cli/command/kube/secret_generate.rb +34 -0
- data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +16 -0
- data/lib/dapp/kube/cli/command/kube/secret_regenerate.rb +29 -0
- data/lib/dapp/kube/cli/command/kube/value_get.rb +47 -0
- data/lib/dapp/kube/cli/command/kube.rb +28 -0
- data/lib/dapp/kube/dapp/command/chart_create.rb +103 -0
- data/lib/dapp/kube/dapp/command/common.rb +379 -0
- data/lib/dapp/kube/dapp/command/deploy.rb +351 -0
- data/lib/dapp/kube/dapp/command/dismiss.rb +50 -0
- data/lib/dapp/kube/dapp/command/lint.rb +69 -0
- data/lib/dapp/kube/dapp/command/minikube_setup.rb +402 -0
- data/lib/dapp/kube/dapp/command/render.rb +54 -0
- data/lib/dapp/kube/dapp/command/ruby2go.rb +17 -0
- data/lib/dapp/kube/dapp/command/secret_edit.rb +21 -0
- data/lib/dapp/kube/dapp/command/secret_extract.rb +17 -0
- data/lib/dapp/kube/dapp/command/secret_generate.rb +21 -0
- data/lib/dapp/kube/dapp/command/secret_key_generate.rb +13 -0
- data/lib/dapp/kube/dapp/command/secret_regenerate.rb +13 -0
- data/lib/dapp/kube/dapp/command/value_get.rb +32 -0
- data/lib/dapp/kube/dapp/dapp.rb +26 -0
- data/lib/dapp/kube/error/default.rb +7 -0
- data/lib/dapp/kube/helm/release.rb +189 -0
- data/lib/dapp/kube/helm/values.rb +148 -0
- data/lib/dapp/kube/helm.rb +5 -0
- data/lib/dapp/kube/kubernetes/client/error.rb +43 -0
- data/lib/dapp/kube/kubernetes/client/resource/base.rb +33 -0
- data/lib/dapp/kube/kubernetes/client/resource/deployment.rb +11 -0
- data/lib/dapp/kube/kubernetes/client/resource/event.rb +8 -0
- data/lib/dapp/kube/kubernetes/client/resource/job.rb +27 -0
- data/lib/dapp/kube/kubernetes/client/resource/pod.rb +62 -0
- data/lib/dapp/kube/kubernetes/client/resource/replicaset.rb +8 -0
- data/lib/dapp/kube/kubernetes/client.rb +314 -0
- data/lib/dapp/kube/kubernetes/config.rb +132 -0
- data/lib/dapp/kube/kubernetes/error.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/base.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/container.rb +103 -0
- data/lib/dapp/kube/kubernetes/manager/deployment.rb +212 -0
- data/lib/dapp/kube/kubernetes/manager/job.rb +65 -0
- data/lib/dapp/kube/kubernetes/manager/pod.rb +69 -0
- data/lib/dapp/kube/kubernetes.rb +6 -0
- data/lib/dapp/kube/secret.rb +93 -0
- data/lib/dapp/kube.rb +1 -0
- data/lib/dapp/version.rb +2 -2
- data/lib/dapp.rb +155 -61
- metadata +208 -61
- data/lib/dapp/cli/base.rb +0 -63
- data/lib/dapp/config/base.rb +0 -54
- data/lib/dapp/config/error/config.rb +0 -7
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +0 -27
- data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +0 -20
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/build/stage/mod/git_artifact_dependencies.rb +0 -23
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -32
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -22
- data/lib/dapp/dimg/cli/base.rb +0 -16
- data/lib/dapp/dimg/cli/bp.rb +0 -37
- data/lib/dapp/dimg/cli/build.rb +0 -64
- data/lib/dapp/dimg/cli/dimg.rb +0 -30
- data/lib/dapp/dimg/cli/push.rb +0 -61
- data/lib/dapp/dimg/cli/stages/flush_local.rb +0 -23
- data/lib/dapp/dimg/cli/stages/flush_repo.rb +0 -24
- data/lib/dapp/dimg/cli/stages/pull.rb +0 -28
- data/lib/dapp/dimg/cli/stages/push.rb +0 -24
- data/lib/dapp/dimg/cli/stages.rb +0 -22
- data/lib/dapp/dimg/cli/tag.rb +0 -24
- data/lib/dapp/dimg/config/artifact_dimg.rb +0 -17
- data/lib/dapp/dimg/config/artifact_group.rb +0 -43
- data/lib/dapp/dimg/config/base.rb +0 -7
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +0 -179
- data/lib/dapp/dimg/config/dimg/validation.rb +0 -126
- data/lib/dapp/dimg/config/dimg.rb +0 -24
- data/lib/dapp/dimg/config/dimg_group.rb +0 -61
- data/lib/dapp/dimg/config/dimg_group_base.rb +0 -54
- data/lib/dapp/dimg/config/dimg_group_main.rb +0 -22
- data/lib/dapp/dimg/dapp/command.rb +0 -21
- data/lib/dapp/dimg/dimg/tags.rb +0 -65
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +0 -63
- data/lib/dapp/dimg/docker_registry/base/request.rb +0 -34
- data/lib/dapp/dimg/docker_registry/default.rb +0 -18
- data/lib/dapp/dimg/error/base.rb +0 -7
- data/lib/dapp/dimg/error/config.rb +0 -7
- data/lib/dapp/dimg/exception/introspect_image.rb +0 -7
- data/lib/dapp/dimg/image/docker.rb +0 -134
data/lib/dapp/dimg/artifact.rb
CHANGED
|
@@ -1,11 +1,19 @@
|
|
|
1
1
|
module Dapp
|
|
2
2
|
module Dimg
|
|
3
3
|
class Artifact < Dimg
|
|
4
|
+
def name
|
|
5
|
+
dapp.consistent_uniq_slugify(config._name) unless config._name.nil?
|
|
6
|
+
end
|
|
7
|
+
|
|
4
8
|
def after_stages_build!
|
|
5
9
|
end
|
|
6
10
|
|
|
7
|
-
def
|
|
8
|
-
dapp.
|
|
11
|
+
def stage_should_be_introspected_before_build?(name)
|
|
12
|
+
dapp.options[:introspect_artifact_before] == name
|
|
13
|
+
end
|
|
14
|
+
|
|
15
|
+
def stage_should_be_introspected_after_build?(name)
|
|
16
|
+
dapp.options[:introspect_artifact_stage] == name
|
|
9
17
|
end
|
|
10
18
|
|
|
11
19
|
def artifact?
|
|
@@ -16,8 +24,8 @@ module Dapp
|
|
|
16
24
|
false
|
|
17
25
|
end
|
|
18
26
|
|
|
19
|
-
def
|
|
20
|
-
|
|
27
|
+
def last_stage_class
|
|
28
|
+
Build::Stage::BuildArtifact
|
|
21
29
|
end
|
|
22
30
|
end # Artifact
|
|
23
31
|
end # Dimg
|
|
@@ -4,27 +4,27 @@ module Dapp
|
|
|
4
4
|
module Stage
|
|
5
5
|
class ArtifactBase < Base
|
|
6
6
|
def dependencies
|
|
7
|
-
artifacts_signatures
|
|
7
|
+
@dependencies ||= artifacts_signatures
|
|
8
8
|
end
|
|
9
9
|
|
|
10
10
|
def prepare_image
|
|
11
|
-
super
|
|
12
|
-
|
|
13
|
-
|
|
14
|
-
|
|
15
|
-
|
|
16
|
-
|
|
11
|
+
super do
|
|
12
|
+
artifacts_dimgs_build!
|
|
13
|
+
artifacts_labels = {}
|
|
14
|
+
artifacts.each do |artifact|
|
|
15
|
+
apply_artifact(artifact, image)
|
|
16
|
+
artifacts_labels["dapp-artifact-#{artifact[:dimg].name}".to_sym] = artifact[:dimg].last_stage.image.built_id
|
|
17
|
+
end
|
|
18
|
+
image.add_service_change_label artifacts_labels
|
|
17
19
|
end
|
|
18
|
-
image.add_service_change_label artifacts_labels
|
|
19
20
|
end
|
|
20
21
|
|
|
21
22
|
def artifacts
|
|
22
23
|
@artifacts ||= begin
|
|
23
24
|
dimg.config.public_send("_#{name}").map do |artifact|
|
|
24
|
-
artifact_dimg =
|
|
25
|
-
|
|
26
|
-
|
|
27
|
-
{ name: artifact._config._name, options: artifact._artifact_options, dimg: artifact_dimg }
|
|
25
|
+
artifact_dimg = dimg.dapp.artifact_dimg(config: artifact._config,
|
|
26
|
+
ignore_signature_auto_calculation: dimg.ignore_signature_auto_calculation)
|
|
27
|
+
{ options: artifact._artifact_options, dimg: artifact_dimg }
|
|
28
28
|
end
|
|
29
29
|
end
|
|
30
30
|
end
|
|
@@ -48,29 +48,25 @@ module Dapp
|
|
|
48
48
|
end
|
|
49
49
|
|
|
50
50
|
def artifacts_dimgs_build!
|
|
51
|
-
artifacts.each do |artifact|
|
|
52
|
-
process = dimg.dapp.t(code: 'process.artifact_building', data: { name: artifact[:name
|
|
53
|
-
dimg.dapp.log_secondary_process(process
|
|
54
|
-
short: !dimg.dapp.log_verbose?,
|
|
55
|
-
quiet: dimg.artifact? && !dimg.dapp.log_verbose?) do
|
|
56
|
-
dimg.dapp.with_log_indent do
|
|
57
|
-
artifact[:dimg].build!
|
|
58
|
-
end
|
|
59
|
-
end
|
|
51
|
+
artifacts.uniq { |artifact| artifact[:dimg] }.each do |artifact|
|
|
52
|
+
process = dimg.dapp.t(code: 'process.artifact_building', data: { name: artifact[:dimg].name })
|
|
53
|
+
dimg.dapp.log_secondary_process(process) { artifact[:dimg].build! }
|
|
60
54
|
end
|
|
61
55
|
end
|
|
62
56
|
|
|
63
|
-
def run_artifact_dimg(artifact_dimg,
|
|
57
|
+
def run_artifact_dimg(artifact_dimg, commands)
|
|
64
58
|
docker_options = ['--rm',
|
|
65
|
-
"--volume
|
|
66
|
-
"--volumes-from
|
|
67
|
-
"--
|
|
68
|
-
|
|
69
|
-
|
|
70
|
-
|
|
71
|
-
|
|
72
|
-
artifact_dimg.run(docker_options, [%(-ec '#{dimg.dapp.shellout_pack(commands)}')])
|
|
59
|
+
"--volume=#{dimg.tmp_path('artifact', artifact_dimg.name )}:#{artifact_dimg.container_tmp_path(artifact_dimg.name)}",
|
|
60
|
+
"--volumes-from=#{dimg.dapp.toolchain_container}",
|
|
61
|
+
"--volumes-from=#{dimg.dapp.base_container}",
|
|
62
|
+
"--entrypoint=#{dimg.dapp.bash_bin}"]
|
|
63
|
+
dimg.dapp.log_secondary_process(dimg.dapp.t(code: 'process.artifact_copy', data:
|
|
64
|
+
{ name: artifact_dimg.name }), short: true) do
|
|
65
|
+
artifact_dimg.run(docker_options, ["-ec", dimg.dapp.shellout_pack(commands)])
|
|
73
66
|
end
|
|
67
|
+
rescue Error::Dimg => e
|
|
68
|
+
raise unless e.net_status[:code] == :dimg_not_run
|
|
69
|
+
raise Error::Build, code: :export_failed, data: { artifact_name: artifact_dimg.name }
|
|
74
70
|
end
|
|
75
71
|
# rubocop:enable Metrics/AbcSize
|
|
76
72
|
end # ArtifactBase
|
|
@@ -8,7 +8,6 @@ module Dapp
|
|
|
8
8
|
def apply_artifact(artifact, image)
|
|
9
9
|
return if dimg.dapp.dry_run?
|
|
10
10
|
|
|
11
|
-
artifact_name = artifact[:name]
|
|
12
11
|
artifact_dimg = artifact[:dimg]
|
|
13
12
|
cwd = artifact[:options][:cwd]
|
|
14
13
|
include_paths = artifact[:options][:include_paths]
|
|
@@ -17,12 +16,14 @@ module Dapp
|
|
|
17
16
|
group = artifact[:options][:group]
|
|
18
17
|
to = artifact[:options][:to]
|
|
19
18
|
|
|
20
|
-
|
|
21
|
-
run_artifact_dimg(artifact_dimg, artifact_name, command)
|
|
19
|
+
export_folder_name = SecureRandom.uuid
|
|
22
20
|
|
|
23
|
-
command = safe_cp(
|
|
21
|
+
command = safe_cp(cwd, artifact_dimg.container_tmp_path(artifact_dimg.name, export_folder_name).to_s, nil, nil, include_paths, exclude_paths)
|
|
22
|
+
run_artifact_dimg(artifact_dimg, command)
|
|
23
|
+
|
|
24
|
+
command = safe_cp(dimg.container_tmp_path('artifact', artifact_dimg.name, export_folder_name).to_s, to, owner, group, include_paths, exclude_paths)
|
|
24
25
|
image.add_command command
|
|
25
|
-
image.add_volume "#{dimg.tmp_path('artifact',
|
|
26
|
+
image.add_volume "#{dimg.tmp_path('artifact', artifact_dimg.name)}:#{dimg.container_tmp_path('artifact', artifact_dimg.name)}:ro"
|
|
26
27
|
end
|
|
27
28
|
# rubocop:enable Metrics/AbcSize, Metrics/MethodLength
|
|
28
29
|
|
|
@@ -30,32 +31,53 @@ module Dapp
|
|
|
30
31
|
|
|
31
32
|
# rubocop:disable Metrics/ParameterLists
|
|
32
33
|
def safe_cp(from, to, owner, group, include_paths = [], exclude_paths = [])
|
|
33
|
-
|
|
34
|
-
|
|
35
|
-
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
39
|
-
"if [[ -d #{File.join(from_, path_)} ]] || [[ -f #{File.join(from_, path_)} ]]; then " \
|
|
40
|
-
"#{dimg.dapp.find_bin} #{File.join(from_, path_)} #{excludes} -type f -exec " \
|
|
41
|
-
"#{dimg.dapp.bash_bin} -ec '#{dimg.dapp.install_bin} -D #{credentials} \"{}\" " \
|
|
42
|
-
"\"#{File.join(to, '$(echo "{}" | ' \
|
|
43
|
-
"#{dimg.dapp.sed_bin} -e \"s/^#{from_.gsub('/', '\\/')}\\///g\")")}\"' \\; ;" \
|
|
44
|
-
'fi'
|
|
45
|
-
end
|
|
34
|
+
''.tap do |cmd|
|
|
35
|
+
cmd << "#{dimg.dapp.mkdir_bin} -p #{File.dirname(to)}"
|
|
36
|
+
cmd << ' && '
|
|
37
|
+
cmd << dimg.dapp.rsync_bin
|
|
38
|
+
cmd << ' --archive --links --inplace'
|
|
39
|
+
cmd << " --chown=#{owner}:#{group}" if owner or group
|
|
46
40
|
|
|
47
|
-
|
|
48
|
-
|
|
49
|
-
|
|
50
|
-
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
41
|
+
if include_paths.any?
|
|
42
|
+
# Если указали include_paths — это означает, что надо копировать
|
|
43
|
+
# только указанные пути. Поэтому exclude_paths в приоритете, т.к. в данном режиме
|
|
44
|
+
# exclude_paths может относится только к путям, указанным в include_paths.
|
|
45
|
+
# При этом случай, когда в include_paths указали более специальный путь, чем в exclude_paths,
|
|
46
|
+
# будет обрабатываться в пользу exclude, этот путь не скопируется.
|
|
47
|
+
exclude_paths.each do |p|
|
|
48
|
+
cmd << " --filter='-/ #{File.join(from, p)}'"
|
|
49
|
+
end
|
|
50
|
+
|
|
51
|
+
include_paths.each do |p|
|
|
52
|
+
target_path = File.join(from, p)
|
|
55
53
|
|
|
56
|
-
|
|
57
|
-
|
|
54
|
+
# Генерируем разрешающее правило для каждого элемента пути
|
|
55
|
+
Pathname.new(target_path).descend do |path_part|
|
|
56
|
+
cmd << " --filter='+/ #{path_part}'"
|
|
57
|
+
end
|
|
58
|
+
|
|
59
|
+
# * На данный момент не знаем директорию или файл имел в виду пользователь,
|
|
60
|
+
# поэтому подставляем фильтры для обоих возможных случаев.
|
|
61
|
+
# * Автоматом подставляем паттерн ** для включения файлов, содержащихся в
|
|
62
|
+
# директории, которую пользователь указал в include_paths.
|
|
63
|
+
cmd << " --filter='+/ #{target_path}'"
|
|
64
|
+
cmd << " --filter='+/ #{File.join(target_path, '**')}'"
|
|
65
|
+
end
|
|
66
|
+
|
|
67
|
+
# Все что не подошло по include — исключается
|
|
68
|
+
cmd << " --filter='-/ #{File.join(from, '**')}'"
|
|
69
|
+
else
|
|
70
|
+
exclude_paths.each do |p|
|
|
71
|
+
cmd << " --filter='-/ #{File.join(from, p)}'"
|
|
72
|
+
end
|
|
73
|
+
end
|
|
74
|
+
|
|
75
|
+
# Слэш после from — это инструкция rsync'у для копирования
|
|
76
|
+
# содержимого директории from, а не самой директории.
|
|
77
|
+
cmd << " $(if [ -d #{from} ] ; then echo #{from}/ ; else echo #{from} ; fi) #{to}"
|
|
78
|
+
end
|
|
58
79
|
end
|
|
80
|
+
# rubocop:enable Metrics/ParameterLists
|
|
59
81
|
end # ArtifactDefault
|
|
60
82
|
end # Stage
|
|
61
83
|
end # Build
|
|
@@ -17,6 +17,39 @@ module Dapp
|
|
|
17
17
|
@next_stage.prev_stage = self
|
|
18
18
|
end
|
|
19
19
|
|
|
20
|
+
def get_ruby2go_state_hash
|
|
21
|
+
{}.tap {|hash|
|
|
22
|
+
# NOTICE: Delete this when stage has been moved to go.
|
|
23
|
+
# NOTICE: This is data for build.StubStage and build.StubImage.
|
|
24
|
+
|
|
25
|
+
hash["Image"] = {
|
|
26
|
+
"Labels" => image.labels
|
|
27
|
+
.map{|k,v| [k.to_s, v.to_s]}
|
|
28
|
+
.to_h,
|
|
29
|
+
"ServiceChangeLabels" => image.send(:service_change_options)
|
|
30
|
+
.fetch(:label, {})
|
|
31
|
+
.map{|k,v| [k.to_s, v.to_s]}
|
|
32
|
+
.to_h,
|
|
33
|
+
}
|
|
34
|
+
|
|
35
|
+
if prev_stage
|
|
36
|
+
hash["PrevStage"] = prev_stage.get_ruby2go_state_hash
|
|
37
|
+
end
|
|
38
|
+
}
|
|
39
|
+
end
|
|
40
|
+
|
|
41
|
+
def set_ruby2go_state_hash(hash)
|
|
42
|
+
if prev_stage
|
|
43
|
+
prev_stage.set_ruby2go_state_hash(hash["PrevStage"])
|
|
44
|
+
end
|
|
45
|
+
|
|
46
|
+
# NOTICE: This is data from build.StubImage.
|
|
47
|
+
|
|
48
|
+
hash["Image"]["ServiceChangeLabels"].each do |k, v|
|
|
49
|
+
image.add_service_change_label(k.to_sym => v)
|
|
50
|
+
end
|
|
51
|
+
end
|
|
52
|
+
|
|
20
53
|
# rubocop:disable Metrics/PerceivedComplexity
|
|
21
54
|
def build_lock!
|
|
22
55
|
return yield if dimg.dapp.dry_run?
|
|
@@ -27,11 +60,14 @@ module Dapp
|
|
|
27
60
|
no_lock = false
|
|
28
61
|
|
|
29
62
|
dimg.dapp.lock("#{dimg.dapp.name}.image.#{image.name}") do
|
|
30
|
-
image.
|
|
63
|
+
image.reset_image_inspect
|
|
31
64
|
|
|
32
65
|
if image_should_be_locked?
|
|
33
66
|
yield
|
|
34
67
|
else
|
|
68
|
+
stage = self
|
|
69
|
+
stage.renew until (stage = stage.next_stage).nil?
|
|
70
|
+
|
|
35
71
|
no_lock = true
|
|
36
72
|
end
|
|
37
73
|
end
|
|
@@ -47,17 +83,11 @@ module Dapp
|
|
|
47
83
|
end
|
|
48
84
|
# rubocop:enable Metrics/MethodLength, Metrics/PerceivedComplexity
|
|
49
85
|
|
|
50
|
-
# rubocop:disable Metrics/CyclomaticComplexity
|
|
51
86
|
def build!
|
|
52
|
-
return if build_should_be_skipped?
|
|
53
87
|
prev_stage.build! if prev_stage
|
|
54
|
-
if
|
|
55
|
-
|
|
56
|
-
log_image_build(&method(:image_build))
|
|
57
|
-
end
|
|
58
|
-
dimg.introspect_image!(image: image.built_id, options: image.send(:prepared_options)) if should_be_introspected?
|
|
88
|
+
renew if should_be_renewed?
|
|
89
|
+
image_build
|
|
59
90
|
end
|
|
60
|
-
# rubocop:enable Metrics/CyclomaticComplexity
|
|
61
91
|
|
|
62
92
|
def save_in_cache!
|
|
63
93
|
prev_stage.save_in_cache! if prev_stage
|
|
@@ -77,41 +107,78 @@ module Dapp
|
|
|
77
107
|
|
|
78
108
|
def prepare_image
|
|
79
109
|
return if dimg.dapp.dry_run?
|
|
80
|
-
image.add_volumes_from dimg.dapp.base_container
|
|
81
110
|
|
|
82
111
|
image_add_mounts
|
|
83
112
|
|
|
84
113
|
image.add_service_change_label dapp: dimg.stage_dapp_label
|
|
85
114
|
image.add_service_change_label 'dapp-version'.to_sym => ::Dapp::VERSION
|
|
86
115
|
image.add_service_change_label 'dapp-cache-version'.to_sym => ::Dapp::BUILD_CACHE_VERSION
|
|
116
|
+
image.add_service_change_label 'dapp-dimg'.to_sym => false
|
|
87
117
|
image.add_service_change_label 'dapp-dev-mode'.to_sym => true if dimg.dev_mode?
|
|
88
118
|
|
|
89
119
|
if dimg.dapp.ssh_auth_sock
|
|
90
120
|
image.add_volume "#{dimg.dapp.ssh_auth_sock}:/tmp/dapp-ssh-agent"
|
|
91
|
-
image.add_env
|
|
121
|
+
image.add_env SSH_AUTH_SOCK: '/tmp/dapp-ssh-agent'
|
|
92
122
|
end
|
|
93
123
|
|
|
94
124
|
yield if block_given?
|
|
95
125
|
end
|
|
96
126
|
|
|
97
127
|
def image_add_mounts
|
|
128
|
+
image_add_service_mounts
|
|
129
|
+
image_add_custom_mounts
|
|
130
|
+
|
|
131
|
+
image_add_mounts_labels
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def image_add_service_mounts
|
|
98
135
|
[:tmp_dir, :build_dir].each do |type|
|
|
99
136
|
next if (mounts = adding_mounts_by_type(type)).empty?
|
|
100
137
|
|
|
101
138
|
mounts.each do |path|
|
|
102
139
|
absolute_path = File.expand_path(File.join('/', path))
|
|
103
|
-
tmp_path = dimg.send(type, 'mount', absolute_path
|
|
140
|
+
tmp_path = dimg.send(type, 'mount', dimg.dapp.consistent_uniq_slugify(absolute_path)).tap(&:mkpath)
|
|
104
141
|
image.add_volume "#{tmp_path}:#{absolute_path}"
|
|
105
142
|
end
|
|
143
|
+
end
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
def image_add_custom_mounts
|
|
147
|
+
adding_custom_dir_mounts.each do |from, to_pathes|
|
|
148
|
+
FileUtils.mkdir_p(from) unless File.exist?(from)
|
|
149
|
+
to_pathes.tap(&:uniq!).map { |to_path| image.add_volume "#{from}:#{to_path}" }
|
|
150
|
+
image.add_service_change_label :"dapp-mount-custom-dir-#{from.gsub('/', '--')}" => to_pathes.join(';')
|
|
151
|
+
end
|
|
152
|
+
end
|
|
106
153
|
|
|
154
|
+
def image_add_mounts_labels
|
|
155
|
+
[:tmp_dir, :build_dir].each do |type|
|
|
156
|
+
next if (mounts = adding_mounts_by_type(type)).empty?
|
|
107
157
|
image.add_service_change_label :"dapp-mount-#{type.to_s.tr('_', '-')}" => mounts.join(';')
|
|
108
158
|
end
|
|
159
|
+
|
|
160
|
+
adding_custom_dir_mounts.each do |from, to_pathes|
|
|
161
|
+
image.add_service_change_label :"dapp-mount-custom-dir-#{from.gsub('/', '--')}" => to_pathes.join(';')
|
|
162
|
+
end
|
|
109
163
|
end
|
|
110
164
|
|
|
111
165
|
def adding_mounts_by_type(type)
|
|
112
166
|
(config_mounts_by_type(type) + labels_mounts_by_type(type)).uniq
|
|
113
167
|
end
|
|
114
168
|
|
|
169
|
+
def adding_custom_dir_mounts
|
|
170
|
+
config_custom_dir_mounts.in_depth_merge(labels_custom_dir_mounts)
|
|
171
|
+
end
|
|
172
|
+
|
|
173
|
+
def config_custom_dir_mounts
|
|
174
|
+
dimg.config._custom_dir_mount.reduce({}) do |mounts, mount|
|
|
175
|
+
from_path = File.expand_path(mount._from)
|
|
176
|
+
mounts[from_path] ||= []
|
|
177
|
+
mounts[from_path] << mount._to
|
|
178
|
+
mounts
|
|
179
|
+
end
|
|
180
|
+
end
|
|
181
|
+
|
|
115
182
|
def config_mounts_by_type(type)
|
|
116
183
|
dimg.config.public_send("_#{type}_mount").map(&:_to)
|
|
117
184
|
end
|
|
@@ -120,8 +187,11 @@ module Dapp
|
|
|
120
187
|
from_image.labels.select { |l, _| l == "dapp-mount-#{type.to_s.tr('_', '-')}" }.map { |_, value| value.split(';') }.flatten
|
|
121
188
|
end
|
|
122
189
|
|
|
123
|
-
def
|
|
124
|
-
|
|
190
|
+
def labels_custom_dir_mounts
|
|
191
|
+
from_image.labels.map do |label, value|
|
|
192
|
+
next unless label =~ /dapp-mount-custom-dir-(?<from>.+)/
|
|
193
|
+
[File.expand_path(Regexp.last_match(:from).gsub('--', '/')), value.split(';')]
|
|
194
|
+
end.compact.to_h
|
|
125
195
|
end
|
|
126
196
|
|
|
127
197
|
def empty?
|
|
@@ -133,18 +203,16 @@ module Dapp
|
|
|
133
203
|
end
|
|
134
204
|
|
|
135
205
|
def signature
|
|
136
|
-
|
|
137
|
-
|
|
138
|
-
|
|
139
|
-
|
|
140
|
-
|
|
141
|
-
|
|
142
|
-
|
|
143
|
-
|
|
144
|
-
args.concat(dependencies.flatten)
|
|
206
|
+
if empty?
|
|
207
|
+
prev_stage.signature
|
|
208
|
+
else
|
|
209
|
+
args = []
|
|
210
|
+
args << prev_stage.signature unless prev_stage.nil?
|
|
211
|
+
args << dimg.build_cache_version
|
|
212
|
+
args << builder_checksum
|
|
213
|
+
args.concat(dependencies.flatten)
|
|
145
214
|
|
|
146
|
-
|
|
147
|
-
end
|
|
215
|
+
hashsum args
|
|
148
216
|
end
|
|
149
217
|
end
|
|
150
218
|
|
|
@@ -156,25 +224,29 @@ module Dapp
|
|
|
156
224
|
end
|
|
157
225
|
|
|
158
226
|
def git_artifacts_dependencies
|
|
159
|
-
|
|
227
|
+
dimg.git_artifacts.map { |git_artifact| git_artifact.stage_dependencies_checksum(self) }
|
|
160
228
|
end
|
|
161
229
|
|
|
162
|
-
def
|
|
163
|
-
|
|
164
|
-
|
|
165
|
-
|
|
166
|
-
|
|
167
|
-
|
|
168
|
-
|
|
169
|
-
|
|
170
|
-
|
|
171
|
-
|
|
230
|
+
def layer_commit(git_artifact)
|
|
231
|
+
commits[git_artifact] ||= begin
|
|
232
|
+
if image.built?
|
|
233
|
+
image.labels[dimg.dapp.dimgstage_g_a_commit_label(git_artifact.paramshash)]
|
|
234
|
+
elsif g_a_stage? && !empty?
|
|
235
|
+
git_artifact.latest_commit
|
|
236
|
+
elsif prev_stage
|
|
237
|
+
prev_stage.layer_commit(git_artifact)
|
|
238
|
+
end
|
|
239
|
+
end
|
|
172
240
|
end
|
|
173
241
|
|
|
174
242
|
def dependencies
|
|
175
243
|
[]
|
|
176
244
|
end
|
|
177
245
|
|
|
246
|
+
def dependencies_discard
|
|
247
|
+
@dependencies = nil
|
|
248
|
+
end
|
|
249
|
+
|
|
178
250
|
def artifact?
|
|
179
251
|
false
|
|
180
252
|
end
|
|
@@ -183,28 +255,52 @@ module Dapp
|
|
|
183
255
|
false
|
|
184
256
|
end
|
|
185
257
|
|
|
186
|
-
|
|
187
|
-
|
|
188
|
-
|
|
189
|
-
|
|
190
|
-
|
|
258
|
+
protected
|
|
259
|
+
|
|
260
|
+
def renew
|
|
261
|
+
commits_discard
|
|
262
|
+
image_untag! if image_should_be_untagged?
|
|
263
|
+
image_reset
|
|
191
264
|
end
|
|
192
265
|
|
|
193
|
-
def
|
|
194
|
-
|
|
195
|
-
|
|
196
|
-
return stage if stage.g_a_stage?
|
|
197
|
-
end
|
|
266
|
+
def image_reset
|
|
267
|
+
Image::Stage.image_reset(image_name)
|
|
268
|
+
@image = nil
|
|
198
269
|
end
|
|
199
270
|
|
|
200
|
-
|
|
271
|
+
def image_untag!
|
|
272
|
+
return if dimg.dapp.dry_run?
|
|
273
|
+
image.untag!
|
|
274
|
+
end
|
|
201
275
|
|
|
202
276
|
def image_build
|
|
203
|
-
|
|
277
|
+
prepare_image if image_should_be_prepared?
|
|
278
|
+
|
|
279
|
+
introspect_image_before_build if image_should_be_introspected_before_build?
|
|
280
|
+
|
|
281
|
+
log_image_build do
|
|
282
|
+
dimg.dapp.log_process(log_name,
|
|
283
|
+
process: dimg.dapp.t(code: 'status.process.building'),
|
|
284
|
+
short: should_not_be_detailed?) { image.build! }
|
|
285
|
+
end unless empty?
|
|
286
|
+
|
|
287
|
+
introspect_image_after_build if image_should_be_introspected_after_build?
|
|
288
|
+
end
|
|
289
|
+
|
|
290
|
+
def introspect_image_before_build
|
|
291
|
+
introspect_image_default(from_image)
|
|
204
292
|
end
|
|
205
293
|
|
|
206
|
-
def
|
|
207
|
-
image
|
|
294
|
+
def introspect_image_after_build
|
|
295
|
+
introspect_image_default(image)
|
|
296
|
+
end
|
|
297
|
+
|
|
298
|
+
def introspect_image_default(introspected_image)
|
|
299
|
+
if introspected_image.built?
|
|
300
|
+
introspected_image.introspect!
|
|
301
|
+
else
|
|
302
|
+
dimg.dapp.log_warning(desc: { code: :introspect_image_impossible, data: { name: name } })
|
|
303
|
+
end
|
|
208
304
|
end
|
|
209
305
|
|
|
210
306
|
def should_be_tagged?
|
|
@@ -212,12 +308,43 @@ module Dapp
|
|
|
212
308
|
end
|
|
213
309
|
|
|
214
310
|
def image_should_be_locked?
|
|
215
|
-
!(empty? || image.
|
|
311
|
+
!(empty? || image.built? || should_be_not_present?)
|
|
312
|
+
end
|
|
313
|
+
|
|
314
|
+
def image_should_be_prepared?
|
|
315
|
+
(!image.built? && !should_be_not_present? || image_should_be_introspected? && image.tagged?) && !dimg.dapp.dry_run?
|
|
316
|
+
end
|
|
317
|
+
|
|
318
|
+
def should_be_renewed?
|
|
319
|
+
current_or_related_image_should_be_untagged?
|
|
320
|
+
end
|
|
321
|
+
|
|
322
|
+
def image_should_be_untagged?
|
|
323
|
+
image.tagged? && current_or_related_image_should_be_untagged?
|
|
324
|
+
end
|
|
325
|
+
|
|
326
|
+
def current_or_related_image_should_be_untagged?
|
|
327
|
+
@current_or_related_image_should_be_untagged ||= begin
|
|
328
|
+
image_should_be_untagged_condition || begin
|
|
329
|
+
if prev_stage.nil?
|
|
330
|
+
false
|
|
331
|
+
else
|
|
332
|
+
prev_stage.current_or_related_image_should_be_untagged?
|
|
333
|
+
end
|
|
334
|
+
end
|
|
335
|
+
end
|
|
336
|
+
end
|
|
337
|
+
|
|
338
|
+
def image_should_be_untagged_condition
|
|
339
|
+
return false unless image.tagged?
|
|
340
|
+
dimg.git_artifacts.any? do |git_artifact|
|
|
341
|
+
!git_artifact.repo.commit_exists? layer_commit(git_artifact)
|
|
342
|
+
end
|
|
216
343
|
end
|
|
217
344
|
|
|
218
345
|
def should_be_not_present?
|
|
219
346
|
return false if next_stage.nil?
|
|
220
|
-
next_stage.image.tagged? || next_stage.should_be_not_present?
|
|
347
|
+
!current_or_related_image_should_be_untagged? && (next_stage.image.tagged? && !next_stage.image_should_be_untagged_condition || next_stage.should_be_not_present?)
|
|
221
348
|
end
|
|
222
349
|
|
|
223
350
|
def image_name
|
|
@@ -237,6 +364,14 @@ module Dapp
|
|
|
237
364
|
end
|
|
238
365
|
end
|
|
239
366
|
end
|
|
367
|
+
|
|
368
|
+
def commits_discard
|
|
369
|
+
@commits = nil
|
|
370
|
+
end
|
|
371
|
+
|
|
372
|
+
def commits
|
|
373
|
+
@commits ||= {}
|
|
374
|
+
end
|
|
240
375
|
end # Base
|
|
241
376
|
end # Stage
|
|
242
377
|
end # Build
|
|
@@ -2,30 +2,19 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
module Build
|
|
4
4
|
module Stage
|
|
5
|
-
class BeforeInstall <
|
|
5
|
+
class BeforeInstall < Instructions
|
|
6
6
|
def initialize(dimg, next_stage)
|
|
7
7
|
@prev_stage = From.new(dimg, self)
|
|
8
8
|
super
|
|
9
9
|
end
|
|
10
10
|
|
|
11
|
-
def
|
|
12
|
-
super && !dimg.builder.before_install?
|
|
13
|
-
end
|
|
14
|
-
|
|
15
|
-
def context
|
|
11
|
+
def dependencies
|
|
16
12
|
[builder_checksum]
|
|
17
13
|
end
|
|
18
14
|
|
|
19
|
-
def
|
|
20
|
-
|
|
21
|
-
end
|
|
22
|
-
|
|
23
|
-
def prepare_image
|
|
24
|
-
super
|
|
25
|
-
dimg.builder.before_install(image)
|
|
15
|
+
def image_should_be_untagged_condition
|
|
16
|
+
false
|
|
26
17
|
end
|
|
27
|
-
|
|
28
|
-
alias dependencies context
|
|
29
18
|
end # BeforeInstall
|
|
30
19
|
end # Stage
|
|
31
20
|
end # Build
|
|
@@ -2,30 +2,11 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
module Build
|
|
4
4
|
module Stage
|
|
5
|
-
class BeforeSetup <
|
|
6
|
-
include Mod::GitArtifactsDependencies
|
|
7
|
-
|
|
5
|
+
class BeforeSetup < Instructions
|
|
8
6
|
def initialize(dimg, next_stage)
|
|
9
7
|
@prev_stage = AfterInstallArtifact.new(dimg, self)
|
|
10
8
|
super
|
|
11
9
|
end
|
|
12
|
-
|
|
13
|
-
def empty?
|
|
14
|
-
!dimg.builder.before_setup?
|
|
15
|
-
end
|
|
16
|
-
|
|
17
|
-
def context
|
|
18
|
-
[git_artifacts_dependencies, builder_checksum]
|
|
19
|
-
end
|
|
20
|
-
|
|
21
|
-
def builder_checksum
|
|
22
|
-
dimg.builder.before_setup_checksum
|
|
23
|
-
end
|
|
24
|
-
|
|
25
|
-
def prepare_image
|
|
26
|
-
super
|
|
27
|
-
dimg.builder.before_setup(image)
|
|
28
|
-
end
|
|
29
10
|
end # BeforeSetup
|
|
30
11
|
end # Stage
|
|
31
12
|
end # Build
|