dapp 0.26.14 → 0.27.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 +0 -4
- data/config/en/common.yml +1 -0
- data/config/en/net_status.yml +2 -0
- 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/dapp.rb +4 -22
- data/lib/dapp/dapp/dappfile.rb +2 -2
- data/lib/dapp/dapp/deps/base.rb +6 -2
- data/lib/dapp/dapp/option_tags.rb +1 -7
- data/lib/dapp/dimg/artifact.rb +4 -0
- data/lib/dapp/dimg/build/stage/artifact_base.rb +7 -7
- data/lib/dapp/dimg/build/stage/artifact_default.rb +4 -5
- data/lib/dapp/dimg/build/stage/base.rb +1 -3
- data/lib/dapp/dimg/build/stage/before_install.rb +2 -3
- data/lib/dapp/dimg/build/stage/from.rb +31 -5
- data/lib/dapp/dimg/build/stage/ga_base.rb +1 -1
- data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +1 -3
- data/lib/dapp/dimg/build/stage/import_artifact.rb +3 -4
- data/lib/dapp/dimg/builder/ansible.rb +167 -2
- data/lib/dapp/dimg/builder/ansible/assets.rb +332 -0
- data/lib/dapp/dimg/builder/chef.rb +2 -2
- data/lib/dapp/dimg/cli/command/base.rb +14 -0
- data/lib/dapp/dimg/cli/command/dimg/build.rb +15 -24
- data/lib/dapp/dimg/cli/command/dimg/run.rb +14 -1
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +2 -1
- data/lib/dapp/dimg/config/directive/dimg_group_base.rb +2 -2
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +4 -3
- data/lib/dapp/dimg/dapp/command/cleanup.rb +2 -2
- data/lib/dapp/dimg/dapp/command/common.rb +16 -5
- data/lib/dapp/dimg/dapp/command/mrproper.rb +6 -8
- data/lib/dapp/dimg/dapp/command/push.rb +1 -1
- data/lib/dapp/dimg/dapp/command/run.rb +3 -2
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +3 -0
- data/lib/dapp/dimg/dapp/command/tag.rb +1 -1
- data/lib/dapp/dimg/dapp/dimg.rb +8 -0
- data/lib/dapp/dimg/dimg.rb +14 -3
- data/lib/dapp/dimg/dimg/stages.rb +1 -1
- data/lib/dapp/dimg/docker_registry/base.rb +10 -0
- data/lib/dapp/dimg/docker_registry/base/authorization.rb +1 -16
- data/lib/dapp/dimg/git_artifact.rb +9 -2
- data/lib/dapp/dimg/git_repo/base.rb +2 -2
- data/lib/dapp/dimg/git_repo/local.rb +2 -2
- data/lib/dapp/kube/dapp/command/deploy.rb +0 -1
- data/lib/dapp/kube/dapp/command/lint.rb +11 -4
- data/lib/dapp/kube/helm/values.rb +7 -7
- data/lib/dapp/version.rb +2 -2
- metadata +5 -34
- data/lib/dapp/dapp/sentry.rb +0 -106
- data/lib/dapp/helper/url.rb +0 -23
@@ -192,10 +192,17 @@ module Dapp
|
|
192
192
|
if any_changes?(*dev_patch_stage_commits(stage))
|
193
193
|
case archive_type(stage)
|
194
194
|
when :directory
|
195
|
-
|
196
|
-
|
195
|
+
files_to_remove_file_name = file_name('dev_files_to_remove')
|
196
|
+
File.open(dimg.tmp_path('archives', files_to_remove_file_name), File::RDWR | File::CREAT) do |f|
|
197
|
+
diff_patches(*dev_patch_stage_commits(stage))
|
198
|
+
.map {|p| File.join(to, cwd, p.delta.new_file[:path])}
|
199
|
+
.each(&f.method(:puts))
|
200
|
+
end
|
201
|
+
|
202
|
+
commands << "#{repo.dapp.rm_bin} -rf $(#{repo.dapp.cat_bin} #{dimg.container_tmp_path('archives', files_to_remove_file_name)})"
|
197
203
|
commands << "#{repo.dapp.install_bin} #{credentials.join(' ')} -d \"#{to}\""
|
198
204
|
commands << "#{sudo}#{repo.dapp.tar_bin} -xf #{archive_file(stage)} -C \"#{to}\""
|
205
|
+
commands << "#{repo.dapp.find_bin} \"#{to}\" -empty -type d -delete"
|
199
206
|
when :file
|
200
207
|
commands << "#{repo.dapp.rm_bin} -rf \"#{to}\""
|
201
208
|
commands << "#{repo.dapp.install_bin} #{credentials.join(' ')} -d \"#{File.dirname(to)}\""
|
@@ -104,12 +104,12 @@ module Dapp
|
|
104
104
|
|
105
105
|
def patches(from, to, paths: [], exclude_paths: [], **kwargs)
|
106
106
|
diff(from, to, **kwargs).patches.select do |patch|
|
107
|
-
|
107
|
+
ignore_patch?(patch, paths: paths, exclude_paths: exclude_paths)
|
108
108
|
end
|
109
109
|
end
|
110
110
|
|
111
111
|
def ignore_patch?(patch, paths: [], exclude_paths: [])
|
112
|
-
ignore_path?(patch.delta.new_file[:path], paths: paths, exclude_paths: exclude_paths)
|
112
|
+
!ignore_path?(patch.delta.new_file[:path], paths: paths, exclude_paths: exclude_paths)
|
113
113
|
end
|
114
114
|
|
115
115
|
def entries(commit, paths: [], exclude_paths: [])
|
@@ -48,9 +48,9 @@ module Dapp
|
|
48
48
|
delta_new_file = patch.delta.new_file
|
49
49
|
args = [delta_new_file[:path], paths: paths, exclude_paths: exclude_paths]
|
50
50
|
if nested_git_repository_mode?(delta_new_file[:mode])
|
51
|
-
ignore_directory?(*args)
|
51
|
+
!ignore_directory?(*args)
|
52
52
|
else
|
53
|
-
ignore_path?(*args)
|
53
|
+
!ignore_path?(*args)
|
54
54
|
end
|
55
55
|
end
|
56
56
|
|
@@ -165,7 +165,6 @@ module Dapp
|
|
165
165
|
# Поэтому перехватываем и просто отображаем произошедшую
|
166
166
|
# ошибку для информации пользователю без завершения работы dapp.
|
167
167
|
$stderr.puts(::Dapp::Dapp.paint_string(::Dapp::Helper::NetStatus.message(e), :warning))
|
168
|
-
sentry_exception(e, extra: {"job-spec" => job.spec})
|
169
168
|
end
|
170
169
|
|
171
170
|
end # Thread
|
@@ -4,11 +4,10 @@ module Dapp
|
|
4
4
|
module Command
|
5
5
|
module Lint
|
6
6
|
def kube_chart_name
|
7
|
-
|
8
|
-
chart_spec = yaml_load_file(chart_yaml_path)
|
7
|
+
chart_spec = yaml_load_file(kube_chart_yaml_path)
|
9
8
|
|
10
9
|
if chart_spec["name"].nil? || chart_spec["name"].empty?
|
11
|
-
raise ::Dapp::Error::Command, code: :no_helm_chart_spec_name, data: { name: chart_spec["name"], path:
|
10
|
+
raise ::Dapp::Error::Command, code: :no_helm_chart_spec_name, data: { name: chart_spec["name"], path: kube_chart_yaml_path, raw_spec: kube_chart_yaml_path.read.strip }
|
12
11
|
end
|
13
12
|
|
14
13
|
chart_spec["name"]
|
@@ -29,6 +28,7 @@ module Dapp
|
|
29
28
|
|
30
29
|
def kube_lint
|
31
30
|
kube_check_helm_chart!
|
31
|
+
kube_check_helm_chart_yaml!
|
32
32
|
|
33
33
|
repo = option_repo
|
34
34
|
|
@@ -41,7 +41,7 @@ module Dapp
|
|
41
41
|
|
42
42
|
all_values = {}
|
43
43
|
[kube_chart_path('values.yaml').expand_path, *kube_values_paths, *kube_tmp_chart_secret_values_paths].each do |values_path|
|
44
|
-
all_values = all_values.in_depth_merge(yaml_load_file(values_path))
|
44
|
+
all_values = all_values.in_depth_merge(yaml_load_file(values_path)) if File.file?(values_path)
|
45
45
|
end
|
46
46
|
|
47
47
|
options[:helm_set_options].each do |opt_spec|
|
@@ -68,6 +68,13 @@ module Dapp
|
|
68
68
|
end
|
69
69
|
end
|
70
70
|
|
71
|
+
def kube_check_helm_chart_yaml!
|
72
|
+
raise ::Dapp::Error::Command, code: :chart_yaml_not_found, data: { path: kube_chart_yaml_path } unless kube_chart_yaml_path.exist?
|
73
|
+
end
|
74
|
+
|
75
|
+
def kube_chart_yaml_path
|
76
|
+
kube_chart_path.join("Chart.yaml")
|
77
|
+
end
|
71
78
|
end
|
72
79
|
end
|
73
80
|
end
|
@@ -65,15 +65,15 @@ module Dapp
|
|
65
65
|
dimgs = dapp.build_configs.map do |config|
|
66
66
|
dapp.dimg(config: config, ignore_git_fetch: true)
|
67
67
|
end.uniq do |dimg|
|
68
|
-
dimg.
|
68
|
+
dimg.name
|
69
69
|
end
|
70
70
|
|
71
71
|
dimgs.each do |dimg|
|
72
72
|
dimg_data = {}
|
73
|
-
if dimg.
|
73
|
+
if dimg.name
|
74
74
|
res["global"]["dapp"]["is_nameless_dimg"] = false
|
75
75
|
res["global"]["dapp"]["dimg"] ||= {}
|
76
|
-
res["global"]["dapp"]["dimg"][dimg.
|
76
|
+
res["global"]["dapp"]["dimg"][dimg.name] = dimg_data
|
77
77
|
else
|
78
78
|
res["global"]["dapp"]["is_nameless_dimg"] = true
|
79
79
|
res["global"]["dapp"]["dimg"] = dimg_data
|
@@ -83,16 +83,16 @@ module Dapp
|
|
83
83
|
docker_image_id = TEMPLATE_EMPTY_VALUE
|
84
84
|
unless fake || without_registry
|
85
85
|
begin
|
86
|
-
dimg_labels = dapp.dimg_registry(repo).image_labels(docker_tag, dimg.
|
87
|
-
docker_image_id = dapp.dimg_registry(repo).image_id(docker_tag, dimg.
|
86
|
+
dimg_labels = dapp.dimg_registry(repo).image_labels(docker_tag, dimg.name)
|
87
|
+
docker_image_id = dapp.dimg_registry(repo).image_id(docker_tag, dimg.name)
|
88
88
|
rescue ::Dapp::Dimg::Error::Registry => err
|
89
89
|
unless disable_warnings
|
90
|
-
dapp.log_warning "Registry `#{err.net_status[:data][:registry]}` is not availabble: cannot determine <dimg>.docker_image_id and <dimg>.git.<ga>.commit_id helm values of dimg#{dimg.
|
90
|
+
dapp.log_warning "Registry `#{err.net_status[:data][:registry]}` is not availabble: cannot determine <dimg>.docker_image_id and <dimg>.git.<ga>.commit_id helm values of dimg#{dimg.name ? " `#{dimg.name}`" : nil}"
|
91
91
|
end
|
92
92
|
end
|
93
93
|
end
|
94
94
|
|
95
|
-
dimg_data["docker_image"] = [[repo, dimg.
|
95
|
+
dimg_data["docker_image"] = [[repo, dimg.name].compact.join("/"), docker_tag].join(":")
|
96
96
|
dimg_data["docker_image_id"] = docker_image_id
|
97
97
|
|
98
98
|
[*dimg.local_git_artifacts, *dimg.remote_git_artifacts].each do |ga|
|
data/lib/dapp/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dapp
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.27.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Dmitry Stolyarov
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2018-03-07 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: mixlib-shellout
|
@@ -200,48 +200,20 @@ dependencies:
|
|
200
200
|
- - "~>"
|
201
201
|
- !ruby/object:Gem::Version
|
202
202
|
version: 1.9.0
|
203
|
-
- !ruby/object:Gem::Dependency
|
204
|
-
name: sentry-raven
|
205
|
-
requirement: !ruby/object:Gem::Requirement
|
206
|
-
requirements:
|
207
|
-
- - "~>"
|
208
|
-
- !ruby/object:Gem::Version
|
209
|
-
version: 2.7.2
|
210
|
-
type: :runtime
|
211
|
-
prerelease: false
|
212
|
-
version_requirements: !ruby/object:Gem::Requirement
|
213
|
-
requirements:
|
214
|
-
- - "~>"
|
215
|
-
- !ruby/object:Gem::Version
|
216
|
-
version: 2.7.2
|
217
|
-
- !ruby/object:Gem::Dependency
|
218
|
-
name: toml-rb
|
219
|
-
requirement: !ruby/object:Gem::Requirement
|
220
|
-
requirements:
|
221
|
-
- - "~>"
|
222
|
-
- !ruby/object:Gem::Version
|
223
|
-
version: 1.1.1
|
224
|
-
type: :runtime
|
225
|
-
prerelease: false
|
226
|
-
version_requirements: !ruby/object:Gem::Requirement
|
227
|
-
requirements:
|
228
|
-
- - "~>"
|
229
|
-
- !ruby/object:Gem::Version
|
230
|
-
version: 1.1.1
|
231
203
|
- !ruby/object:Gem::Dependency
|
232
204
|
name: bundler
|
233
205
|
requirement: !ruby/object:Gem::Requirement
|
234
206
|
requirements:
|
235
207
|
- - "~>"
|
236
208
|
- !ruby/object:Gem::Version
|
237
|
-
version: '
|
209
|
+
version: '1.7'
|
238
210
|
type: :development
|
239
211
|
prerelease: false
|
240
212
|
version_requirements: !ruby/object:Gem::Requirement
|
241
213
|
requirements:
|
242
214
|
- - "~>"
|
243
215
|
- !ruby/object:Gem::Version
|
244
|
-
version: '
|
216
|
+
version: '1.7'
|
245
217
|
- !ruby/object:Gem::Dependency
|
246
218
|
name: rake
|
247
219
|
requirement: !ruby/object:Gem::Requirement
|
@@ -490,7 +462,6 @@ files:
|
|
490
462
|
- lib/dapp/dapp/logging/paint.rb
|
491
463
|
- lib/dapp/dapp/logging/process.rb
|
492
464
|
- lib/dapp/dapp/option_tags.rb
|
493
|
-
- lib/dapp/dapp/sentry.rb
|
494
465
|
- lib/dapp/dapp/shellout/base.rb
|
495
466
|
- lib/dapp/dapp/shellout/streaming.rb
|
496
467
|
- lib/dapp/dapp/slug.rb
|
@@ -564,6 +535,7 @@ files:
|
|
564
535
|
- lib/dapp/dimg/build/stage/setup/setup.rb
|
565
536
|
- lib/dapp/dimg/builder.rb
|
566
537
|
- lib/dapp/dimg/builder/ansible.rb
|
538
|
+
- lib/dapp/dimg/builder/ansible/assets.rb
|
567
539
|
- lib/dapp/dimg/builder/base.rb
|
568
540
|
- lib/dapp/dimg/builder/chef.rb
|
569
541
|
- lib/dapp/dimg/builder/chef/berksfile.rb
|
@@ -695,7 +667,6 @@ files:
|
|
695
667
|
- lib/dapp/helper/sha256.rb
|
696
668
|
- lib/dapp/helper/tar.rb
|
697
669
|
- lib/dapp/helper/trivia.rb
|
698
|
-
- lib/dapp/helper/url.rb
|
699
670
|
- lib/dapp/helper/yaml.rb
|
700
671
|
- lib/dapp/kube.rb
|
701
672
|
- lib/dapp/kube/cli/cli.rb
|
data/lib/dapp/dapp/sentry.rb
DELETED
@@ -1,106 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
class Dapp
|
3
|
-
module Sentry
|
4
|
-
def sentry_message(msg, **kwargs)
|
5
|
-
return if not ensure_sentry_configured
|
6
|
-
kwargs[:level] ||= "info"
|
7
|
-
Raven.capture_message(msg, _make_sentry_params(**kwargs))
|
8
|
-
end
|
9
|
-
|
10
|
-
def sentry_exception(exception, **kwargs)
|
11
|
-
return if not ensure_sentry_configured
|
12
|
-
(kwargs[:tags] ||= {})['error-code'] = begin
|
13
|
-
net_status = exception.net_status
|
14
|
-
[net_status[:context], net_status[:code]].compact.join('_')
|
15
|
-
end
|
16
|
-
Raven.capture_exception(exception, _make_sentry_params(**kwargs))
|
17
|
-
end
|
18
|
-
|
19
|
-
def ensure_sentry_configured
|
20
|
-
return false unless sentry_settings = settings["sentry"]
|
21
|
-
|
22
|
-
unless @sentry_settings_configured
|
23
|
-
Raven.configure do |config|
|
24
|
-
logger = ::Logger.new(STDOUT)
|
25
|
-
logger.level = ::Logger::WARN
|
26
|
-
|
27
|
-
config.logger = logger
|
28
|
-
config.dsn = sentry_settings["dsn"]
|
29
|
-
end
|
30
|
-
|
31
|
-
@sentry_settings_configured = true
|
32
|
-
end
|
33
|
-
|
34
|
-
return true
|
35
|
-
end
|
36
|
-
|
37
|
-
def _make_sentry_params(level: nil, tags: {}, extra: {}, user: {})
|
38
|
-
{
|
39
|
-
level: level,
|
40
|
-
tags: _sentry_tags_context.merge(tags),
|
41
|
-
extra: _sentry_extra_context.merge(extra),
|
42
|
-
user: _sentry_user_context.merge(user),
|
43
|
-
}
|
44
|
-
end
|
45
|
-
|
46
|
-
def _sentry_extra_context
|
47
|
-
@_sentry_extra_context ||= {
|
48
|
-
"pwd" => Dir.pwd,
|
49
|
-
"dapp-dir" => self.work_dir,
|
50
|
-
"build-dir" => self.build_dir,
|
51
|
-
"options" => self.options,
|
52
|
-
"env-options" => {
|
53
|
-
"DAPP_FORCE_SAVE_CACHE" => ENV["DAPP_FORCE_SAVE_CACHE"],
|
54
|
-
"DAPP_BIN_DAPPFILE_YML" => ENV["DAPP_BIN_DAPPFILE_YML"],
|
55
|
-
"ANSIBLE_ARGS" => ENV["ANSIBLE_ARGS"],
|
56
|
-
"DAPP_CHEF_DEBUG" => ENV["DAPP_CHEF_DEBUG"],
|
57
|
-
},
|
58
|
-
}.tap {|extra|
|
59
|
-
if git_own_repo_exist?
|
60
|
-
extra["git"] = {
|
61
|
-
"remote_origin_url" => git_own_repo.remote_origin_url, # may contain https token
|
62
|
-
"name" => self.git_url_to_name(git_own_repo.remote_origin_url),
|
63
|
-
"path" => git_own_repo.path,
|
64
|
-
"workdir_path" => git_own_repo.workdir_path,
|
65
|
-
"latest_commit" => git_own_repo.latest_commit,
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
extra["ci-env"] = {"CI" => ENV["CI"]}
|
70
|
-
ENV.select {|k, v| k.start_with?("CI_")}.each do |k, v|
|
71
|
-
extra["ci-env"][k] = v
|
72
|
-
end
|
73
|
-
}
|
74
|
-
end
|
75
|
-
|
76
|
-
def _sentry_tags_context
|
77
|
-
@_sentry_tags_context ||= {
|
78
|
-
"dapp-name" => self.name,
|
79
|
-
"dapp-short-version" => ::Dapp::VERSION.split(".")[0..1].join("."),
|
80
|
-
"dapp-version" => ::Dapp::VERSION,
|
81
|
-
"dapp-build-cache-version" => ::Dapp::BUILD_CACHE_VERSION,
|
82
|
-
"dapp-command" => self.options[:dapp_command],
|
83
|
-
}.tap {|tags|
|
84
|
-
if git_own_repo_exist?
|
85
|
-
tags["git-host"] = self.get_host_from_git_url(git_own_repo.remote_origin_url)
|
86
|
-
|
87
|
-
git_name = self.git_url_to_name(git_own_repo.remote_origin_url)
|
88
|
-
|
89
|
-
tags["git-group"] = git_name.partition("/")[0]
|
90
|
-
tags["git-name"] = git_name
|
91
|
-
end
|
92
|
-
|
93
|
-
begin
|
94
|
-
ver = self.class.host_docker_minor_version
|
95
|
-
tags["docker-minor-version"] = ver.to_s
|
96
|
-
rescue ::Exception
|
97
|
-
end
|
98
|
-
}
|
99
|
-
end
|
100
|
-
|
101
|
-
def _sentry_user_context
|
102
|
-
@__sentry_user_context ||= {}
|
103
|
-
end
|
104
|
-
end # Sentry
|
105
|
-
end # Dapp
|
106
|
-
end # Dapp
|
data/lib/dapp/helper/url.rb
DELETED
@@ -1,23 +0,0 @@
|
|
1
|
-
module Dapp
|
2
|
-
module Helper
|
3
|
-
module Url
|
4
|
-
def git_url_to_name(url)
|
5
|
-
url_without_scheme = url.split("://", 2).last
|
6
|
-
# This may be broken, because "@" should delimit creds, not a ":"
|
7
|
-
url_without_creds = url_without_scheme.split(":", 2).last
|
8
|
-
url_without_creds.gsub(%r{.*?([^\/ ]+\/[^\/ ]+)\.git}, '\\1')
|
9
|
-
end
|
10
|
-
|
11
|
-
def get_host_from_git_url(url)
|
12
|
-
url_without_scheme = url.split("://", 2).last
|
13
|
-
url_without_creds = url_without_scheme.split("@", 2).last
|
14
|
-
|
15
|
-
# Split out part after ":" in this kind of url: github.com:flant/dapp.git
|
16
|
-
url_part = url_without_creds.split(":", 2).first
|
17
|
-
|
18
|
-
# Split out part after first "/": github.com/flant/dapp.git
|
19
|
-
url_part.split("/", 2).first
|
20
|
-
end
|
21
|
-
end # Url
|
22
|
-
end # Helper
|
23
|
-
end # Dapp
|