dapp 0.21.16 → 0.22.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 +5 -5
- data/bin/dapp +0 -4
- data/config/en/net_status.yml +3 -2
- data/lib/dapp.rb +1 -4
- data/lib/dapp/cli.rb +0 -4
- data/lib/dapp/cli/command/base.rb +1 -7
- data/lib/dapp/cli/command/update.rb +1 -1
- data/lib/dapp/dapp.rb +19 -40
- data/lib/dapp/dapp/command/common.rb +19 -0
- data/lib/dapp/dapp/option_tags.rb +4 -6
- data/lib/dapp/dimg/build/stage/artifact_default.rb +1 -1
- data/lib/dapp/dimg/builder/chef/cookbook.rb +1 -1
- data/lib/dapp/dimg/cli/command/base.rb +4 -0
- data/lib/dapp/dimg/config/directive/artifact_dimg.rb +7 -0
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +0 -1
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +16 -39
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +7 -6
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +98 -24
- data/lib/dapp/dimg/dapp/command/common.rb +4 -13
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +9 -7
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +1 -1
- data/lib/dapp/dimg/dapp/command/stages/common.rb +1 -6
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +5 -3
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +1 -1
- data/lib/dapp/dimg/docker_registry/dimg.rb +0 -9
- data/lib/dapp/dimg/git_repo/base.rb +30 -4
- data/lib/dapp/dimg/image/argument.rb +1 -3
- data/lib/dapp/helper/trivia.rb +0 -35
- data/lib/dapp/kube/cli/command/kube/deploy.rb +6 -0
- data/lib/dapp/kube/dapp/command/common.rb +129 -13
- data/lib/dapp/kube/dapp/command/deploy.rb +2 -9
- data/lib/dapp/kube/dapp/command/render.rb +2 -2
- data/lib/dapp/kube/error/base.rb +5 -1
- data/lib/dapp/kube/helm/release.rb +39 -3
- data/lib/dapp/kube/kubernetes/client.rb +2 -0
- data/lib/dapp/version.rb +2 -2
- metadata +4 -33
- data/lib/dapp/dapp/sentry.rb +0 -112
- data/lib/dapp/helper/url.rb +0 -23
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
|
-
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
2
|
+
SHA256:
|
3
|
+
metadata.gz: 77598b3aaf53c25bda513349cdd1d04f7bbb3b0381553c674753926cd9422ecc
|
4
|
+
data.tar.gz: c921eb3a8041c2c4bdb86b28ba6179b6cdefb17095558d44ebc87f79518a726c
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 27a73294f4dc0bc778bad4f766f30ae6bd717258b920bf55a0c85a52274c8b7042f02c3c5b55fff308e870026b698cac55e69fe428802db9971972b475299a55
|
7
|
+
data.tar.gz: 27e40f37ffd4d68f06f573840b2c5d72bd5405dca1f8a0de691fd71abcc080db432cb5259c69884eaecca6abb26b43a351b545eff10060bc4c5556907a377728
|
data/bin/dapp
CHANGED
data/config/en/net_status.yml
CHANGED
@@ -8,6 +8,7 @@ en:
|
|
8
8
|
dimg_not_run: "Dimg run failed!"
|
9
9
|
kube:
|
10
10
|
deploy_timeout: "Deploy timeout!"
|
11
|
+
connect_timeout: "Connect timeout when connecting to kube API."
|
11
12
|
dappfile:
|
12
13
|
incorrect: "Dappfile with `%{error}`:\n%{message}"
|
13
14
|
build:
|
@@ -51,7 +52,7 @@ en:
|
|
51
52
|
cannot_run_ssh_agent: "Can't run ssh-agent!"
|
52
53
|
ssh_key_not_found: "Ssh key `%{path}` doesn't exist!"
|
53
54
|
docker_not_found: "Docker not found!"
|
54
|
-
docker_version: "Required docker version (`%{version}`):
|
55
|
+
docker_version: "Required docker version (`%{version}`): `%{min_version}` <= VERSION <= `%{max_version}`!"
|
55
56
|
dapp_config_file_incorrect: "%{message}"
|
56
57
|
yaml_file_incorrect: "Yaml file `%{file}`: `%{message}`"
|
57
58
|
yaml_incorrect: "`%{message}`"
|
@@ -80,7 +81,7 @@ en:
|
|
80
81
|
stage_artifact_double_associate: "Can't use `%{stage}` stage for artifact; already used in `%{conflict_stage}` stage!"
|
81
82
|
stage_artifact_not_supported_associated_stage: "Bad artifact stage `%{stage}`!"
|
82
83
|
git_artifact_remote_branch_with_commit: "Remote git repo: use `commit` or `branch` directive!"
|
83
|
-
artifact_conflict: "Conflict between artifacts
|
84
|
+
artifact_conflict: "Conflict between artifacts paths!"
|
84
85
|
scratch_unsupported_directive: "Scratch dimg has unsupported directive `%{directive}`!"
|
85
86
|
scratch_artifact_required: "Scratch dimg without artifacts!"
|
86
87
|
scratch_artifact_associated: "Scratch artifact can't be associated: not expected `before`/`after` attribute!"
|
data/lib/dapp.rb
CHANGED
@@ -24,8 +24,6 @@ require 'openssl'
|
|
24
24
|
require 'etc'
|
25
25
|
require 'zlib'
|
26
26
|
require 'slugify'
|
27
|
-
require 'sentry-raven'
|
28
|
-
require 'toml-rb'
|
29
27
|
|
30
28
|
require 'dapp/version'
|
31
29
|
require 'dapp/core_ext/hash'
|
@@ -36,7 +34,6 @@ require 'dapp/helper/sha256'
|
|
36
34
|
require 'dapp/helper/net_status'
|
37
35
|
require 'dapp/helper/tar'
|
38
36
|
require 'dapp/helper/yaml'
|
39
|
-
require 'dapp/helper/url'
|
40
37
|
require 'dapp/prctl'
|
41
38
|
require 'dapp/error/base'
|
42
39
|
require 'dapp/error/dapp'
|
@@ -52,7 +49,6 @@ require 'dapp/config/config'
|
|
52
49
|
require 'dapp/config/error/config'
|
53
50
|
require 'dapp/dapp/lock'
|
54
51
|
require 'dapp/dapp/ssh_agent'
|
55
|
-
require 'dapp/dapp/sentry'
|
56
52
|
require 'dapp/dapp/git_artifact'
|
57
53
|
require 'dapp/dapp/dappfile'
|
58
54
|
require 'dapp/dapp/chef'
|
@@ -67,6 +63,7 @@ require 'dapp/dapp/deps/base'
|
|
67
63
|
require 'dapp/dapp/deps/gitartifact'
|
68
64
|
require 'dapp/dapp/shellout/streaming'
|
69
65
|
require 'dapp/dapp/shellout/base'
|
66
|
+
require 'dapp/dapp/command/common'
|
70
67
|
require 'dapp/dapp'
|
71
68
|
require 'dapp/deployment'
|
72
69
|
require 'dapp/deployment/config/directive/mod/group'
|
data/lib/dapp/cli.rb
CHANGED
@@ -62,8 +62,6 @@ module Dapp
|
|
62
62
|
|
63
63
|
def run_dapp_command(run_method, options: {}, log_running_time: true)
|
64
64
|
dapp = ::Dapp::Dapp.new(options: options)
|
65
|
-
::Dapp::CLI.dapp_object = dapp
|
66
|
-
dapp.sentry_message("Manual usage: `#{options[:dapp_command]}` command") unless ENV['CI']
|
67
65
|
|
68
66
|
log_dapp_running_time(dapp, ignore: !log_running_time) do
|
69
67
|
if block_given?
|
@@ -74,10 +72,6 @@ module Dapp
|
|
74
72
|
end
|
75
73
|
end
|
76
74
|
|
77
|
-
def run_method
|
78
|
-
class_to_lowercase
|
79
|
-
end
|
80
|
-
|
81
75
|
def log_dapp_running_time(dapp, ignore: false)
|
82
76
|
return yield if ignore
|
83
77
|
|
@@ -94,7 +88,7 @@ module Dapp
|
|
94
88
|
end
|
95
89
|
|
96
90
|
def cli_options(**kwargs)
|
97
|
-
config.merge(
|
91
|
+
config.merge(**kwargs)
|
98
92
|
end
|
99
93
|
end
|
100
94
|
end
|
@@ -4,7 +4,7 @@ module Dapp
|
|
4
4
|
class Update < ::Dapp::CLI
|
5
5
|
def run(_argv)
|
6
6
|
spec = Gem::Specification.find do |s|
|
7
|
-
File.fnmatch
|
7
|
+
File.fnmatch(File.join(s.full_gem_path, '*'), __FILE__)
|
8
8
|
end
|
9
9
|
unless (latest_version = latest_beta_version(spec)).nil?
|
10
10
|
try_lock do
|
data/lib/dapp/dapp.rb
CHANGED
@@ -7,19 +7,18 @@ module Dapp
|
|
7
7
|
include DappConfig
|
8
8
|
include OptionTags
|
9
9
|
|
10
|
+
include Command::Common
|
11
|
+
|
10
12
|
include Logging::Base
|
11
13
|
include Logging::Process
|
12
14
|
include Logging::I18n
|
13
15
|
include Logging::Paint
|
14
16
|
|
15
17
|
include SshAgent
|
16
|
-
include Sentry
|
17
|
-
|
18
18
|
include Helper::Sha256
|
19
|
-
extend
|
19
|
+
extend Helper::Trivia
|
20
20
|
include Helper::Trivia
|
21
21
|
include Helper::Tar
|
22
|
-
include Helper::Url
|
23
22
|
|
24
23
|
include Deps::Toolchain
|
25
24
|
include Deps::Gitartifact
|
@@ -40,18 +39,6 @@ module Dapp
|
|
40
39
|
self.class.options
|
41
40
|
end
|
42
41
|
|
43
|
-
def settings
|
44
|
-
@settings ||= begin
|
45
|
-
settings_path = File.join(self.class.home_dir, "settings.toml")
|
46
|
-
|
47
|
-
if File.exists? settings_path
|
48
|
-
TomlRB.load_file(settings_path)
|
49
|
-
else
|
50
|
-
{}
|
51
|
-
end
|
52
|
-
end
|
53
|
-
end
|
54
|
-
|
55
42
|
def name
|
56
43
|
@name ||= begin
|
57
44
|
if name = options[:name]
|
@@ -94,18 +81,15 @@ module Dapp
|
|
94
81
|
self.class.tmp_base_dir
|
95
82
|
end
|
96
83
|
|
97
|
-
def
|
98
|
-
@
|
84
|
+
def build_path(*path)
|
85
|
+
@build_path ||= begin
|
99
86
|
if option_build_dir
|
100
87
|
Pathname.new(option_build_dir)
|
101
88
|
else
|
102
89
|
path('.dapp_build')
|
103
90
|
end.expand_path.tap(&:mkpath)
|
104
91
|
end
|
105
|
-
|
106
|
-
|
107
|
-
def build_path(*path)
|
108
|
-
make_path(build_dir, *path)
|
92
|
+
make_path(@build_path, *path)
|
109
93
|
end
|
110
94
|
|
111
95
|
def local_git_artifact_exclude_paths(&blk)
|
@@ -151,38 +135,33 @@ module Dapp
|
|
151
135
|
end
|
152
136
|
|
153
137
|
class << self
|
154
|
-
def home_dir
|
155
|
-
File.join(Dir.home, ".dapp")
|
156
|
-
end
|
157
|
-
|
158
138
|
def options
|
159
139
|
@options ||= {}
|
160
140
|
end
|
161
141
|
|
162
142
|
def host_docker
|
163
143
|
@host_docker ||= begin
|
164
|
-
|
165
|
-
|
166
|
-
|
167
|
-
|
144
|
+
raise Error::Dapp, code: :docker_not_found if (res = shellout('which docker')).exitstatus.nonzero?
|
145
|
+
docker_bin = res.stdout.strip
|
146
|
+
|
147
|
+
current_docker_version = shellout!("#{docker_bin} --version").stdout.strip
|
148
|
+
required_min_docker_version = '1.10.0'
|
149
|
+
required_max_docker_version = '17.09.0'
|
150
|
+
|
151
|
+
if Gem::Version.new(required_min_docker_version) > Gem::Version.new(current_docker_version[/(\d+\.)+\d+/]) ||
|
152
|
+
Gem::Version.new(required_max_docker_version) < Gem::Version.new(current_docker_version[/(\d+\.)+\d+/])
|
153
|
+
raise Error::Dapp, code: :docker_version, data: { min_version: required_min_docker_version,
|
154
|
+
max_version: required_max_docker_version,
|
155
|
+
version: current_docker_version[/(\d+\.)+\d+/] }
|
168
156
|
end
|
169
157
|
|
170
158
|
[].tap do |cmd|
|
171
|
-
cmd <<
|
159
|
+
cmd << docker_bin
|
172
160
|
cmd << "--config #{host_docker_config_dir}"
|
173
161
|
end.join(' ')
|
174
162
|
end
|
175
163
|
end
|
176
164
|
|
177
|
-
def host_docker_bin
|
178
|
-
raise Error::Dapp, code: :docker_not_found if (res = shellout('which docker')).exitstatus.nonzero?
|
179
|
-
res.stdout.strip
|
180
|
-
end
|
181
|
-
|
182
|
-
def host_docker_minor_version
|
183
|
-
Gem::Version.new(shellout!("#{host_docker_bin} --version").stdout.strip[/\d+\.\d+/])
|
184
|
-
end
|
185
|
-
|
186
165
|
def host_docker_config_dir
|
187
166
|
if options_with_docker_credentials? && !options[:repo].nil?
|
188
167
|
host_docker_tmp_config_dir
|
@@ -0,0 +1,19 @@
|
|
1
|
+
module Dapp
|
2
|
+
class Dapp
|
3
|
+
module Command
|
4
|
+
module Common
|
5
|
+
def option_repo
|
6
|
+
unless options[:repo].nil?
|
7
|
+
return "localhost:5000/#{name}" if options[:repo] == ':minikube'
|
8
|
+
options[:repo]
|
9
|
+
end
|
10
|
+
end
|
11
|
+
|
12
|
+
def dimg_registry(repo)
|
13
|
+
validate_repo_name!(repo)
|
14
|
+
::Dapp::Dimg::DockerRegistry.new(repo)
|
15
|
+
end
|
16
|
+
end
|
17
|
+
end
|
18
|
+
end
|
19
|
+
end
|
@@ -5,14 +5,12 @@ module Dapp
|
|
5
5
|
@git_repo ||= ::Dapp::Dimg::GitRepo::Own.new(self)
|
6
6
|
end
|
7
7
|
|
8
|
+
def tagging_schemes
|
9
|
+
%w(git_tag git_branch git_commit custom ci)
|
10
|
+
end
|
11
|
+
|
8
12
|
def tags_by_scheme
|
9
13
|
@tags_by_scheme_name ||= begin
|
10
|
-
if simple_tags[:custom].any?
|
11
|
-
if settings.fetch("sentry", {}).fetch("detect-push-tag-usage", false)
|
12
|
-
sentry_message("--tag or --tag-slug usage detected", extra: {"slug_tags" => simple_tags})
|
13
|
-
end
|
14
|
-
end
|
15
|
-
|
16
14
|
[simple_tags, branch_tags, commit_tags, build_tags, ci_tags].reduce({}) do |some_tags_by_scheme, tags_by_scheme|
|
17
15
|
tags_by_scheme.in_depth_merge(some_tags_by_scheme)
|
18
16
|
end.tap do |tags_by_scheme|
|
@@ -32,7 +32,7 @@ module Dapp
|
|
32
32
|
def safe_cp(from, to, owner, group, include_paths = [], exclude_paths = [])
|
33
33
|
''.tap do |cmd|
|
34
34
|
cmd << dimg.dapp.rsync_bin
|
35
|
-
cmd << ' --archive --links
|
35
|
+
cmd << ' --archive --links'
|
36
36
|
cmd << " --chown=#{owner}:#{group}" if owner or group
|
37
37
|
|
38
38
|
if include_paths.any?
|
@@ -87,7 +87,7 @@ module Dapp
|
|
87
87
|
"#{builder.dimg.dapp.mkdir_bin} -p ~/.ssh",
|
88
88
|
'echo "Host *" >> ~/.ssh/config',
|
89
89
|
'echo " StrictHostKeyChecking no" >> ~/.ssh/config',
|
90
|
-
*local_paths.map {|path| "#{builder.dimg.dapp.rsync_bin} --
|
90
|
+
*local_paths.map {|path| "#{builder.dimg.dapp.rsync_bin} --archive --relative #{path} /tmp/local_cookbooks"},
|
91
91
|
"cd /tmp/local_cookbooks/#{path}",
|
92
92
|
"cp #{tmp_berksfile_path} Berksfile",
|
93
93
|
"cp #{tmp_metadata_path} metadata.rb",
|
@@ -4,8 +4,6 @@ module Dapp
|
|
4
4
|
module Directive
|
5
5
|
class Dimg < Base
|
6
6
|
module Validation
|
7
|
-
include Helper::Trivia
|
8
|
-
|
9
7
|
def validate!
|
10
8
|
directives_validate!
|
11
9
|
validate_scratch!
|
@@ -75,39 +73,12 @@ module Dapp
|
|
75
73
|
verifiable_artifact = artifacts.shift
|
76
74
|
artifacts.select { |a| a[:to] == verifiable_artifact[:to] }.each do |artifact|
|
77
75
|
next if verifiable_artifact[:index] == artifact[:index]
|
78
|
-
|
79
|
-
|
80
|
-
validate_artifact!(artifact, verifiable_artifact)
|
81
|
-
rescue Error::Config => e
|
82
|
-
conflict_between_artifacts!(artifact, verifiable_artifact) if e.net_status[:code] == :artifact_conflict
|
83
|
-
raise
|
84
|
-
end
|
76
|
+
validate_artifact!(verifiable_artifact, artifact)
|
77
|
+
validate_artifact!(artifact, verifiable_artifact)
|
85
78
|
end
|
86
79
|
end
|
87
80
|
end
|
88
81
|
|
89
|
-
def conflict_between_artifacts!(*formatted_artifacts)
|
90
|
-
artifacts = formatted_artifacts.flatten.map { |formatted_artifact| formatted_artifact[:related_artifact] }
|
91
|
-
dappfile_context = artifacts.map do |artifact|
|
92
|
-
artifact_directive = []
|
93
|
-
artifact_directive << begin
|
94
|
-
if artifact.is_a? Artifact::Export
|
95
|
-
"artifact.export('#{artifact._cwd}') do"
|
96
|
-
else
|
97
|
-
"git#{"('#{artifact._url}')" if artifact.respond_to?(:_url)}.add('#{artifact._cwd}') do"
|
98
|
-
end
|
99
|
-
end
|
100
|
-
[:include_paths, :exclude_paths].each do |directive|
|
101
|
-
next if (paths = artifact.send("_#{directive}")).empty?
|
102
|
-
artifact_directive << " #{directive} '#{paths.join("', '")}'"
|
103
|
-
end
|
104
|
-
artifact_directive << " to '#{artifact._to}'"
|
105
|
-
artifact_directive << 'end'
|
106
|
-
artifact_directive.join("\n")
|
107
|
-
end.join("\n\n")
|
108
|
-
raise Error::Config, code: :artifact_conflict, data: { dappfile_context: dappfile_context }
|
109
|
-
end
|
110
|
-
|
111
82
|
def validate_artifact_format(artifacts)
|
112
83
|
artifacts.map do |a|
|
113
84
|
path_format = proc { |path| File.expand_path(File.join('/', path, '/'))[1..-1] }
|
@@ -135,20 +106,26 @@ module Dapp
|
|
135
106
|
index: artifacts.index(a),
|
136
107
|
to: to,
|
137
108
|
include_paths: include_paths,
|
138
|
-
exclude_paths: exclude_paths
|
139
|
-
related_artifact: a
|
109
|
+
exclude_paths: exclude_paths
|
140
110
|
}
|
141
111
|
end
|
142
112
|
end
|
143
113
|
|
144
114
|
def validate_artifact!(verifiable_artifact, artifact)
|
145
|
-
|
146
|
-
|
147
|
-
!
|
148
|
-
end
|
149
|
-
|
115
|
+
verifiable_artifact[:include_paths].each do |verifiable_path|
|
116
|
+
potential_conflicts = artifact[:include_paths].select { |path| path.start_with?(verifiable_path) }
|
117
|
+
validate_artifact_path!(verifiable_artifact, potential_conflicts)
|
118
|
+
end.empty? && verifiable_artifact[:exclude_paths].empty? && raise(Error::Config, code: :artifact_conflict)
|
119
|
+
validate_artifact_path!(verifiable_artifact, artifact[:include_paths]) if verifiable_artifact[:include_paths].empty?
|
120
|
+
end
|
150
121
|
|
151
|
-
|
122
|
+
def validate_artifact_path!(verifiable_artifact, potential_conflicts)
|
123
|
+
potential_conflicts.all? do |path|
|
124
|
+
loop do
|
125
|
+
break if verifiable_artifact[:exclude_paths].include?(path) || ((path = File.dirname(path)) == '.')
|
126
|
+
end
|
127
|
+
verifiable_artifact[:exclude_paths].include?(path)
|
128
|
+
end.tap { |res| res || raise(Error::Config, code: :artifact_conflict) }
|
152
129
|
end
|
153
130
|
|
154
131
|
def _associated_artifacts
|
@@ -3,13 +3,14 @@ module Dapp
|
|
3
3
|
module Config
|
4
4
|
module Directive
|
5
5
|
class GitArtifactRemote < GitArtifactLocal
|
6
|
-
include ::Dapp::Helper::Url
|
7
|
-
|
8
6
|
attr_reader :_url, :_name, :_branch, :_commit
|
9
7
|
|
10
8
|
def initialize(url, **kwargs, &blk)
|
11
9
|
@_url = url
|
12
|
-
|
10
|
+
|
11
|
+
url_without_scheme = url.split("://", 2).last
|
12
|
+
url_without_creds = url_without_scheme.split(":", 2).last
|
13
|
+
@_name = url_without_creds.gsub(%r{.*?([^\/ ]+\/[^\/ ]+)\.git}, '\\1')
|
13
14
|
|
14
15
|
super(**kwargs, &blk)
|
15
16
|
end
|
@@ -19,7 +20,7 @@ module Dapp
|
|
19
20
|
end
|
20
21
|
|
21
22
|
def commit(value)
|
22
|
-
sub_directive_eval { @_commit = value
|
23
|
+
sub_directive_eval { @_commit = value }
|
23
24
|
end
|
24
25
|
|
25
26
|
def _export
|
@@ -39,11 +40,11 @@ module Dapp
|
|
39
40
|
end
|
40
41
|
|
41
42
|
def branch(value)
|
42
|
-
sub_directive_eval { @_branch = value
|
43
|
+
sub_directive_eval { @_branch = value }
|
43
44
|
end
|
44
45
|
|
45
46
|
def commit(value)
|
46
|
-
sub_directive_eval { @_commit = value
|
47
|
+
sub_directive_eval { @_commit = value }
|
47
48
|
end
|
48
49
|
|
49
50
|
def validate!
|