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
|
@@ -0,0 +1,41 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Dimg
|
|
3
|
+
module Dapp
|
|
4
|
+
module Dimg
|
|
5
|
+
def dimg(config:, **kwargs)
|
|
6
|
+
dimg_after_define_hook(config: config, **kwargs) do
|
|
7
|
+
(@dimg ||= {})[config._name] ||= ::Dapp::Dimg::Dimg.new(config: config, dapp: self, **kwargs)
|
|
8
|
+
end
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def artifact_dimg(config:, **kwargs)
|
|
12
|
+
dimg_after_define_hook(config: config, **kwargs) do
|
|
13
|
+
(@artifacts_dimgs ||= {})[config._name] ||= ::Dapp::Dimg::Artifact.new(config: config, dapp: self, **kwargs)
|
|
14
|
+
end
|
|
15
|
+
end
|
|
16
|
+
|
|
17
|
+
def dimg_after_define_hook(**kwargs)
|
|
18
|
+
should_be_built = kwargs[:should_be_built] || false
|
|
19
|
+
yield.tap do |dimg|
|
|
20
|
+
if should_be_built && dimg.should_be_built != should_be_built
|
|
21
|
+
dimg.enable_should_be_built
|
|
22
|
+
dimg.should_be_built!
|
|
23
|
+
end
|
|
24
|
+
end
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
def dimg_layer(config:, **kwargs)
|
|
28
|
+
(@dimg_layers ||= {})[config._name] ||= ::Dapp::Dimg::Dimg.new(config: config, dapp: self, **kwargs)
|
|
29
|
+
end
|
|
30
|
+
|
|
31
|
+
def artifact_dimg_layer(config:, **kwargs)
|
|
32
|
+
(@artifact_dimg_layers ||= {})[config._name] ||= ::Dapp::Dimg::Artifact.new(config: config, dapp: self, **kwargs)
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def _terminate_dimg_on_terminate(dimg)
|
|
36
|
+
@_call_before_terminate << proc{dimg.terminate}
|
|
37
|
+
end
|
|
38
|
+
end # Dimg
|
|
39
|
+
end # Dapp
|
|
40
|
+
end # Dimg
|
|
41
|
+
end # Dapp
|
|
@@ -2,24 +2,38 @@ module Dapp
|
|
|
2
2
|
module Dimg
|
|
3
3
|
class Dimg
|
|
4
4
|
module GitArtifact
|
|
5
|
-
def git_artifacts
|
|
6
|
-
[*local_git_artifacts, *remote_git_artifacts].compact
|
|
5
|
+
def git_artifacts(omit_empty: true)
|
|
6
|
+
[*local_git_artifacts(omit_empty: omit_empty), *remote_git_artifacts(omit_empty: omit_empty)].compact
|
|
7
7
|
end
|
|
8
8
|
|
|
9
|
-
def local_git_artifacts
|
|
10
|
-
@local_git_artifact_list ||=
|
|
11
|
-
|
|
12
|
-
::
|
|
9
|
+
def local_git_artifacts(omit_empty: true)
|
|
10
|
+
@local_git_artifact_list ||= [].tap do |artifacts|
|
|
11
|
+
break artifacts if (local_git_artifacts = Array(config._git_artifact._local)).empty?
|
|
12
|
+
repo = GitRepo::Own.new(dapp)
|
|
13
|
+
local_git_artifacts.map do |ga_config|
|
|
14
|
+
artifacts.concat(generate_git_artifacts(repo, omit_empty: omit_empty, **ga_config._artifact_options))
|
|
15
|
+
end unless repo.empty?
|
|
13
16
|
end
|
|
14
17
|
end
|
|
15
18
|
|
|
16
|
-
def remote_git_artifacts
|
|
17
|
-
@remote_git_artifact_list ||=
|
|
18
|
-
|
|
19
|
-
|
|
20
|
-
|
|
19
|
+
def remote_git_artifacts(omit_empty: true)
|
|
20
|
+
@remote_git_artifact_list ||= [].tap do |artifacts|
|
|
21
|
+
Array(config._git_artifact._remote).each do |ga_config|
|
|
22
|
+
repo = GitRepo::Remote.get_or_create(dapp, ga_config._name, url: ga_config._url)
|
|
23
|
+
artifacts.concat(generate_git_artifacts(repo, omit_empty: omit_empty, **ga_config._artifact_options)) unless repo.empty?
|
|
24
|
+
end
|
|
21
25
|
end
|
|
22
26
|
end
|
|
27
|
+
|
|
28
|
+
def generate_git_artifacts(repo, omit_empty: true, **git_artifact_options)
|
|
29
|
+
[].tap do |artifacts|
|
|
30
|
+
artifacts << (artifact = ::Dapp::Dimg::GitArtifact.new(repo, self, ignore_signature_auto_calculation: ignore_signature_auto_calculation, **git_artifact_options))
|
|
31
|
+
artifacts
|
|
32
|
+
end.select do |artifact|
|
|
33
|
+
!omit_empty || !artifact.is_empty
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
23
37
|
end # GitArtifact
|
|
24
38
|
end # Mod
|
|
25
39
|
end # Dimg
|
data/lib/dapp/dimg/dimg/path.rb
CHANGED
|
@@ -3,16 +3,20 @@ module Dapp
|
|
|
3
3
|
class Dimg
|
|
4
4
|
module Path
|
|
5
5
|
def home_path(*path)
|
|
6
|
-
|
|
6
|
+
dapp.path(*path).expand_path
|
|
7
|
+
end
|
|
8
|
+
|
|
9
|
+
def tmp_dir_exists?
|
|
10
|
+
@tmp_path != nil
|
|
7
11
|
end
|
|
8
12
|
|
|
9
13
|
def tmp_path(*path)
|
|
10
|
-
@tmp_path ||= Dir.mktmpdir('dapp-', dapp.
|
|
14
|
+
@tmp_path ||= Dir.mktmpdir('dapp-', dapp.tmp_base_dir)
|
|
11
15
|
make_path(@tmp_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
|
12
16
|
end
|
|
13
17
|
|
|
14
18
|
def build_path(*path)
|
|
15
|
-
|
|
19
|
+
dapp.build_path(*path).expand_path.tap { |p| p.parent.mkpath }
|
|
16
20
|
end
|
|
17
21
|
|
|
18
22
|
def container_dapp_path(*path)
|
|
@@ -25,12 +29,6 @@ module Dapp
|
|
|
25
29
|
|
|
26
30
|
alias build_dir build_path
|
|
27
31
|
alias tmp_dir tmp_path
|
|
28
|
-
|
|
29
|
-
private
|
|
30
|
-
|
|
31
|
-
def make_path(base, *path)
|
|
32
|
-
path.compact.map(&:to_s).inject(Pathname.new(base), &:+)
|
|
33
|
-
end
|
|
34
32
|
end # Path
|
|
35
33
|
end
|
|
36
34
|
end # Dimg
|
|
@@ -3,7 +3,7 @@ module Dapp
|
|
|
3
3
|
class Dimg
|
|
4
4
|
module Stages
|
|
5
5
|
def signature
|
|
6
|
-
last_stage.
|
|
6
|
+
last_stage.signature
|
|
7
7
|
end
|
|
8
8
|
|
|
9
9
|
def stage_by_name(name)
|
|
@@ -18,31 +18,39 @@ module Dapp
|
|
|
18
18
|
dapp.stage_dapp_label
|
|
19
19
|
end
|
|
20
20
|
|
|
21
|
-
def
|
|
22
|
-
|
|
23
|
-
end
|
|
24
|
-
alias export_images tagged_images
|
|
25
|
-
|
|
26
|
-
def all_images
|
|
27
|
-
@all_images ||= all_stages.map(&:image).uniq!(&:name)
|
|
21
|
+
def all_tagged_images
|
|
22
|
+
tagged_images.concat(artifacts.map(&:all_tagged_images).flatten).uniq(&:name)
|
|
28
23
|
end
|
|
29
24
|
|
|
30
|
-
def
|
|
31
|
-
|
|
25
|
+
def last_stage
|
|
26
|
+
@last_stage || begin
|
|
27
|
+
(self.last_stage = last_stage_class.new(self)).tap do |stage|
|
|
28
|
+
dapp.log_secondary_process("#{name || 'nameless'}: calculating stages signatures") do
|
|
29
|
+
stage.signature
|
|
30
|
+
end unless ignore_signature_auto_calculation
|
|
31
|
+
end
|
|
32
|
+
end
|
|
32
33
|
end
|
|
33
34
|
|
|
34
35
|
protected
|
|
35
36
|
|
|
36
|
-
|
|
37
|
-
|
|
38
|
-
|
|
37
|
+
attr_writer :last_stage
|
|
38
|
+
|
|
39
|
+
def last_stage_class
|
|
40
|
+
if scratch?
|
|
41
|
+
Build::Stage::ImportArtifact
|
|
39
42
|
else
|
|
40
|
-
Build::Stage::DockerInstructions
|
|
43
|
+
Build::Stage::DockerInstructions
|
|
41
44
|
end
|
|
42
45
|
end
|
|
43
46
|
|
|
47
|
+
def tagged_images
|
|
48
|
+
images.select(&:tagged?)
|
|
49
|
+
end
|
|
50
|
+
alias export_images tagged_images
|
|
51
|
+
|
|
44
52
|
def import_images
|
|
45
|
-
|
|
53
|
+
images.select { |image| !image.tagged? }
|
|
46
54
|
end
|
|
47
55
|
|
|
48
56
|
def artifacts_stages
|
|
@@ -58,6 +66,10 @@ module Dapp
|
|
|
58
66
|
end
|
|
59
67
|
end
|
|
60
68
|
end
|
|
69
|
+
|
|
70
|
+
def images
|
|
71
|
+
stages.map(&:image).uniq(&:name)
|
|
72
|
+
end
|
|
61
73
|
end # Stages
|
|
62
74
|
end # Mod
|
|
63
75
|
end # Dimg
|
data/lib/dapp/dimg/dimg.rb
CHANGED
|
@@ -3,91 +3,166 @@ module Dapp
|
|
|
3
3
|
class Dimg
|
|
4
4
|
include GitArtifact
|
|
5
5
|
include Path
|
|
6
|
-
include Tags
|
|
7
6
|
include Stages
|
|
8
7
|
|
|
9
8
|
include Helper::Sha256
|
|
9
|
+
include Helper::Trivia
|
|
10
10
|
|
|
11
11
|
attr_reader :config
|
|
12
|
-
attr_reader :
|
|
12
|
+
attr_reader :ignore_signature_auto_calculation
|
|
13
13
|
attr_reader :should_be_built
|
|
14
14
|
attr_reader :dapp
|
|
15
15
|
|
|
16
|
-
def
|
|
16
|
+
def get_ruby2go_state_hash
|
|
17
|
+
{
|
|
18
|
+
"Dapp" => dapp.get_ruby2go_state_hash,
|
|
19
|
+
"TmpPath" => tmp_path.to_s,
|
|
20
|
+
}
|
|
21
|
+
end
|
|
22
|
+
|
|
23
|
+
def initialize(config:, dapp:, should_be_built: false, ignore_signature_auto_calculation: false)
|
|
17
24
|
@config = config
|
|
18
25
|
@dapp = dapp
|
|
19
26
|
|
|
20
|
-
@
|
|
21
|
-
|
|
27
|
+
@ignore_signature_auto_calculation = ignore_signature_auto_calculation
|
|
28
|
+
|
|
29
|
+
@dapp._terminate_dimg_on_terminate(self)
|
|
30
|
+
|
|
31
|
+
enable_should_be_built if should_be_built
|
|
32
|
+
should_be_built!
|
|
33
|
+
end
|
|
34
|
+
|
|
35
|
+
def enable_should_be_built
|
|
36
|
+
@should_be_built = true
|
|
37
|
+
end
|
|
22
38
|
|
|
39
|
+
def should_be_built!
|
|
23
40
|
raise Error::Dimg, code: :dimg_not_built if should_be_built?
|
|
24
41
|
end
|
|
25
42
|
|
|
43
|
+
def name
|
|
44
|
+
config._name
|
|
45
|
+
end
|
|
46
|
+
|
|
47
|
+
def terminate
|
|
48
|
+
cleanup_tmp
|
|
49
|
+
end
|
|
50
|
+
|
|
26
51
|
def build!
|
|
27
|
-
|
|
28
|
-
|
|
29
|
-
|
|
30
|
-
|
|
31
|
-
|
|
32
|
-
|
|
33
|
-
|
|
34
|
-
after_stages_build!
|
|
35
|
-
end
|
|
52
|
+
dapp.lock("#{dapp.name}.images", readonly: true) do
|
|
53
|
+
last_stage.build_lock! do
|
|
54
|
+
begin
|
|
55
|
+
builder.before_build_check
|
|
56
|
+
last_stage.build!
|
|
57
|
+
ensure
|
|
58
|
+
after_stages_build!
|
|
36
59
|
end
|
|
37
60
|
end
|
|
38
61
|
end
|
|
39
|
-
ensure
|
|
40
|
-
cleanup_tmp
|
|
41
62
|
end
|
|
42
63
|
|
|
43
64
|
def after_stages_build!
|
|
44
|
-
return unless last_stage.image.built? || dev_mode?
|
|
65
|
+
return unless last_stage.image.built? || dev_mode? || force_save_cache?
|
|
45
66
|
last_stage.save_in_cache!
|
|
46
67
|
artifacts.each { |artifact| artifact.last_stage.save_in_cache! }
|
|
47
68
|
end
|
|
48
69
|
|
|
49
|
-
def tag!(
|
|
70
|
+
def tag!(repo, format:)
|
|
71
|
+
dimg_export_base!(repo, export_format: format)
|
|
72
|
+
end
|
|
73
|
+
|
|
74
|
+
def export!(repo, format:)
|
|
75
|
+
dimg_export_base!(repo, export_format: format, push: true)
|
|
76
|
+
end
|
|
77
|
+
|
|
78
|
+
def export_stages!(repo, format:)
|
|
50
79
|
dapp.lock("#{dapp.name}.images", readonly: true) do
|
|
51
|
-
|
|
52
|
-
|
|
53
|
-
|
|
54
|
-
|
|
55
|
-
dapp.
|
|
56
|
-
|
|
80
|
+
export_images.each do |stage_image|
|
|
81
|
+
signature = stage_image.name.split(':').last
|
|
82
|
+
image_name = format(format, repo: repo, signature: signature)
|
|
83
|
+
|
|
84
|
+
if dimgstage_should_not_be_pushed?(format(dapp.dimgstage_push_tag_format, signature: signature))
|
|
85
|
+
dapp.log_state(image_name, state: dapp.t(code: 'state.exist'))
|
|
86
|
+
next
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
export_base!(image_name, push: true) do
|
|
90
|
+
stage_image.export!(image_name)
|
|
57
91
|
end
|
|
58
92
|
end
|
|
93
|
+
artifacts.each { |artifact| artifact.export_stages!(repo, format: format) }
|
|
59
94
|
end
|
|
60
95
|
end
|
|
61
96
|
|
|
62
|
-
def
|
|
97
|
+
def dimg_export_base!(repo, export_format:, push: false)
|
|
63
98
|
dapp.lock("#{dapp.name}.images", readonly: true) do
|
|
64
|
-
|
|
65
|
-
|
|
66
|
-
|
|
99
|
+
dapp.tags_by_scheme.each do |tag_scheme_name, tags|
|
|
100
|
+
dapp.log_step_with_indent(tag_scheme_name) do
|
|
101
|
+
tags.each do |tag|
|
|
102
|
+
image_name = format(export_format, repo: repo, dimg_name: name, tag: tag)
|
|
103
|
+
|
|
104
|
+
if push && tag_should_not_be_pushed?(tag.to_s)
|
|
105
|
+
dapp.log_state(image_name, state: dapp.t(code: 'state.exist'))
|
|
106
|
+
next
|
|
107
|
+
end
|
|
108
|
+
|
|
109
|
+
export_base!(image_name, push: push) do
|
|
110
|
+
export_image = build_export_image!(image_name, scheme_name: tag_scheme_name)
|
|
111
|
+
if push
|
|
112
|
+
export_image.export!
|
|
113
|
+
else
|
|
114
|
+
export_image.tag!
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
end
|
|
118
|
+
end unless tags.empty?
|
|
67
119
|
end
|
|
68
120
|
end
|
|
69
121
|
end
|
|
70
122
|
|
|
71
|
-
def
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
123
|
+
def dimgstage_should_not_be_pushed?(signature)
|
|
124
|
+
registry_dimgstages_tags.include?(signature)
|
|
125
|
+
end
|
|
126
|
+
|
|
127
|
+
def tag_should_not_be_pushed?(tag)
|
|
128
|
+
registry_tags.include?(tag) && begin
|
|
129
|
+
registry_tag_parent = registry.image_parent_id(tag, name)
|
|
130
|
+
registry_tag_parent == last_stage.image.built_id
|
|
131
|
+
end
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
def registry_tags
|
|
135
|
+
@registry_tags ||= begin
|
|
136
|
+
if name.nil?
|
|
137
|
+
registry.nameless_dimg_tags
|
|
138
|
+
else
|
|
139
|
+
registry.dimg_tags(name)
|
|
76
140
|
end
|
|
77
141
|
end
|
|
78
142
|
end
|
|
79
143
|
|
|
80
|
-
def
|
|
144
|
+
def registry_dimgstages_tags
|
|
145
|
+
@registry_dimgstages_tags ||= registry.dimgstages_tags
|
|
146
|
+
end
|
|
147
|
+
|
|
148
|
+
def registry
|
|
149
|
+
@registry ||= dapp.dimg_registry
|
|
150
|
+
end
|
|
151
|
+
|
|
152
|
+
def build_export_image!(image_name, scheme_name:)
|
|
153
|
+
Image::Dimg.image_by_name(name: image_name, from: last_stage.image, dapp: dapp).tap do |export_image|
|
|
154
|
+
export_image.add_service_change_label(:'dapp-tag-scheme' => scheme_name)
|
|
155
|
+
export_image.add_service_change_label(:'dapp-dimg' => true)
|
|
156
|
+
export_image.build!
|
|
157
|
+
end
|
|
158
|
+
end
|
|
159
|
+
|
|
160
|
+
def export_base!(image_name, push: true)
|
|
81
161
|
if dapp.dry_run?
|
|
82
|
-
dapp.log_state(image_name, state: dapp.t(code: 'state.push'), styles: { status: :success })
|
|
162
|
+
dapp.log_state(image_name, state: dapp.t(code: push ? 'state.push' : 'state.export'), styles: { status: :success })
|
|
83
163
|
else
|
|
84
164
|
dapp.lock("image.#{hashsum image_name}") do
|
|
85
|
-
|
|
86
|
-
dapp.log_process(image_name, process: dapp.t(code: 'status.process.pushing')) do
|
|
87
|
-
dapp.with_log_indent do
|
|
88
|
-
image.export!(image_name)
|
|
89
|
-
end
|
|
90
|
-
end
|
|
165
|
+
dapp.log_process(image_name, process: dapp.t(code: push ? 'status.process.pushing' : 'status.process.exporting')) { yield }
|
|
91
166
|
end
|
|
92
167
|
end
|
|
93
168
|
end
|
|
@@ -95,14 +170,23 @@ module Dapp
|
|
|
95
170
|
def import_stages!(repo, format:)
|
|
96
171
|
dapp.lock("#{dapp.name}.images", readonly: true) do
|
|
97
172
|
import_images.each do |image|
|
|
173
|
+
signature = image.name.split(':').last
|
|
174
|
+
image_name = format(format, repo: repo, signature:signature )
|
|
175
|
+
|
|
176
|
+
unless dimgstage_should_not_be_pushed?(format(dapp.dimgstage_push_tag_format, signature: signature))
|
|
177
|
+
dapp.log_state(image_name, state: dapp.t(code: 'state.not_exist'))
|
|
178
|
+
next
|
|
179
|
+
end
|
|
180
|
+
|
|
98
181
|
begin
|
|
99
|
-
image_name = format(format, repo: repo, signature: image.name.split(':').last)
|
|
100
182
|
import_base!(image, image_name)
|
|
101
|
-
rescue ::Dapp::Error::Shellout
|
|
183
|
+
rescue ::Dapp::Error::Shellout => e
|
|
184
|
+
dapp.log_info ::Dapp::Helper::NetStatus.message(e)
|
|
102
185
|
next
|
|
103
186
|
end
|
|
104
|
-
break unless dapp.pull_all_stages
|
|
187
|
+
break unless !!dapp.options[:pull_all_stages]
|
|
105
188
|
end
|
|
189
|
+
artifacts.each { |artifact| artifact.import_stages!(repo, format: format) }
|
|
106
190
|
end
|
|
107
191
|
end
|
|
108
192
|
|
|
@@ -111,9 +195,10 @@ module Dapp
|
|
|
111
195
|
dapp.log_state(image_name, state: dapp.t(code: 'state.pull'), styles: { status: :success })
|
|
112
196
|
else
|
|
113
197
|
dapp.lock("image.#{hashsum image_name}") do
|
|
114
|
-
dapp.log_process(image_name,
|
|
115
|
-
|
|
116
|
-
|
|
198
|
+
dapp.log_process(image_name,
|
|
199
|
+
process: dapp.t(code: 'status.process.pulling'),
|
|
200
|
+
status: { failed: dapp.t(code: 'status.failed.not_pulled') },
|
|
201
|
+
style: { failed: :secondary }) do
|
|
117
202
|
image.import!(image_name)
|
|
118
203
|
end
|
|
119
204
|
end
|
|
@@ -121,16 +206,23 @@ module Dapp
|
|
|
121
206
|
end
|
|
122
207
|
|
|
123
208
|
def run(docker_options, command)
|
|
124
|
-
|
|
209
|
+
run_stage(nil, docker_options, command)
|
|
210
|
+
end
|
|
211
|
+
|
|
212
|
+
def run_stage(stage_name, docker_options, command)
|
|
213
|
+
stage_image = (stage_name.nil? ? last_stage : stage_by_name(stage_name)).image
|
|
214
|
+
raise Error::Dimg, code: :dimg_stage_not_built, data: { stage_name: stage_name } unless stage_image.built?
|
|
215
|
+
|
|
216
|
+
args = [docker_options, stage_image.built_id, command].flatten.compact
|
|
125
217
|
if dapp.dry_run?
|
|
126
|
-
dapp.log(
|
|
218
|
+
dapp.log("docker run #{args.join(' ')}")
|
|
127
219
|
else
|
|
128
|
-
|
|
220
|
+
Image::Stage.ruby2go_command(dapp, command: :container_run, options: { args: args })
|
|
129
221
|
end
|
|
130
222
|
end
|
|
131
223
|
|
|
132
224
|
def stage_image_name(stage_name)
|
|
133
|
-
stages.find { |stage| stage.
|
|
225
|
+
stages.find { |stage| stage.name == stage_name }.image.name
|
|
134
226
|
end
|
|
135
227
|
|
|
136
228
|
def builder
|
|
@@ -146,29 +238,48 @@ module Dapp
|
|
|
146
238
|
end
|
|
147
239
|
|
|
148
240
|
def scratch?
|
|
149
|
-
config._docker._from.nil?
|
|
241
|
+
config._docker._from.nil? && config._from_dimg.nil? && config._from_dimg_artifact.nil?
|
|
150
242
|
end
|
|
151
243
|
|
|
152
244
|
def dev_mode?
|
|
153
|
-
|
|
245
|
+
dapp.dev_mode?
|
|
246
|
+
end
|
|
247
|
+
|
|
248
|
+
def force_save_cache?
|
|
249
|
+
if ENV.key? "DAPP_FORCE_SAVE_CACHE"
|
|
250
|
+
%w(yes 1 true).include? ENV["DAPP_FORCE_SAVE_CACHE"].to_s
|
|
251
|
+
else
|
|
252
|
+
!!dapp.options[:force_save_cache]
|
|
253
|
+
end
|
|
154
254
|
end
|
|
155
255
|
|
|
156
256
|
def build_cache_version
|
|
157
257
|
[::Dapp::BUILD_CACHE_VERSION, dev_mode? ? 1 : 0]
|
|
158
258
|
end
|
|
159
259
|
|
|
160
|
-
def
|
|
161
|
-
|
|
162
|
-
|
|
260
|
+
def cleanup_tmp
|
|
261
|
+
return unless tmp_dir_exists?
|
|
262
|
+
|
|
263
|
+
# В tmp-директории могли остаться файлы, владельцами которых мы не являемся.
|
|
264
|
+
# Такие файлы могут попасть туда при экспорте файлов артефакта.
|
|
265
|
+
# Чтобы от них избавиться — запускаем docker-контейнер под root-пользователем
|
|
266
|
+
# и удаляем примонтированную tmp-директорию.
|
|
267
|
+
args = [
|
|
268
|
+
"--rm",
|
|
269
|
+
"--volume=#{dapp.tmp_base_dir}:#{dapp.tmp_base_dir}",
|
|
270
|
+
"--label=dapp=#{dapp.name}",
|
|
271
|
+
"alpine:3.6",
|
|
272
|
+
"rm", "-rf", tmp_path
|
|
273
|
+
]
|
|
274
|
+
Image::Stage.ruby2go_command(dapp, command: :container_run, options: { args: args })
|
|
163
275
|
end
|
|
164
276
|
|
|
165
|
-
def
|
|
166
|
-
|
|
167
|
-
artifacts.each(&:cleanup_tmp)
|
|
277
|
+
def stage_should_be_introspected_before_build?(name)
|
|
278
|
+
dapp.options[:introspect_before] == name
|
|
168
279
|
end
|
|
169
280
|
|
|
170
|
-
def
|
|
171
|
-
dapp.
|
|
281
|
+
def stage_should_be_introspected_after_build?(name)
|
|
282
|
+
dapp.options[:introspect_stage] == name
|
|
172
283
|
end
|
|
173
284
|
|
|
174
285
|
protected
|
|
@@ -179,14 +290,6 @@ module Dapp
|
|
|
179
290
|
!last_stage.image.tagged?
|
|
180
291
|
end
|
|
181
292
|
end
|
|
182
|
-
|
|
183
|
-
def with_introspection
|
|
184
|
-
yield
|
|
185
|
-
rescue Exception::IntrospectImage => e
|
|
186
|
-
data = e.net_status[:data]
|
|
187
|
-
introspect_image!(image: data[:built_id], options: data[:options])
|
|
188
|
-
raise data[:error]
|
|
189
|
-
end
|
|
190
293
|
end # Dimg
|
|
191
294
|
end # Dimg
|
|
192
295
|
end # Dapp
|