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.
Files changed (51) hide show
  1. checksums.yaml +4 -4
  2. data/bin/dapp +0 -4
  3. data/config/en/common.yml +1 -0
  4. data/config/en/net_status.yml +2 -0
  5. data/lib/dapp.rb +1 -4
  6. data/lib/dapp/cli.rb +0 -4
  7. data/lib/dapp/cli/command/base.rb +1 -7
  8. data/lib/dapp/dapp.rb +4 -22
  9. data/lib/dapp/dapp/dappfile.rb +2 -2
  10. data/lib/dapp/dapp/deps/base.rb +6 -2
  11. data/lib/dapp/dapp/option_tags.rb +1 -7
  12. data/lib/dapp/dimg/artifact.rb +4 -0
  13. data/lib/dapp/dimg/build/stage/artifact_base.rb +7 -7
  14. data/lib/dapp/dimg/build/stage/artifact_default.rb +4 -5
  15. data/lib/dapp/dimg/build/stage/base.rb +1 -3
  16. data/lib/dapp/dimg/build/stage/before_install.rb +2 -3
  17. data/lib/dapp/dimg/build/stage/from.rb +31 -5
  18. data/lib/dapp/dimg/build/stage/ga_base.rb +1 -1
  19. data/lib/dapp/dimg/build/stage/ga_latest_patch.rb +1 -3
  20. data/lib/dapp/dimg/build/stage/import_artifact.rb +3 -4
  21. data/lib/dapp/dimg/builder/ansible.rb +167 -2
  22. data/lib/dapp/dimg/builder/ansible/assets.rb +332 -0
  23. data/lib/dapp/dimg/builder/chef.rb +2 -2
  24. data/lib/dapp/dimg/cli/command/base.rb +14 -0
  25. data/lib/dapp/dimg/cli/command/dimg/build.rb +15 -24
  26. data/lib/dapp/dimg/cli/command/dimg/run.rb +14 -1
  27. data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +2 -1
  28. data/lib/dapp/dimg/config/directive/dimg_group_base.rb +2 -2
  29. data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +4 -3
  30. data/lib/dapp/dimg/dapp/command/cleanup.rb +2 -2
  31. data/lib/dapp/dimg/dapp/command/common.rb +16 -5
  32. data/lib/dapp/dimg/dapp/command/mrproper.rb +6 -8
  33. data/lib/dapp/dimg/dapp/command/push.rb +1 -1
  34. data/lib/dapp/dimg/dapp/command/run.rb +3 -2
  35. data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +3 -0
  36. data/lib/dapp/dimg/dapp/command/tag.rb +1 -1
  37. data/lib/dapp/dimg/dapp/dimg.rb +8 -0
  38. data/lib/dapp/dimg/dimg.rb +14 -3
  39. data/lib/dapp/dimg/dimg/stages.rb +1 -1
  40. data/lib/dapp/dimg/docker_registry/base.rb +10 -0
  41. data/lib/dapp/dimg/docker_registry/base/authorization.rb +1 -16
  42. data/lib/dapp/dimg/git_artifact.rb +9 -2
  43. data/lib/dapp/dimg/git_repo/base.rb +2 -2
  44. data/lib/dapp/dimg/git_repo/local.rb +2 -2
  45. data/lib/dapp/kube/dapp/command/deploy.rb +0 -1
  46. data/lib/dapp/kube/dapp/command/lint.rb +11 -4
  47. data/lib/dapp/kube/helm/values.rb +7 -7
  48. data/lib/dapp/version.rb +2 -2
  49. metadata +5 -34
  50. data/lib/dapp/dapp/sentry.rb +0 -106
  51. 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
- changed_files = diff_patches(*dev_patch_stage_commits(stage)).map {|p| "\"#{File.join(to, cwd, p.delta.new_file[:path])}\""}
196
- commands << "#{repo.dapp.rm_bin} -rf #{changed_files.join(' ')}"
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
- !ignore_patch?(patch, paths: paths, exclude_paths: exclude_paths)
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
- chart_yaml_path = kube_chart_path.join("Chart.yaml")
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: chart_yaml_path, raw_spec: chart_yaml_path.read.strip }
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.config._name
68
+ dimg.name
69
69
  end
70
70
 
71
71
  dimgs.each do |dimg|
72
72
  dimg_data = {}
73
- if dimg.config._name
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.config._name] = dimg_data
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.config._name)
87
- docker_image_id = dapp.dimg_registry(repo).image_id(docker_tag, dimg.config._name)
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.config._name ? " `#{dimg.config._name}`" : nil}"
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.config._name].compact.join("/"), docker_tag].join(":")
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|
@@ -1,4 +1,4 @@
1
1
  module Dapp
2
- VERSION = "0.26.14"
3
- BUILD_CACHE_VERSION = 27.1
2
+ VERSION = "0.27.0"
3
+ BUILD_CACHE_VERSION = 27
4
4
  end
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.26.14
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: 2019-01-17 00:00:00.000000000 Z
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: '2.0'
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: '2.0'
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
@@ -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
@@ -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