dapp 0.6.1 → 0.6.2
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/dapp +3 -3
- data/config/en/common.yml +19 -4
- data/config/en/net_status.yml +13 -4
- data/lib/dapp.rb +48 -16
- data/lib/dapp/application.rb +75 -40
- data/lib/dapp/application/path.rb +3 -2
- data/lib/dapp/application/stages.rb +59 -0
- data/lib/dapp/artifact.rb +22 -0
- data/lib/dapp/build/stage/after_install_artifact.rb +13 -0
- data/lib/dapp/build/stage/after_setup_artifact.rb +17 -0
- data/lib/dapp/build/stage/artifact_base.rb +80 -0
- data/lib/dapp/build/stage/artifact_default.rb +62 -0
- data/lib/dapp/build/stage/base.rb +47 -12
- data/lib/dapp/build/stage/before_install.rb +6 -5
- data/lib/dapp/build/stage/before_install_artifact.rb +13 -0
- data/lib/dapp/build/stage/before_setup.rb +7 -8
- data/lib/dapp/build/stage/before_setup_artifact.rb +13 -0
- data/lib/dapp/build/stage/build_artifact.rb +32 -0
- data/lib/dapp/build/stage/docker_instructions.rb +4 -22
- data/lib/dapp/build/stage/from.rb +7 -8
- data/lib/dapp/build/stage/ga_archive.rb +1 -1
- data/lib/dapp/build/stage/ga_archive_dependencies.rb +1 -1
- data/lib/dapp/build/stage/ga_artifact_patch.rb +21 -0
- data/lib/dapp/build/stage/ga_base.rb +6 -29
- data/lib/dapp/build/stage/ga_dependencies_base.rb +4 -13
- data/lib/dapp/build/stage/ga_latest_patch.rb +2 -2
- data/lib/dapp/build/stage/import_artifact.rb +69 -0
- data/lib/dapp/build/stage/install/ga_post_install_patch.rb +1 -1
- data/lib/dapp/build/stage/install/ga_post_install_patch_dependencies.rb +1 -1
- data/lib/dapp/build/stage/install/ga_pre_install_patch_dependencies.rb +1 -7
- data/lib/dapp/build/stage/install/install.rb +12 -7
- data/lib/dapp/build/stage/mod/logging.rb +10 -7
- data/lib/dapp/build/stage/setup/chef_cookbooks.rb +3 -4
- data/lib/dapp/build/stage/setup/ga_post_setup_patch.rb +1 -1
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch.rb +2 -2
- data/lib/dapp/build/stage/setup/ga_pre_setup_patch_dependencies.rb +2 -8
- data/lib/dapp/build/stage/setup/setup.rb +12 -7
- data/lib/dapp/builder/base.rb +13 -1
- data/lib/dapp/builder/chef.rb +125 -79
- data/lib/dapp/builder/chef/cookbook_metadata.rb +1 -1
- data/lib/dapp/builder/shell.rb +2 -3
- data/lib/dapp/cli.rb +3 -3
- data/lib/dapp/cli/base.rb +0 -2
- data/lib/dapp/cli/bp.rb +0 -4
- data/lib/dapp/cli/build.rb +3 -7
- data/lib/dapp/cli/cleanup.rb +0 -2
- data/lib/dapp/cli/list.rb +0 -2
- data/lib/dapp/cli/mrproper.rb +22 -0
- data/lib/dapp/cli/push.rb +4 -3
- data/lib/dapp/cli/run.rb +0 -2
- data/lib/dapp/cli/spush.rb +0 -2
- data/lib/dapp/cli/stage_image.rb +24 -0
- data/lib/dapp/cli/stages.rb +7 -5
- data/lib/dapp/cli/stages/cleanup_local.rb +28 -0
- data/lib/dapp/cli/stages/cleanup_repo.rb +24 -0
- data/lib/dapp/cli/stages/{flush.rb → flush_local.rb} +4 -6
- data/lib/dapp/cli/stages/{cleanup.rb → flush_repo.rb} +4 -6
- data/lib/dapp/cli/stages/pull.rb +28 -0
- data/lib/dapp/cli/stages/push.rb +24 -0
- data/lib/dapp/config/application.rb +185 -44
- data/lib/dapp/config/artifact.rb +10 -50
- data/lib/dapp/config/directive/artifact.rb +77 -0
- data/lib/dapp/config/directive/build_dir.rb +9 -0
- data/lib/dapp/config/directive/chef.rb +95 -0
- data/lib/dapp/config/directive/docker/artifact.rb +26 -0
- data/lib/dapp/config/directive/docker/base.rb +91 -0
- data/lib/dapp/config/directive/git_artifact.rb +59 -0
- data/lib/dapp/config/directive/shell/artifact.rb +38 -0
- data/lib/dapp/config/directive/shell/base.rb +85 -0
- data/lib/dapp/config/directive/tmp_dir.rb +36 -0
- data/lib/dapp/config/main.rb +1 -7
- data/lib/dapp/core_ext/hash.rb +21 -0
- data/lib/dapp/docker_registry/base.rb +60 -5
- data/lib/dapp/docker_registry/mod/request.rb +2 -14
- data/lib/dapp/git_artifact.rb +32 -23
- data/lib/dapp/git_repo/base.rb +1 -1
- data/lib/dapp/image/argument.rb +3 -3
- data/lib/dapp/image/docker.rb +13 -16
- data/lib/dapp/image/scratch.rb +29 -0
- data/lib/dapp/image/stage.rb +33 -23
- data/lib/dapp/lock/base.rb +18 -11
- data/lib/dapp/lock/file.rb +18 -16
- data/lib/dapp/prctl.rb +1 -0
- data/lib/dapp/project.rb +22 -9
- data/lib/dapp/project/command/bp.rb +2 -5
- data/lib/dapp/project/command/build.rb +1 -2
- data/lib/dapp/project/command/cleanup.rb +9 -7
- data/lib/dapp/project/command/common.rb +37 -12
- data/lib/dapp/project/command/mrproper.rb +57 -0
- data/lib/dapp/project/command/push.rb +8 -2
- data/lib/dapp/project/command/run.rb +1 -1
- data/lib/dapp/project/command/stage_image.rb +15 -0
- data/lib/dapp/project/command/stages/cleanup_local.rb +100 -0
- data/lib/dapp/project/command/stages/cleanup_repo.rb +65 -0
- data/lib/dapp/project/command/stages/common.rb +48 -0
- data/lib/dapp/project/command/stages/flush_local.rb +24 -0
- data/lib/dapp/project/command/stages/flush_repo.rb +22 -0
- data/lib/dapp/project/command/stages/pull.rb +26 -0
- data/lib/dapp/project/command/stages/push.rb +22 -0
- data/lib/dapp/project/dappfile.rb +3 -1
- data/lib/dapp/project/deps/base.rb +52 -0
- data/lib/dapp/project/deps/gitartifact.rb +36 -0
- data/lib/dapp/project/lock.rb +20 -13
- data/lib/dapp/project/logging/base.rb +20 -3
- data/lib/dapp/project/logging/i18n.rb +25 -0
- data/lib/dapp/project/logging/paint.rb +47 -0
- data/lib/dapp/project/logging/process.rb +17 -10
- data/lib/dapp/project/shellout/base.rb +74 -0
- data/lib/dapp/project/shellout/streaming.rb +49 -0
- data/lib/dapp/project/shellout/system.rb +72 -0
- data/lib/dapp/project/ssh_agent.rb +8 -9
- data/lib/dapp/version.rb +1 -1
- metadata +48 -17
- data/lib/dapp/build/stage/artifact.rb +0 -40
- data/lib/dapp/build/stage/mod/artifact.rb +0 -79
- data/lib/dapp/config/chef.rb +0 -51
- data/lib/dapp/config/docker.rb +0 -82
- data/lib/dapp/config/git_artifact.rb +0 -51
- data/lib/dapp/config/shell.rb +0 -64
- data/lib/dapp/helper/i18n.rb +0 -20
- data/lib/dapp/helper/paint.rb +0 -27
- data/lib/dapp/helper/shellout.rb +0 -63
- data/lib/dapp/helper/streaming.rb +0 -47
- data/lib/dapp/project/command/stages_cleanup.rb +0 -72
- data/lib/dapp/project/command/stages_flush.rb +0 -20
- data/lib/dapp/project/paint.rb +0 -16
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3f7c169bd67fd20777df9d919789eb8a05849e0b
|
4
|
+
data.tar.gz: 6cb60dfa39665c8551ba425cae42a7a3f9513403
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 380deffddc3206ee8c200015bd71e367f7c9b1b3e04a684acbc2cd539ee75bf9398a09b341ec5ac7f776a34396ccc1f89c203e6bc2c86f8ff370f874b07bf4de
|
7
|
+
data.tar.gz: dcfb3adef54dc705d13a13e1d24c3256d6b1a1d87675a0f3d2fd48db5cb6052fe4da8e5fe184fc58ad399be84087e63f43e6fbe93bdc6fe9e8a818d510f928f6
|
data/bin/dapp
CHANGED
@@ -11,12 +11,12 @@ rescue Dapp::Error::Shellout => e
|
|
11
11
|
$stderr.puts(Dapp::Helper::NetStatus.message(e))
|
12
12
|
exit 1
|
13
13
|
rescue Dapp::Error::Base, NetStatus::Exception => e
|
14
|
-
$stderr.puts(Dapp::
|
14
|
+
$stderr.puts(Dapp::Project.paint_string(Dapp::Helper::NetStatus.message(e), :warning))
|
15
15
|
exit 1
|
16
16
|
rescue Interrupt => _e
|
17
|
-
$stderr.puts(Dapp::
|
17
|
+
$stderr.puts(Dapp::Project.paint_string('Interrupted', :warning))
|
18
18
|
exit 1
|
19
19
|
rescue Errno::EACCES => _e
|
20
|
-
$stderr.puts(Dapp::
|
20
|
+
$stderr.puts(Dapp::Project.paint_string('Permission denied!', :warning))
|
21
21
|
exit 1
|
22
22
|
end
|
data/config/en/common.yml
CHANGED
@@ -11,20 +11,27 @@ en:
|
|
11
11
|
process:
|
12
12
|
artifact_copy: "copying artifact '%{name}'"
|
13
13
|
artifact_building: "building artifact '%{name}'"
|
14
|
-
git_artifact_loading: 'loading git_artifact'
|
15
14
|
git_artifact_clone: "cloning remote git_artifact '%{name}'"
|
16
15
|
git_artifact_fetch: "fetching remote git_artifact '%{name}'"
|
17
|
-
|
18
|
-
|
16
|
+
berks_vendor: 'vendoring cookbooks'
|
17
|
+
chef_cookbooks_stage_berks_vendor: 'vendoring cookbooks for chef cookbooks stage'
|
19
18
|
waiting_resouce_lock: "waiting for locked resource '%{name}'"
|
19
|
+
gitartifact_container_loading: 'loading dappdeps/gitartifact container'
|
20
|
+
base_container_loading: 'loading dappdeps/base container'
|
21
|
+
chefdk_container_loading: 'loading dappdeps/chefdk container'
|
22
|
+
system_shellout_container_loading: 'loading system shellout container'
|
23
|
+
image_pull: "pulling image '%{name}'"
|
24
|
+
image_push: "pushing image '%{name}'"
|
20
25
|
status:
|
21
26
|
process:
|
22
27
|
pushing: '[PUSHING]'
|
28
|
+
pulling: '[PULLING]'
|
23
29
|
building: '[BUILDING]'
|
24
30
|
default: '[RUNNING]'
|
25
31
|
success:
|
26
32
|
default: '[OK]'
|
27
33
|
failed:
|
34
|
+
not_pulled: '[NOT PULLED]'
|
28
35
|
default: '[FAILED]'
|
29
36
|
state:
|
30
37
|
using_cache: '[USING CACHE]'
|
@@ -32,16 +39,20 @@ en:
|
|
32
39
|
build: '[BUILD]'
|
33
40
|
empty: '[EMPTY]'
|
34
41
|
push: '[PUSH]'
|
42
|
+
pull: '[PULL]'
|
35
43
|
warning:
|
36
44
|
excess_builder_instruction: "WARNING: Excessive use of the 'builder' instruction. Builder type will be automatically determined by the first use of any builder."
|
37
45
|
excess_name_instruction: "WARNING: Excessive use of the 'name' instruction. Given name corresponds to default name."
|
38
46
|
another_image_already_tagged: 'WARNING: image with other id already exist.'
|
47
|
+
tag_ignored: "WARNING: tag '%{tag}' ignored."
|
39
48
|
group:
|
40
49
|
install_group: 'Install group'
|
41
50
|
setup_group: 'Setup group'
|
42
51
|
stage:
|
43
52
|
from: 'From'
|
53
|
+
import_artifact: 'Import Artifact'
|
44
54
|
before_install: 'Before install'
|
55
|
+
before_install_artifact: 'Before install artifact'
|
45
56
|
g_a_archive_dependencies: 'Git artifacts dependencies'
|
46
57
|
g_a_archive: 'Git artifacts: create archive'
|
47
58
|
install_group:
|
@@ -50,8 +61,9 @@ en:
|
|
50
61
|
install: 'Install'
|
51
62
|
g_a_post_install_patch_dependencies: 'Git artifacts dependencies'
|
52
63
|
g_a_post_install_patch: 'Git artifacts: apply patches (after install)'
|
53
|
-
|
64
|
+
after_install_artifact: 'After install artifact'
|
54
65
|
before_setup: 'Before setup'
|
66
|
+
before_setup_artifact: 'Before setup artifact'
|
55
67
|
setup_group:
|
56
68
|
g_a_pre_setup_patch_dependencies: 'Git artifacts dependencies'
|
57
69
|
g_a_pre_setup_patch: 'Git artifacts: apply patches (before setup)'
|
@@ -59,5 +71,8 @@ en:
|
|
59
71
|
chef_cookbooks: 'Сhef сookbooks'
|
60
72
|
g_a_post_setup_patch_dependencies: 'Git artifacts dependencies'
|
61
73
|
g_a_post_setup_patch: 'Git artifacts: apply patches (after setup)'
|
74
|
+
after_setup_artifact: 'After setup artifact'
|
62
75
|
g_a_latest_patch: 'Git artifacts: latest patch'
|
63
76
|
docker_instructions: 'Docker instructions'
|
77
|
+
g_a_artifact_patch: 'Git artifacts: artifact patch'
|
78
|
+
build_artifact: 'Build artifact'
|
data/config/en/net_status.yml
CHANGED
@@ -8,7 +8,7 @@ en:
|
|
8
8
|
application_not_run: "Application run failed!"
|
9
9
|
git_branch_without_name: "Application has specific revision that isn't associated with a branch name!"
|
10
10
|
ci_environment_required: 'CI environment required (Travis or GitLab CI)!'
|
11
|
-
|
11
|
+
cookbooks_stage_checksum_not_calculated: "Cookbooks checksum not calculated for stage '%{stage}', run build first"
|
12
12
|
dappfile:
|
13
13
|
incorrect: "Dappfile with '%{error}':\n%{message}"
|
14
14
|
build:
|
@@ -19,26 +19,35 @@ en:
|
|
19
19
|
from_image_not_found: 'Image `%{name}` not found!'
|
20
20
|
project:
|
21
21
|
spush_command_unexpected_apps_number: "Command 'spush' can process only one application!"
|
22
|
-
|
22
|
+
command_unexpected_apps_number: "Command can process only one application!"
|
23
23
|
no_such_app: "No such app: '%{apps_patterns}'!"
|
24
24
|
dappfile_not_found: "Dappfile not found!"
|
25
25
|
cannot_run_ssh_agent: "Cannot run ssh-agent"
|
26
26
|
ssh_key_not_found: "Ssh key '%{path}' not exist!"
|
27
|
+
mrproper_required_option: "Expected command option '--all' or '--improper-cache-version-stages'!"
|
27
28
|
config:
|
28
29
|
builder_type_conflict: 'Conflict between builder types!'
|
29
30
|
builder_type_unsupported: "Defined unsupported builder type `%{type}`!"
|
30
|
-
docker_from_not_defined: "`docker.from` not defined!"
|
31
31
|
artifact_unexpected_attribute: "Artifact doesn't has attribute '%{attr}'!"
|
32
|
+
artifact_conflict: "Conflict between artifacts paths!"
|
33
|
+
scratch_unsupported_directive: "Scratch application has unsupported directive '%{directive}'!"
|
34
|
+
scratch_artifact_required: "Scratch application without artifacts!"
|
35
|
+
scratch_artifact_associated: "Scratch artifact cannot be associated: not expected 'before'/'after' option!"
|
36
|
+
scratch_artifact_docker_from: "Scratch artifact must have directive 'docker.from'!"
|
37
|
+
stage_artifact_not_associated: "Artifact not associated with any stage: expected 'before' or 'after' option!"
|
38
|
+
stage_artifact_double_associate: "Artifact cannot use with both associated options 'before' and 'after'!"
|
39
|
+
stage_artifact_not_supported_associated_stage: "Artifact not supported associated stage '%{stage}'!"
|
32
40
|
git_artifact_unexpected_attribute: "'%{type}' git artifact doesn't has attribute '%{attr}'!"
|
33
41
|
docker_from_incorrect: "`docker.from` has incorrect value `%{name}`: expected format `image_name:tag`!"
|
34
42
|
app_name_incorrect: "Application has incorrect name '%{name}': doesn't match regex '%{reg}'!"
|
35
43
|
chef:
|
36
44
|
stage_path_overlap: "Cannot install '%{cookbook}' cookbook's path %{from} into %{to}: already exists"
|
45
|
+
mdapp_dependency_in_metadata_forbidden: "Using mdapp as dependency in metadata.rb forbidden: detected '%{dependency}'"
|
37
46
|
registry:
|
38
47
|
incorrect_repo: 'Incorrect repository!'
|
39
48
|
no_such_app: 'No such app in registry!'
|
40
49
|
authenticate_type_not_supported: 'Registry authenticate type not supported!'
|
41
|
-
|
50
|
+
page_not_found: "Page '%{url}' not found!"
|
42
51
|
user_not_authorized: 'User not authorized!'
|
43
52
|
response_with_error_status: 'Response with error status!'
|
44
53
|
berksfile_absolute_path_forbidden: "Absolute paths in Berksfile are not allowed (cookbook '%{cookbook}', path: '%{path}')"
|
data/lib/dapp.rb
CHANGED
@@ -4,6 +4,7 @@ require 'tmpdir'
|
|
4
4
|
require 'digest'
|
5
5
|
require 'timeout'
|
6
6
|
require 'base64'
|
7
|
+
require 'mixlib/cli'
|
7
8
|
require 'mixlib/shellout'
|
8
9
|
require 'securerandom'
|
9
10
|
require 'excon'
|
@@ -16,13 +17,10 @@ require 'paint'
|
|
16
17
|
require 'net_status'
|
17
18
|
|
18
19
|
require 'dapp/version'
|
20
|
+
require 'dapp/core_ext/hash'
|
19
21
|
require 'dapp/helper/cli'
|
20
22
|
require 'dapp/helper/trivia'
|
21
23
|
require 'dapp/helper/sha256'
|
22
|
-
require 'dapp/helper/i18n'
|
23
|
-
require 'dapp/helper/paint'
|
24
|
-
require 'dapp/helper/streaming'
|
25
|
-
require 'dapp/helper/shellout'
|
26
24
|
require 'dapp/helper/net_status'
|
27
25
|
require 'dapp/prctl'
|
28
26
|
require 'dapp/error/base'
|
@@ -46,33 +44,47 @@ require 'dapp/cli/push'
|
|
46
44
|
require 'dapp/cli/spush'
|
47
45
|
require 'dapp/cli/list'
|
48
46
|
require 'dapp/cli/stages'
|
49
|
-
require 'dapp/cli/stages/
|
50
|
-
require 'dapp/cli/stages/
|
47
|
+
require 'dapp/cli/stages/flush_local'
|
48
|
+
require 'dapp/cli/stages/flush_repo'
|
49
|
+
require 'dapp/cli/stages/cleanup_local'
|
50
|
+
require 'dapp/cli/stages/cleanup_repo'
|
51
|
+
require 'dapp/cli/stages/push'
|
52
|
+
require 'dapp/cli/stages/pull'
|
51
53
|
require 'dapp/cli/run'
|
52
54
|
require 'dapp/cli/cleanup'
|
53
55
|
require 'dapp/cli/bp'
|
56
|
+
require 'dapp/cli/mrproper'
|
57
|
+
require 'dapp/cli/stage_image'
|
54
58
|
require 'dapp/filelock'
|
59
|
+
require 'dapp/config/directive/artifact'
|
60
|
+
require 'dapp/config/directive/chef'
|
61
|
+
require 'dapp/config/directive/git_artifact'
|
62
|
+
require 'dapp/config/directive/tmp_dir'
|
63
|
+
require 'dapp/config/directive/build_dir'
|
64
|
+
require 'dapp/config/directive/docker/base'
|
65
|
+
require 'dapp/config/directive/docker/artifact'
|
66
|
+
require 'dapp/config/directive/shell/base'
|
67
|
+
require 'dapp/config/directive/shell/artifact'
|
55
68
|
require 'dapp/config/application'
|
56
69
|
require 'dapp/config/main'
|
57
|
-
require 'dapp/config/chef'
|
58
|
-
require 'dapp/config/shell'
|
59
70
|
require 'dapp/config/artifact'
|
60
|
-
require 'dapp/config/git_artifact'
|
61
|
-
require 'dapp/config/docker'
|
62
71
|
require 'dapp/builder/base'
|
63
72
|
require 'dapp/builder/chef'
|
64
73
|
require 'dapp/builder/chef/error'
|
65
74
|
require 'dapp/builder/chef/cookbook_metadata'
|
66
75
|
require 'dapp/builder/chef/berksfile'
|
67
76
|
require 'dapp/builder/shell'
|
68
|
-
require 'dapp/build/stage/mod/artifact'
|
69
77
|
require 'dapp/build/stage/mod/logging'
|
70
78
|
require 'dapp/build/stage/mod/group'
|
71
79
|
require 'dapp/build/stage/base'
|
72
80
|
require 'dapp/build/stage/ga_base'
|
73
81
|
require 'dapp/build/stage/ga_dependencies_base'
|
82
|
+
require 'dapp/build/stage/artifact_base'
|
83
|
+
require 'dapp/build/stage/artifact_default'
|
74
84
|
require 'dapp/build/stage/from'
|
85
|
+
require 'dapp/build/stage/import_artifact'
|
75
86
|
require 'dapp/build/stage/before_install'
|
87
|
+
require 'dapp/build/stage/before_install_artifact'
|
76
88
|
require 'dapp/build/stage/ga_archive_dependencies'
|
77
89
|
require 'dapp/build/stage/ga_archive'
|
78
90
|
require 'dapp/build/stage/install/ga_pre_install_patch_dependencies'
|
@@ -80,32 +92,49 @@ require 'dapp/build/stage/install/ga_pre_install_patch'
|
|
80
92
|
require 'dapp/build/stage/install/install'
|
81
93
|
require 'dapp/build/stage/install/ga_post_install_patch_dependencies'
|
82
94
|
require 'dapp/build/stage/install/ga_post_install_patch'
|
83
|
-
require 'dapp/build/stage/
|
95
|
+
require 'dapp/build/stage/after_install_artifact'
|
84
96
|
require 'dapp/build/stage/before_setup'
|
97
|
+
require 'dapp/build/stage/before_setup_artifact'
|
85
98
|
require 'dapp/build/stage/setup/ga_pre_setup_patch_dependencies'
|
86
99
|
require 'dapp/build/stage/setup/ga_pre_setup_patch'
|
87
100
|
require 'dapp/build/stage/setup/setup'
|
88
101
|
require 'dapp/build/stage/setup/chef_cookbooks'
|
89
102
|
require 'dapp/build/stage/setup/ga_post_setup_patch_dependencies'
|
90
103
|
require 'dapp/build/stage/setup/ga_post_setup_patch'
|
104
|
+
require 'dapp/build/stage/after_setup_artifact'
|
91
105
|
require 'dapp/build/stage/ga_latest_patch'
|
92
106
|
require 'dapp/build/stage/docker_instructions'
|
107
|
+
require 'dapp/build/stage/ga_artifact_patch'
|
108
|
+
require 'dapp/build/stage/build_artifact'
|
93
109
|
require 'dapp/project/lock'
|
94
110
|
require 'dapp/project/ssh_agent'
|
95
111
|
require 'dapp/project/dappfile'
|
96
|
-
require 'dapp/project/
|
112
|
+
require 'dapp/project/command/common'
|
97
113
|
require 'dapp/project/command/build'
|
98
114
|
require 'dapp/project/command/bp'
|
99
115
|
require 'dapp/project/command/cleanup'
|
100
|
-
require 'dapp/project/command/
|
116
|
+
require 'dapp/project/command/mrproper'
|
117
|
+
require 'dapp/project/command/stage_image'
|
101
118
|
require 'dapp/project/command/list'
|
102
119
|
require 'dapp/project/command/push'
|
103
120
|
require 'dapp/project/command/run'
|
104
121
|
require 'dapp/project/command/spush'
|
105
|
-
require 'dapp/project/command/
|
106
|
-
require 'dapp/project/command/
|
122
|
+
require 'dapp/project/command/stages/common'
|
123
|
+
require 'dapp/project/command/stages/cleanup_local'
|
124
|
+
require 'dapp/project/command/stages/cleanup_repo'
|
125
|
+
require 'dapp/project/command/stages/flush_local'
|
126
|
+
require 'dapp/project/command/stages/flush_repo'
|
127
|
+
require 'dapp/project/command/stages/push'
|
128
|
+
require 'dapp/project/command/stages/pull'
|
107
129
|
require 'dapp/project/logging/base'
|
108
130
|
require 'dapp/project/logging/process'
|
131
|
+
require 'dapp/project/logging/paint'
|
132
|
+
require 'dapp/project/logging/i18n'
|
133
|
+
require 'dapp/project/deps/base'
|
134
|
+
require 'dapp/project/deps/gitartifact'
|
135
|
+
require 'dapp/project/shellout/streaming'
|
136
|
+
require 'dapp/project/shellout/base'
|
137
|
+
require 'dapp/project/shellout/system'
|
109
138
|
require 'dapp/project'
|
110
139
|
require 'dapp/docker_registry'
|
111
140
|
require 'dapp/docker_registry/mod/request'
|
@@ -115,10 +144,13 @@ require 'dapp/docker_registry/default'
|
|
115
144
|
require 'dapp/application/git_artifact'
|
116
145
|
require 'dapp/application/path'
|
117
146
|
require 'dapp/application/tags'
|
147
|
+
require 'dapp/application/stages'
|
118
148
|
require 'dapp/application'
|
149
|
+
require 'dapp/artifact'
|
119
150
|
require 'dapp/image/argument'
|
120
151
|
require 'dapp/image/docker'
|
121
152
|
require 'dapp/image/stage'
|
153
|
+
require 'dapp/image/scratch'
|
122
154
|
require 'dapp/git_repo/base'
|
123
155
|
require 'dapp/git_repo/own'
|
124
156
|
require 'dapp/git_repo/remote'
|
data/lib/dapp/application.rb
CHANGED
@@ -4,32 +4,28 @@ module Dapp
|
|
4
4
|
include GitArtifact
|
5
5
|
include Path
|
6
6
|
include Tags
|
7
|
+
include Stages
|
7
8
|
|
8
9
|
include Helper::Sha256
|
9
10
|
|
10
11
|
attr_reader :config
|
11
12
|
attr_reader :ignore_git_fetch
|
12
13
|
attr_reader :should_be_built
|
13
|
-
attr_reader :is_artifact
|
14
14
|
attr_reader :project
|
15
15
|
|
16
|
-
def initialize(config:, project:, should_be_built: false, ignore_git_fetch: false
|
16
|
+
def initialize(config:, project:, should_be_built: false, ignore_git_fetch: false)
|
17
17
|
@config = config
|
18
18
|
@project = project
|
19
19
|
|
20
|
-
@tmp_path = Dir.mktmpdir(project.cli_options[:tmp_dir_prefix] || 'dapp-')
|
21
|
-
|
22
|
-
@last_stage = Build::Stage::DockerInstructions.new(self)
|
23
20
|
@ignore_git_fetch = ignore_git_fetch
|
24
21
|
@should_be_built = should_be_built
|
25
|
-
|
22
|
+
|
23
|
+
raise Error::Application, code: :application_not_built if should_be_built?
|
26
24
|
end
|
27
25
|
|
28
26
|
def build!
|
29
|
-
raise Error::Application, code: :application_not_built if should_be_built && !last_stage.image.tagged?
|
30
|
-
|
31
27
|
with_introspection do
|
32
|
-
project.lock("#{config._basename}.images",
|
28
|
+
project.lock("#{config._basename}.images", readonly: true) do
|
33
29
|
last_stage.build_lock! do
|
34
30
|
last_stage.build!
|
35
31
|
last_stage.save_in_cache!
|
@@ -41,72 +37,111 @@ module Dapp
|
|
41
37
|
end
|
42
38
|
|
43
39
|
def export!(repo, format:)
|
44
|
-
|
45
|
-
|
46
|
-
raise Error::Application, code: :application_not_built unless last_stage.image.tagged? || project.dry_run?
|
47
|
-
|
48
|
-
project.lock("#{config._basename}.images", shared: true) do
|
40
|
+
project.lock("#{config._basename}.images", readonly: true) do
|
49
41
|
tags.each do |tag|
|
50
42
|
image_name = format % { repo: repo, application_name: config._name, tag: tag }
|
51
|
-
|
52
|
-
|
53
|
-
|
54
|
-
|
55
|
-
|
56
|
-
|
57
|
-
|
58
|
-
|
59
|
-
|
43
|
+
export_base!(last_stage.image, image_name)
|
44
|
+
end
|
45
|
+
end
|
46
|
+
end
|
47
|
+
|
48
|
+
def export_stages!(repo, format:)
|
49
|
+
project.lock("#{config._basename}.images", readonly: true) do
|
50
|
+
export_images.each do |image|
|
51
|
+
image_name = format % { repo: repo, signature: image.name.split(':').last }
|
52
|
+
export_base!(image, image_name)
|
53
|
+
end
|
54
|
+
end
|
55
|
+
end
|
56
|
+
|
57
|
+
def export_base!(image, image_name)
|
58
|
+
if project.dry_run?
|
59
|
+
project.log_state(image_name, state: project.t(code: 'state.push'), styles: { status: :success })
|
60
|
+
else
|
61
|
+
project.lock("image.#{hashsum image_name}") do
|
62
|
+
Dapp::Image::Stage.cache_reset(image_name)
|
63
|
+
project.log_process(image_name, process: project.t(code: 'status.process.pushing')) do
|
64
|
+
project.with_log_indent do
|
65
|
+
image.export!(image_name)
|
60
66
|
end
|
61
67
|
end
|
62
68
|
end
|
63
69
|
end
|
64
70
|
end
|
65
71
|
|
72
|
+
def import_stages!(repo, format:)
|
73
|
+
project.lock("#{config._basename}.images", readonly: true) do
|
74
|
+
import_images.each do |image|
|
75
|
+
begin
|
76
|
+
image_name = format % { repo: repo, signature: image.name.split(':').last }
|
77
|
+
import_base!(image, image_name)
|
78
|
+
rescue Error::Shellout
|
79
|
+
next
|
80
|
+
end
|
81
|
+
break unless project.pull_all_stages?
|
82
|
+
end
|
83
|
+
end
|
84
|
+
end
|
85
|
+
|
86
|
+
def import_base!(image, image_name)
|
87
|
+
if project.dry_run?
|
88
|
+
project.log_state(image_name, state: project.t(code: 'state.pull'), styles: { status: :success })
|
89
|
+
else
|
90
|
+
project.lock("image.#{hashsum image_name}") do
|
91
|
+
project.log_process(image_name,
|
92
|
+
process: project.t(code: 'status.process.pulling'),
|
93
|
+
status: { failed: project.t(code: 'status.failed.not_pulled') },
|
94
|
+
style: { failed: :secondary }) do
|
95
|
+
image.import!(image_name)
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
end
|
100
|
+
|
66
101
|
def run(docker_options, command)
|
67
|
-
raise Error::Application, code: :application_not_built unless last_stage.image.tagged?
|
68
102
|
cmd = "docker run #{[docker_options, last_stage.image.name, command].flatten.compact.join(' ')}"
|
69
103
|
if project.dry_run?
|
70
|
-
project.
|
104
|
+
project.log(cmd)
|
71
105
|
else
|
72
106
|
system(cmd) || raise(Error::Application, code: :application_not_run)
|
73
107
|
end
|
74
108
|
end
|
75
109
|
|
76
|
-
def
|
77
|
-
|
78
|
-
end
|
79
|
-
|
80
|
-
def stage_cache_format
|
81
|
-
"#{project.cache_format % { application_name: config._basename }}:%{signature}"
|
110
|
+
def stage_image_name(stage_name)
|
111
|
+
stages.find { |stage| stage.send(:name) == stage_name }.image.name
|
82
112
|
end
|
83
113
|
|
84
|
-
def
|
85
|
-
|
114
|
+
def builder
|
115
|
+
@builder ||= Builder.const_get(config._builder.capitalize).new(self)
|
86
116
|
end
|
87
117
|
|
88
|
-
def artifact
|
89
|
-
|
118
|
+
def artifact?
|
119
|
+
false
|
90
120
|
end
|
91
121
|
|
92
|
-
def
|
93
|
-
|
122
|
+
def scratch?
|
123
|
+
config._docker._from.nil?
|
94
124
|
end
|
95
125
|
|
96
126
|
protected
|
97
127
|
|
128
|
+
def should_be_built?
|
129
|
+
should_be_built && begin
|
130
|
+
builder.before_application_should_be_built_check
|
131
|
+
!last_stage.image.tagged?
|
132
|
+
end
|
133
|
+
end
|
134
|
+
|
98
135
|
def with_introspection
|
99
136
|
yield
|
100
137
|
rescue Exception::IntrospectImage => e
|
101
138
|
data = e.net_status[:data]
|
102
|
-
cmd = "docker run -ti --rm --entrypoint
|
139
|
+
cmd = "docker run -ti --rm --entrypoint #{project.bash_path} #{data[:options]} #{data[:built_id]}"
|
103
140
|
system(cmd).tap do |res|
|
104
141
|
project.shellout!("docker rmi #{data[:built_id]}") if data[:rmi]
|
105
142
|
res || raise(Error::Application, code: :application_not_run)
|
106
143
|
end
|
107
144
|
exit 0
|
108
145
|
end
|
109
|
-
|
110
|
-
attr_reader :last_stage
|
111
146
|
end # Application
|
112
147
|
end # Dapp
|