dapp 0.8.0 → 0.9.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/dapp +5 -5
- data/config/en/common.yml +6 -4
- data/config/en/net_status.yml +8 -7
- data/lib/dapp.rb +157 -139
- data/lib/dapp/cli.rb +6 -16
- data/lib/dapp/cli/base.rb +3 -5
- data/lib/dapp/config/base.rb +19 -7
- data/lib/dapp/config/directive/base.rb +0 -1
- data/lib/dapp/config/error/config.rb +7 -0
- data/lib/dapp/core_ext/hash.rb +0 -2
- data/lib/dapp/core_ext/pathname.rb +1 -3
- data/lib/dapp/{project.rb → dapp.rb} +2 -21
- data/lib/dapp/{project → dapp}/chef.rb +2 -4
- data/lib/dapp/{project → dapp}/dappfile.rb +5 -7
- data/lib/dapp/{project → dapp}/deps/base.rb +3 -6
- data/lib/dapp/{project → dapp}/deps/gitartifact.rb +2 -5
- data/lib/dapp/{project → dapp}/git_artifact.rb +2 -4
- data/lib/dapp/{project → dapp}/lock.rb +3 -5
- data/lib/dapp/{project → dapp}/logging/base.rb +2 -5
- data/lib/dapp/{project → dapp}/logging/i18n.rb +2 -3
- data/lib/dapp/{project → dapp}/logging/paint.rb +2 -4
- data/lib/dapp/{project → dapp}/logging/process.rb +2 -5
- data/lib/dapp/{project → dapp}/shellout/base.rb +2 -4
- data/lib/dapp/{project → dapp}/shellout/streaming.rb +3 -8
- data/lib/dapp/{project → dapp}/ssh_agent.rb +6 -9
- data/lib/dapp/dimg.rb +1 -192
- data/lib/dapp/dimg/artifact.rb +24 -0
- data/lib/dapp/dimg/build/stage/after_install_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/after_setup_artifact.rb +18 -0
- data/lib/dapp/dimg/build/stage/artifact_base.rb +80 -0
- data/lib/dapp/dimg/build/stage/artifact_default.rb +63 -0
- data/lib/dapp/dimg/build/stage/base.rb +210 -0
- data/lib/dapp/dimg/build/stage/before_install.rb +33 -0
- data/lib/dapp/dimg/build/stage/before_install_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/before_setup.rb +31 -0
- data/lib/dapp/dimg/build/stage/before_setup_artifact.rb +14 -0
- data/lib/dapp/dimg/build/stage/build_artifact.rb +31 -0
- data/lib/dapp/dimg/build/stage/docker_instructions.rb +25 -0
- data/lib/dapp/dimg/build/stage/from.rb +50 -0
- data/lib/dapp/dimg/build/stage/ga_archive.rb +28 -0
- data/lib/dapp/dimg/build/stage/ga_archive_dependencies.rb +27 -0
- data/lib/dapp/dimg/build/stage/ga_artifact_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/ga_base.rb +80 -0
- data/lib/dapp/dimg/build/stage/ga_dependencies_base.rb +20 -0
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +54 -0
- data/lib/dapp/dimg/build/stage/import_artifact.rb +64 -0
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_post_install_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/ga_pre_install_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/install/install.rb +35 -0
- data/lib/dapp/dimg/build/stage/mod/group.rb +42 -0
- data/lib/dapp/dimg/build/stage/mod/logging.rb +101 -0
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/ga_post_setup_patch_dependencies.rb +32 -0
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/ga_pre_setup_patch_dependencies.rb +22 -0
- data/lib/dapp/dimg/build/stage/setup/setup.rb +35 -0
- data/lib/dapp/dimg/builder.rb +6 -0
- data/lib/dapp/{builder → dimg/builder}/base.rb +4 -5
- data/lib/dapp/{builder → dimg/builder}/chef.rb +41 -33
- data/lib/dapp/dimg/builder/chef/berksfile.rb +121 -0
- data/lib/dapp/dimg/builder/chef/cookbook.rb +285 -0
- data/lib/dapp/dimg/builder/chef/cookbook_metadata.rb +106 -0
- data/lib/dapp/{builder → dimg/builder}/none.rb +4 -5
- data/lib/dapp/{builder → dimg/builder}/shell.rb +5 -6
- data/lib/dapp/dimg/cli/base.rb +16 -0
- data/lib/dapp/dimg/cli/bp.rb +37 -0
- data/lib/dapp/dimg/cli/build.rb +64 -0
- data/lib/dapp/dimg/cli/build_context.rb +18 -0
- data/lib/dapp/dimg/cli/build_context/export.rb +26 -0
- data/lib/dapp/dimg/cli/build_context/import.rb +17 -0
- data/lib/dapp/dimg/cli/cleanup.rb +22 -0
- data/lib/dapp/dimg/cli/cli.rb +1 -0
- data/lib/dapp/dimg/cli/dimg.rb +30 -0
- data/lib/dapp/dimg/cli/list.rb +17 -0
- data/lib/dapp/dimg/cli/mrproper.rb +26 -0
- data/lib/dapp/dimg/cli/push.rb +61 -0
- data/lib/dapp/dimg/cli/run.rb +59 -0
- data/lib/dapp/{cli → dimg/cli}/spush.rb +7 -7
- data/lib/dapp/dimg/cli/stage_image.rb +24 -0
- data/lib/dapp/dimg/cli/stages.rb +22 -0
- data/lib/dapp/dimg/cli/stages/cleanup_local.rb +44 -0
- data/lib/dapp/dimg/cli/stages/cleanup_repo.rb +26 -0
- data/lib/dapp/dimg/cli/stages/flush_local.rb +23 -0
- data/lib/dapp/dimg/cli/stages/flush_repo.rb +24 -0
- data/lib/dapp/dimg/cli/stages/pull.rb +28 -0
- data/lib/dapp/dimg/cli/stages/push.rb +24 -0
- data/lib/dapp/dimg/cli/tag.rb +24 -0
- data/lib/dapp/dimg/config/artifact_dimg.rb +17 -0
- data/lib/dapp/dimg/config/artifact_group.rb +47 -0
- data/lib/dapp/dimg/config/base.rb +7 -0
- data/lib/dapp/dimg/config/dimg.rb +24 -0
- data/lib/dapp/dimg/config/dimg/instance_methods.rb +177 -0
- data/lib/dapp/dimg/config/dimg/validation.rb +126 -0
- data/lib/dapp/dimg/config/dimg_group.rb +61 -0
- data/lib/dapp/dimg/config/dimg_group_base.rb +54 -0
- data/lib/dapp/dimg/config/dimg_group_main.rb +22 -0
- data/lib/dapp/dimg/config/directive/artifact.rb +70 -0
- data/lib/dapp/dimg/config/directive/artifact_base.rb +97 -0
- data/lib/dapp/dimg/config/directive/base.rb +9 -0
- data/lib/dapp/dimg/config/directive/chef.rb +68 -0
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +15 -0
- data/lib/dapp/dimg/config/directive/docker/base.rb +22 -0
- data/lib/dapp/dimg/config/directive/docker/dimg.rb +82 -0
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +47 -0
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +58 -0
- data/lib/dapp/dimg/config/directive/mount.rb +27 -0
- data/lib/dapp/dimg/config/directive/shell/artifact.rb +18 -0
- data/lib/dapp/dimg/config/directive/shell/dimg.rb +65 -0
- data/lib/dapp/dimg/dapp/command.rb +21 -0
- data/lib/dapp/dimg/dapp/command/bp.rb +20 -0
- data/lib/dapp/dimg/dapp/command/build.rb +22 -0
- data/lib/dapp/dimg/dapp/command/build_context/common.rb +27 -0
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +55 -0
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +71 -0
- data/lib/dapp/dimg/dapp/command/cleanup.rb +23 -0
- data/lib/dapp/dimg/dapp/command/common.rb +96 -0
- data/lib/dapp/dimg/dapp/command/list.rb +19 -0
- data/lib/dapp/dimg/dapp/command/mrproper.rb +75 -0
- data/lib/dapp/dimg/dapp/command/push.rb +27 -0
- data/lib/dapp/dimg/dapp/command/run.rb +15 -0
- data/lib/dapp/dimg/dapp/command/spush.rb +17 -0
- data/lib/dapp/dimg/dapp/command/stage_image.rb +14 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +137 -0
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +124 -0
- data/lib/dapp/dimg/dapp/command/stages/common.rb +85 -0
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +21 -0
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +21 -0
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +26 -0
- data/lib/dapp/dimg/dapp/command/stages/push.rb +22 -0
- data/lib/dapp/dimg/dapp/command/tag.rb +17 -0
- data/lib/dapp/dimg/dimg.rb +192 -0
- data/lib/dapp/dimg/dimg/git_artifact.rb +26 -0
- data/lib/dapp/dimg/dimg/path.rb +37 -0
- data/lib/dapp/dimg/dimg/stages.rb +60 -0
- data/lib/dapp/dimg/dimg/tags.rb +65 -0
- data/lib/dapp/dimg/docker_registry.rb +37 -0
- data/lib/dapp/dimg/docker_registry/base.rb +109 -0
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +63 -0
- data/lib/dapp/dimg/docker_registry/base/request.rb +34 -0
- data/lib/dapp/dimg/docker_registry/default.rb +18 -0
- data/lib/dapp/dimg/error/base.rb +7 -0
- data/lib/dapp/dimg/error/build.rb +7 -0
- data/lib/dapp/dimg/error/chef.rb +11 -0
- data/lib/dapp/dimg/error/command.rb +7 -0
- data/lib/dapp/dimg/error/config.rb +7 -0
- data/lib/dapp/dimg/error/dimg.rb +7 -0
- data/lib/dapp/dimg/error/lock.rb +7 -0
- data/lib/dapp/dimg/error/registry.rb +7 -0
- data/lib/dapp/dimg/error/rugged.rb +7 -0
- data/lib/dapp/dimg/error/shellout.rb +7 -0
- data/lib/dapp/dimg/error/tar_writer.rb +7 -0
- data/lib/dapp/dimg/exception/base.rb +7 -0
- data/lib/dapp/dimg/exception/introspect_image.rb +7 -0
- data/lib/dapp/dimg/exception/registry.rb +7 -0
- data/lib/dapp/dimg/filelock.rb +43 -0
- data/lib/dapp/dimg/git_artifact.rb +241 -18
- data/lib/dapp/dimg/git_repo/base.rb +90 -0
- data/lib/dapp/dimg/git_repo/own.rb +39 -0
- data/lib/dapp/dimg/git_repo/remote.rb +50 -0
- data/lib/dapp/dimg/image/argument.rb +143 -0
- data/lib/dapp/dimg/image/docker.rb +127 -0
- data/lib/dapp/dimg/image/scratch.rb +32 -0
- data/lib/dapp/dimg/image/stage.rb +95 -0
- data/lib/dapp/dimg/lock/base.rb +51 -0
- data/lib/dapp/dimg/lock/file.rb +48 -0
- data/lib/dapp/error/base.rb +0 -1
- data/lib/dapp/error/dapp.rb +5 -0
- data/lib/dapp/error/dappfile.rb +0 -1
- data/lib/dapp/error/shellout.rb +0 -1
- data/lib/dapp/exception/base.rb +0 -1
- data/lib/dapp/helper/cli.rb +5 -6
- data/lib/dapp/helper/net_status.rb +0 -1
- data/lib/dapp/helper/sha256.rb +0 -1
- data/lib/dapp/helper/trivia.rb +0 -1
- data/lib/dapp/prctl.rb +0 -1
- data/lib/dapp/version.rb +1 -2
- metadata +172 -140
- data/lib/dapp/artifact.rb +0 -23
- data/lib/dapp/build/stage/after_install_artifact.rb +0 -13
- data/lib/dapp/build/stage/after_setup_artifact.rb +0 -17
- data/lib/dapp/build/stage/artifact_base.rb +0 -80
- data/lib/dapp/build/stage/artifact_default.rb +0 -63
- data/lib/dapp/build/stage/base.rb +0 -203
- data/lib/dapp/build/stage/before_install.rb +0 -32
- data/lib/dapp/build/stage/before_install_artifact.rb +0 -13
- data/lib/dapp/build/stage/before_setup.rb +0 -30
- data/lib/dapp/build/stage/before_setup_artifact.rb +0 -13
- data/lib/dapp/build/stage/build_artifact.rb +0 -36
- data/lib/dapp/build/stage/docker_instructions.rb +0 -24
- data/lib/dapp/build/stage/from.rb +0 -34
- data/lib/dapp/build/stage/ga_archive.rb +0 -27
- data/lib/dapp/build/stage/ga_archive_dependencies.rb +0 -26
- data/lib/dapp/build/stage/ga_artifact_patch.rb +0 -21
- data/lib/dapp/build/stage/ga_base.rb +0 -79
- data/lib/dapp/build/stage/ga_dependencies_base.rb +0 -19
- data/lib/dapp/build/stage/ga_latest_patch.rb +0 -53
- data/lib/dapp/build/stage/import_artifact.rb +0 -65
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +0 -21
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/install/ga_pre_install_patch.rb +0 -21
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/install/install.rb +0 -40
- data/lib/dapp/build/stage/mod/group.rb +0 -42
- data/lib/dapp/build/stage/mod/logging.rb +0 -104
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +0 -21
- data/lib/dapp/build/stage/setup/ga_post_setup_patch_dependencies.rb +0 -31
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +0 -21
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +0 -21
- data/lib/dapp/build/stage/setup/setup.rb +0 -40
- data/lib/dapp/builder/chef/berksfile.rb +0 -78
- data/lib/dapp/builder/chef/cookbook.rb +0 -257
- data/lib/dapp/builder/chef/cookbook_metadata.rb +0 -54
- data/lib/dapp/builder/chef/error.rb +0 -12
- data/lib/dapp/cli/bp.rb +0 -37
- data/lib/dapp/cli/build.rb +0 -60
- data/lib/dapp/cli/cleanup.rb +0 -22
- data/lib/dapp/cli/list.rb +0 -17
- data/lib/dapp/cli/mrproper.rb +0 -26
- data/lib/dapp/cli/push.rb +0 -61
- data/lib/dapp/cli/run.rb +0 -53
- data/lib/dapp/cli/stage_image.rb +0 -24
- data/lib/dapp/cli/stages.rb +0 -23
- data/lib/dapp/cli/stages/cleanup_local.rb +0 -44
- data/lib/dapp/cli/stages/cleanup_repo.rb +0 -26
- data/lib/dapp/cli/stages/flush_local.rb +0 -23
- data/lib/dapp/cli/stages/flush_repo.rb +0 -24
- data/lib/dapp/cli/stages/pull.rb +0 -28
- data/lib/dapp/cli/stages/push.rb +0 -24
- data/lib/dapp/cli/tag.rb +0 -24
- data/lib/dapp/config/artifact_dimg.rb +0 -20
- data/lib/dapp/config/artifact_group.rb +0 -56
- data/lib/dapp/config/dimg.rb +0 -23
- data/lib/dapp/config/dimg/instance_methods.rb +0 -194
- data/lib/dapp/config/dimg/validation.rb +0 -125
- data/lib/dapp/config/dimg_group.rb +0 -60
- data/lib/dapp/config/dimg_group_base.rb +0 -53
- data/lib/dapp/config/dimg_group_main.rb +0 -21
- data/lib/dapp/config/directive/artifact.rb +0 -69
- data/lib/dapp/config/directive/artifact_base.rb +0 -93
- data/lib/dapp/config/directive/chef.rb +0 -57
- data/lib/dapp/config/directive/docker/artifact.rb +0 -15
- data/lib/dapp/config/directive/docker/base.rb +0 -20
- data/lib/dapp/config/directive/docker/dimg.rb +0 -81
- data/lib/dapp/config/directive/git_artifact_local.rb +0 -13
- data/lib/dapp/config/directive/git_artifact_remote.rb +0 -57
- data/lib/dapp/config/directive/mount.rb +0 -26
- data/lib/dapp/config/directive/shell/artifact.rb +0 -17
- data/lib/dapp/config/directive/shell/dimg.rb +0 -65
- data/lib/dapp/dimg/path.rb +0 -37
- data/lib/dapp/dimg/stages.rb +0 -59
- data/lib/dapp/dimg/tags.rb +0 -65
- data/lib/dapp/docker_registry.rb +0 -36
- data/lib/dapp/docker_registry/base.rb +0 -109
- data/lib/dapp/docker_registry/default.rb +0 -18
- data/lib/dapp/docker_registry/mod/authorization.rb +0 -63
- data/lib/dapp/docker_registry/mod/request.rb +0 -32
- data/lib/dapp/error/build.rb +0 -6
- data/lib/dapp/error/config.rb +0 -6
- data/lib/dapp/error/dimg.rb +0 -6
- data/lib/dapp/error/image.rb +0 -6
- data/lib/dapp/error/project.rb +0 -6
- data/lib/dapp/error/registry.rb +0 -6
- data/lib/dapp/error/rugged.rb +0 -6
- data/lib/dapp/error/tar_writer.rb +0 -6
- data/lib/dapp/exception/introspect_image.rb +0 -6
- data/lib/dapp/exception/registry.rb +0 -6
- data/lib/dapp/filelock.rb +0 -43
- data/lib/dapp/git_artifact.rb +0 -241
- data/lib/dapp/git_repo/base.rb +0 -88
- data/lib/dapp/git_repo/own.rb +0 -38
- data/lib/dapp/git_repo/remote.rb +0 -49
- data/lib/dapp/image/argument.rb +0 -134
- data/lib/dapp/image/docker.rb +0 -115
- data/lib/dapp/image/scratch.rb +0 -32
- data/lib/dapp/image/stage.rb +0 -94
- data/lib/dapp/lock/base.rb +0 -51
- data/lib/dapp/lock/error.rb +0 -14
- data/lib/dapp/lock/file.rb +0 -45
- data/lib/dapp/project/command/bp.rb +0 -21
- data/lib/dapp/project/command/build.rb +0 -20
- data/lib/dapp/project/command/cleanup.rb +0 -24
- data/lib/dapp/project/command/common.rb +0 -96
- data/lib/dapp/project/command/list.rb +0 -20
- data/lib/dapp/project/command/mrproper.rb +0 -69
- data/lib/dapp/project/command/push.rb +0 -28
- data/lib/dapp/project/command/run.rb +0 -15
- data/lib/dapp/project/command/spush.rb +0 -18
- data/lib/dapp/project/command/stage_image.rb +0 -15
- data/lib/dapp/project/command/stages/cleanup_local.rb +0 -138
- data/lib/dapp/project/command/stages/cleanup_repo.rb +0 -125
- data/lib/dapp/project/command/stages/common.rb +0 -86
- data/lib/dapp/project/command/stages/flush_local.rb +0 -22
- data/lib/dapp/project/command/stages/flush_repo.rb +0 -22
- data/lib/dapp/project/command/stages/pull.rb +0 -27
- data/lib/dapp/project/command/stages/push.rb +0 -23
- data/lib/dapp/project/command/tag.rb +0 -18
@@ -1,17 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Config
|
3
|
-
module Directive
|
4
|
-
module Shell
|
5
|
-
# Artifact
|
6
|
-
class Artifact < Dimg
|
7
|
-
attr_reader :_build_artifact
|
8
|
-
stage_command_generator(:build_artifact)
|
9
|
-
|
10
|
-
def empty?
|
11
|
-
super && _build_artifact_command.empty?
|
12
|
-
end
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
@@ -1,65 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Config
|
3
|
-
module Directive
|
4
|
-
module Shell
|
5
|
-
# Dimg
|
6
|
-
class Dimg < Directive::Base
|
7
|
-
attr_reader :_version
|
8
|
-
attr_reader :_before_install, :_before_setup, :_install, :_setup
|
9
|
-
|
10
|
-
def version(value)
|
11
|
-
@_version = value
|
12
|
-
end
|
13
|
-
|
14
|
-
def self.stage_command_generator(stage)
|
15
|
-
define_method stage do |&blk|
|
16
|
-
(variable = instance_variable_get("@_#{stage}") || StageCommand.new(project: project)).instance_eval(&blk)
|
17
|
-
instance_variable_set("@_#{stage}", variable)
|
18
|
-
end
|
19
|
-
|
20
|
-
define_method "_#{stage}_command" do
|
21
|
-
return [] if (variable = instance_variable_get("@_#{stage}")).nil?
|
22
|
-
variable._run
|
23
|
-
end
|
24
|
-
|
25
|
-
define_method "_#{stage}_version" do
|
26
|
-
return [] if (variable = instance_variable_get("@_#{stage}")).nil?
|
27
|
-
variable._version || _version
|
28
|
-
end
|
29
|
-
end
|
30
|
-
[:before_install, :before_setup, :install, :setup].each(&method(:stage_command_generator))
|
31
|
-
|
32
|
-
# StageCommand
|
33
|
-
class StageCommand < Directive::Base
|
34
|
-
attr_reader :_version
|
35
|
-
attr_reader :_run
|
36
|
-
|
37
|
-
def initialize(**kwargs, &blk)
|
38
|
-
@_run = []
|
39
|
-
|
40
|
-
super(**kwargs, &blk)
|
41
|
-
end
|
42
|
-
|
43
|
-
def run(*args)
|
44
|
-
@_run.concat(args)
|
45
|
-
end
|
46
|
-
|
47
|
-
def version(value)
|
48
|
-
@_version = value
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
protected
|
53
|
-
|
54
|
-
def empty?
|
55
|
-
(_before_install_command + _before_setup_command + _install_command + _setup_command).empty?
|
56
|
-
end
|
57
|
-
|
58
|
-
def clone_to_artifact
|
59
|
-
_clone_to Artifact.new(project: project)
|
60
|
-
end
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
end
|
65
|
-
end
|
data/lib/dapp/dimg/path.rb
DELETED
@@ -1,37 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# Dimg
|
3
|
-
class Dimg
|
4
|
-
# Path
|
5
|
-
module Path
|
6
|
-
def home_path(*path)
|
7
|
-
make_path(project.path, *path).expand_path
|
8
|
-
end
|
9
|
-
|
10
|
-
def tmp_path(*path)
|
11
|
-
@tmp_path ||= Dir.mktmpdir('dapp-', project.cli_options[:tmp_dir_prefix] || '/tmp')
|
12
|
-
make_path(@tmp_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
13
|
-
end
|
14
|
-
|
15
|
-
def build_path(*path)
|
16
|
-
make_path(project.build_path, *path).expand_path.tap { |p| p.parent.mkpath }
|
17
|
-
end
|
18
|
-
|
19
|
-
def container_dapp_path(*path)
|
20
|
-
make_path('/.dapp', *path)
|
21
|
-
end
|
22
|
-
|
23
|
-
def container_tmp_path(*path)
|
24
|
-
container_dapp_path('tmp', *path)
|
25
|
-
end
|
26
|
-
|
27
|
-
alias_method :build_dir, :build_path
|
28
|
-
alias_method :tmp_dir, :tmp_path
|
29
|
-
|
30
|
-
private
|
31
|
-
|
32
|
-
def make_path(base, *path)
|
33
|
-
path.compact.map(&:to_s).inject(Pathname.new(base), &:+)
|
34
|
-
end
|
35
|
-
end # Path
|
36
|
-
end # Dimg
|
37
|
-
end # Dapp
|
data/lib/dapp/dimg/stages.rb
DELETED
@@ -1,59 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# Dimg
|
3
|
-
class Dimg
|
4
|
-
# Stages
|
5
|
-
module Stages
|
6
|
-
def signature
|
7
|
-
last_stage.send(:signature)
|
8
|
-
end
|
9
|
-
|
10
|
-
def stage_cache_format
|
11
|
-
"#{project.stage_cache}:%{signature}"
|
12
|
-
end
|
13
|
-
|
14
|
-
def stage_dapp_label
|
15
|
-
project.stage_dapp_label
|
16
|
-
end
|
17
|
-
|
18
|
-
def all_images
|
19
|
-
@all_images ||= all_stages.map(&:image).uniq!(&:name)
|
20
|
-
end
|
21
|
-
|
22
|
-
protected
|
23
|
-
|
24
|
-
def last_stage
|
25
|
-
@last_stage ||= if scratch?
|
26
|
-
Build::Stage::ImportArtifact.new(self)
|
27
|
-
else
|
28
|
-
Build::Stage::DockerInstructions.new(self)
|
29
|
-
end
|
30
|
-
end
|
31
|
-
|
32
|
-
def export_images
|
33
|
-
all_images.select(&:tagged?)
|
34
|
-
end
|
35
|
-
|
36
|
-
def import_images
|
37
|
-
all_images.select { |image| !image.tagged? }
|
38
|
-
end
|
39
|
-
|
40
|
-
def stages
|
41
|
-
(@stages ||= []).tap do |stages|
|
42
|
-
stage = last_stage
|
43
|
-
loop do
|
44
|
-
stages << stage
|
45
|
-
break if (stage = stage.prev_stage).nil?
|
46
|
-
end
|
47
|
-
end
|
48
|
-
end
|
49
|
-
|
50
|
-
def artifacts_stages
|
51
|
-
@artifacts_stages ||= stages.select { |stage| stage.artifact? }
|
52
|
-
end
|
53
|
-
|
54
|
-
def all_stages
|
55
|
-
stages + artifacts.map(&:all_stages).flatten
|
56
|
-
end
|
57
|
-
end # Stages
|
58
|
-
end # Dimg
|
59
|
-
end # Dapp
|
data/lib/dapp/dimg/tags.rb
DELETED
@@ -1,65 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# Dimg
|
3
|
-
class Dimg
|
4
|
-
# Tags
|
5
|
-
module Tags
|
6
|
-
protected
|
7
|
-
|
8
|
-
def git_repo
|
9
|
-
@git_repo ||= GitRepo::Own.new(self)
|
10
|
-
end
|
11
|
-
|
12
|
-
def tags
|
13
|
-
tags = simple_tags + branch_tags + commit_tags + build_tags + ci_tags
|
14
|
-
tags << :latest if tags.empty?
|
15
|
-
tags
|
16
|
-
end
|
17
|
-
|
18
|
-
def simple_tags
|
19
|
-
project.cli_options[:tag]
|
20
|
-
end
|
21
|
-
|
22
|
-
def branch_tags
|
23
|
-
return [] unless project.cli_options[:tag_branch]
|
24
|
-
raise Error::Dimg, code: :git_branch_without_name if (branch = git_repo.branch) == 'HEAD'
|
25
|
-
[branch]
|
26
|
-
end
|
27
|
-
|
28
|
-
def commit_tags
|
29
|
-
return [] unless project.cli_options[:tag_commit]
|
30
|
-
commit = git_repo.latest_commit
|
31
|
-
[commit]
|
32
|
-
end
|
33
|
-
|
34
|
-
def build_tags
|
35
|
-
return [] unless project.cli_options[:tag_build_id]
|
36
|
-
|
37
|
-
if ENV['GITLAB_CI']
|
38
|
-
build_id = ENV['CI_BUILD_ID']
|
39
|
-
elsif ENV['TRAVIS']
|
40
|
-
build_id = ENV['TRAVIS_BUILD_NUMBER']
|
41
|
-
else
|
42
|
-
raise Error::Dimg, code: :ci_environment_required
|
43
|
-
end
|
44
|
-
|
45
|
-
[build_id]
|
46
|
-
end
|
47
|
-
|
48
|
-
def ci_tags
|
49
|
-
return [] unless project.cli_options[:tag_ci]
|
50
|
-
|
51
|
-
if ENV['GITLAB_CI']
|
52
|
-
branch = ENV['CI_BUILD_REF_NAME']
|
53
|
-
tag = ENV['CI_BUILD_TAG']
|
54
|
-
elsif ENV['TRAVIS']
|
55
|
-
branch = ENV['TRAVIS_BRANCH']
|
56
|
-
tag = ENV['TRAVIS_TAG']
|
57
|
-
else
|
58
|
-
raise Error::Dimg, code: :ci_environment_required
|
59
|
-
end
|
60
|
-
|
61
|
-
[branch, tag].compact
|
62
|
-
end
|
63
|
-
end # Tags
|
64
|
-
end # Dimg
|
65
|
-
end # Dapp
|
data/lib/dapp/docker_registry.rb
DELETED
@@ -1,36 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# DockerRegistry
|
3
|
-
module DockerRegistry
|
4
|
-
def self.new(repo)
|
5
|
-
/^#{repo_name_format}$/ =~ repo
|
6
|
-
expected_hostname = Regexp.last_match(:hostname)
|
7
|
-
expected_repo_suffix = Regexp.last_match(:repo_suffix)
|
8
|
-
expected_hostname_url = expected_hostname ? "http://#{expected_hostname}" : nil
|
9
|
-
|
10
|
-
if hostname_exist?(expected_hostname_url)
|
11
|
-
Base.new(repo, expected_hostname_url, expected_repo_suffix)
|
12
|
-
else
|
13
|
-
Default.new(repo, File.join(*[expected_hostname, expected_repo_suffix].compact))
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.repo_name_format
|
18
|
-
separator = '[_.]|__|[-]*'
|
19
|
-
alpha_numeric = '[[:alnum:]]*'
|
20
|
-
component = "#{alpha_numeric}[#{separator}#{alpha_numeric}]*"
|
21
|
-
port_number = '[[:digit:]]+'
|
22
|
-
hostcomponent = '[[:alnum:]_-]*[[:alnum:]]'
|
23
|
-
hostname = "#{hostcomponent}[\\.#{hostcomponent}]*(?<port>:#{port_number})?"
|
24
|
-
"(?<hostname>#{hostname}/)?(?<repo_suffix>#{component}[/#{component}]*)"
|
25
|
-
end
|
26
|
-
|
27
|
-
def self.repo_name?(name)
|
28
|
-
!(/^#{repo_name_format}$/ =~ name).nil?
|
29
|
-
end
|
30
|
-
|
31
|
-
def self.hostname_exist?(url)
|
32
|
-
return false unless url
|
33
|
-
Mod::Request.url_available?(url)
|
34
|
-
end
|
35
|
-
end # DockerRegistry
|
36
|
-
end # Dapp
|
@@ -1,109 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# DockerRegistry
|
3
|
-
module DockerRegistry
|
4
|
-
# Base
|
5
|
-
class Base
|
6
|
-
include Mod::Request
|
7
|
-
include Mod::Authorization
|
8
|
-
|
9
|
-
API_VERSION = 'v2'.freeze
|
10
|
-
|
11
|
-
attr_accessor :repo
|
12
|
-
attr_accessor :hostname_url
|
13
|
-
attr_accessor :repo_suffix
|
14
|
-
|
15
|
-
def initialize(repo, hostname_url, repo_suffix)
|
16
|
-
self.repo = repo
|
17
|
-
self.hostname_url = hostname_url
|
18
|
-
self.repo_suffix = repo_suffix
|
19
|
-
end
|
20
|
-
|
21
|
-
def repo_exist?
|
22
|
-
tags.any?
|
23
|
-
end
|
24
|
-
|
25
|
-
def tags
|
26
|
-
@tags ||= api_request(repo_suffix, 'tags/list')['tags'] || []
|
27
|
-
rescue Error::Registry => e
|
28
|
-
raise Exception::Registry, code: :no_such_dimg, data: { registry: api_url } if e.net_status[:code] == :page_not_found
|
29
|
-
raise
|
30
|
-
end
|
31
|
-
|
32
|
-
def image_id(tag)
|
33
|
-
response = manifest_v2(tag)
|
34
|
-
response['config']['digest'] if response['schemaVersion'] == 2
|
35
|
-
end
|
36
|
-
|
37
|
-
def image_parent_id(tag)
|
38
|
-
image_history(tag)['container_config']['Image']
|
39
|
-
end
|
40
|
-
|
41
|
-
def image_labels(tag)
|
42
|
-
image_history(tag)['config']['Labels']
|
43
|
-
end
|
44
|
-
|
45
|
-
def image_delete(tag)
|
46
|
-
image_blobs(tag).each { |hash| blob_delete(hash.values.first) }
|
47
|
-
api_request(repo_suffix, "/manifests/#{image_digest(tag)}",
|
48
|
-
method: :delete,
|
49
|
-
expects: [202, 404],
|
50
|
-
headers: { Accept: 'Accept: application/vnd.docker.distribution.manifest.v2+json' })
|
51
|
-
end
|
52
|
-
|
53
|
-
def image_history(tag)
|
54
|
-
response = manifest_v1(tag)
|
55
|
-
JSON.load(response['history'].first['v1Compatibility'])
|
56
|
-
end
|
57
|
-
|
58
|
-
protected
|
59
|
-
|
60
|
-
def image_digest(tag)
|
61
|
-
raw_api_request(repo_suffix, "/manifests/#{tag}",
|
62
|
-
headers: { Accept: 'application/vnd.docker.distribution.manifest.v2+json' }).headers['Docker-Content-Digest']
|
63
|
-
end
|
64
|
-
|
65
|
-
def image_blobs(tag)
|
66
|
-
manifest_v1(tag)['fsLayers']
|
67
|
-
end
|
68
|
-
|
69
|
-
def manifest_v1(tag)
|
70
|
-
api_request(repo_suffix, "/manifests/#{tag}")
|
71
|
-
end
|
72
|
-
|
73
|
-
def manifest_v2(tag)
|
74
|
-
api_request(repo_suffix, "/manifests/#{tag}",
|
75
|
-
headers: { Accept: 'application/vnd.docker.distribution.manifest.v2+json' })
|
76
|
-
end
|
77
|
-
|
78
|
-
def blob_delete(id)
|
79
|
-
api_request(repo_suffix, "/blobs/#{id}",
|
80
|
-
method: :delete, expects: [202, 404])
|
81
|
-
end
|
82
|
-
|
83
|
-
def api_request(*uri, **options)
|
84
|
-
JSON.load(raw_api_request(*uri, **options).body)
|
85
|
-
end
|
86
|
-
|
87
|
-
def raw_api_request(*uri, **options)
|
88
|
-
url = api_url(*uri)
|
89
|
-
request(url, **default_api_options.merge(options))
|
90
|
-
rescue Excon::Error::NotFound
|
91
|
-
raise Error::Registry, code: :page_not_found, data: { url: url, registry: api_url }
|
92
|
-
rescue Excon::Error::Unauthorized
|
93
|
-
user_not_authorized!
|
94
|
-
end
|
95
|
-
|
96
|
-
def api_url(*uri)
|
97
|
-
File.join(hostname_url, API_VERSION, '/', *uri)
|
98
|
-
end
|
99
|
-
|
100
|
-
def default_api_options
|
101
|
-
{ expects: [200] }
|
102
|
-
end
|
103
|
-
|
104
|
-
def user_not_authorized!
|
105
|
-
raise Error::Registry, code: :user_not_authorized, data: { registry: api_url }
|
106
|
-
end
|
107
|
-
end
|
108
|
-
end # DockerRegistry
|
109
|
-
end # Dapp
|
@@ -1,18 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# DockerRegistry
|
3
|
-
module DockerRegistry
|
4
|
-
# Default
|
5
|
-
class Default < Base
|
6
|
-
DEFAULT_HOSTNAME_URL = 'https://registry.hub.docker.com'.freeze
|
7
|
-
|
8
|
-
def initialize(repo, repo_suffix)
|
9
|
-
super(repo, DEFAULT_HOSTNAME_URL, repo_suffix)
|
10
|
-
end
|
11
|
-
|
12
|
-
def repo_suffix=(val)
|
13
|
-
val = "library/#{val}" if val.split('/').one?
|
14
|
-
super(val)
|
15
|
-
end
|
16
|
-
end
|
17
|
-
end
|
18
|
-
end # Dapp
|
@@ -1,63 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
# DockerRegistry
|
3
|
-
module DockerRegistry
|
4
|
-
module Mod
|
5
|
-
# Authorization
|
6
|
-
module Authorization
|
7
|
-
def authorization_options(url)
|
8
|
-
@authorization_options ||= begin
|
9
|
-
case authenticate_header = raw_request(url).headers['Www-Authenticate']
|
10
|
-
when /Bearer/ then { headers: { Authorization: "Bearer #{authorization_token(authenticate_header)}" } }
|
11
|
-
when /Basic/ then { headers: { Authorization: "Basic #{authorization_auth}" } }
|
12
|
-
when nil then {}
|
13
|
-
else raise Error::Registry, code: :authenticate_type_not_supported, data: { registry: api_url }
|
14
|
-
end
|
15
|
-
end
|
16
|
-
end
|
17
|
-
|
18
|
-
def authorization_token(authenticate_header)
|
19
|
-
options = parse_authenticate_header(authenticate_header)
|
20
|
-
realm = options.delete(:realm)
|
21
|
-
begin
|
22
|
-
response = raw_request(realm, headers: { Authorization: "Basic #{authorization_auth}" }, query: options, expects: [200])
|
23
|
-
rescue Error::Registry
|
24
|
-
raise unless (response = raw_request(realm, query: options)).status == 200
|
25
|
-
end
|
26
|
-
JSON.load(response.body)['token']
|
27
|
-
end
|
28
|
-
|
29
|
-
def parse_authenticate_header(header)
|
30
|
-
[:realm, :service, :scope].map do |option|
|
31
|
-
/#{option}="([[^"].]*)/ =~ header
|
32
|
-
next unless Regexp.last_match(1)
|
33
|
-
[option, Regexp.last_match(1)]
|
34
|
-
end.compact.to_h
|
35
|
-
end
|
36
|
-
|
37
|
-
def authorization_auth
|
38
|
-
auths = auths_section_from_docker_config
|
39
|
-
r = repo
|
40
|
-
loop do
|
41
|
-
break unless r.include?('/') && !auths.keys.any? { |auth| auth.start_with?(r) }
|
42
|
-
r = chomp_name(r)
|
43
|
-
end
|
44
|
-
credential = (auths[r] || auths.find { |repo, _| repo == r })
|
45
|
-
user_not_authorized! if credential.nil?
|
46
|
-
credential['auth']
|
47
|
-
end
|
48
|
-
|
49
|
-
def auths_section_from_docker_config
|
50
|
-
file = Pathname(File.join(Dir.home, '.docker', 'config.json'))
|
51
|
-
user_not_authorized! unless file.exist?
|
52
|
-
JSON.load(file.read)['auths'].tap { |auths| user_not_authorized! if auths.nil? }
|
53
|
-
end
|
54
|
-
|
55
|
-
private
|
56
|
-
|
57
|
-
def chomp_name(r)
|
58
|
-
r.split('/')[0..-2].join('/')
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end # Mod
|
62
|
-
end # DockerRegistry
|
63
|
-
end # Dapp
|