dapp 0.22.6 → 0.22.7
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 +9 -5
- data/config/en/common.yml +2 -0
- data/config/en/net_status.yml +9 -12
- data/lib/dapp.rb +12 -47
- data/lib/dapp/cli/command/options/tag.rb +39 -0
- data/lib/dapp/config/directive/base.rb +2 -1
- data/lib/dapp/dapp.rb +6 -9
- data/lib/dapp/dapp/command/common.rb +9 -4
- data/lib/dapp/dapp/logging/i18n.rb +5 -1
- data/lib/dapp/dapp/logging/process.rb +2 -2
- data/lib/dapp/deployment/config/config.rb +5 -5
- data/lib/dapp/deployment/config/directive/expose.rb +1 -1
- data/lib/dapp/deployment/config/directive/namespace/instance_methods.rb +1 -1
- data/lib/dapp/deployment/error/app.rb +1 -1
- data/lib/dapp/deployment/error/{base.rb → default.rb} +1 -1
- data/lib/dapp/deployment/error/deployment.rb +1 -1
- data/lib/dapp/deployment/error/kubernetes.rb +1 -1
- data/lib/dapp/deployment/kubernetes.rb +3 -3
- data/lib/dapp/deployment/kubernetes/error.rb +4 -4
- data/lib/dapp/deployment/secret.rb +1 -1
- data/lib/dapp/dimg/cli/command/dimg.rb +2 -1
- data/lib/dapp/dimg/cli/command/dimg/build_context/export.rb +5 -0
- data/lib/dapp/dimg/cli/command/dimg/flush_local.rb +24 -0
- data/lib/dapp/dimg/cli/command/dimg/push.rb +2 -26
- data/lib/dapp/dimg/cli/command/dimg/stages/base.rb +2 -2
- data/lib/dapp/dimg/cli/command/dimg/tag.rb +11 -4
- data/lib/dapp/dimg/config/config.rb +1 -1
- data/lib/dapp/dimg/config/directive/artifact.rb +5 -5
- data/lib/dapp/dimg/config/directive/artifact_base.rb +5 -5
- data/lib/dapp/dimg/config/directive/dimg/instance_methods.rb +1 -1
- data/lib/dapp/dimg/config/directive/dimg/validation.rb +11 -13
- data/lib/dapp/dimg/config/directive/docker/artifact.rb +1 -1
- data/lib/dapp/dimg/config/directive/docker/base.rb +1 -1
- data/lib/dapp/dimg/config/directive/git_artifact_local.rb +19 -3
- data/lib/dapp/dimg/config/directive/git_artifact_remote.rb +3 -1
- data/lib/dapp/dimg/config/directive/mount.rb +3 -3
- data/lib/dapp/dimg/dapp/command/build.rb +1 -1
- data/lib/dapp/dimg/dapp/command/build_context/export.rb +17 -13
- data/lib/dapp/dimg/dapp/command/build_context/import.rb +24 -17
- data/lib/dapp/dimg/dapp/command/cleanup_repo.rb +26 -33
- data/lib/dapp/dimg/dapp/command/common.rb +53 -56
- data/lib/dapp/dimg/dapp/command/flush_local.rb +18 -0
- data/lib/dapp/dimg/dapp/command/mrproper.rb +1 -1
- data/lib/dapp/dimg/dapp/command/push.rb +2 -8
- data/lib/dapp/dimg/dapp/command/spush.rb +2 -4
- data/lib/dapp/dimg/dapp/command/stages/cleanup_local.rb +41 -46
- data/lib/dapp/dimg/dapp/command/stages/cleanup_repo.rb +35 -39
- data/lib/dapp/dimg/dapp/command/stages/common.rb +13 -3
- data/lib/dapp/dimg/dapp/command/stages/flush_local.rb +1 -3
- data/lib/dapp/dimg/dapp/command/stages/flush_repo.rb +3 -3
- data/lib/dapp/dimg/dapp/command/stages/pull.rb +2 -12
- data/lib/dapp/dimg/dapp/command/stages/push.rb +2 -8
- data/lib/dapp/dimg/dapp/command/tag.rb +3 -6
- data/lib/dapp/dimg/dapp/dapp.rb +1 -0
- data/lib/dapp/dimg/dapp/dappfile.rb +11 -1
- data/lib/dapp/dimg/dimg.rb +39 -31
- data/lib/dapp/dimg/error/build.rb +1 -1
- data/lib/dapp/dimg/error/chef.rb +1 -5
- data/lib/dapp/dimg/error/{command.rb → default.rb} +1 -1
- data/lib/dapp/dimg/error/dimg.rb +1 -1
- data/lib/dapp/dimg/error/lock.rb +1 -1
- data/lib/dapp/dimg/error/registry.rb +1 -1
- data/lib/dapp/dimg/error/rugged.rb +1 -1
- data/lib/dapp/dimg/error/tar_writer.rb +1 -1
- data/lib/dapp/dimg/git_artifact.rb +3 -1
- data/lib/dapp/dimg/image/argument.rb +3 -1
- data/lib/dapp/dimg/image/dimg.rb +15 -0
- data/lib/dapp/dimg/image/stage.rb +0 -9
- data/lib/dapp/error/base.rb +1 -5
- data/lib/dapp/error/command.rb +5 -0
- data/lib/dapp/error/config.rb +5 -0
- data/lib/dapp/error/dapp.rb +1 -1
- data/lib/dapp/error/dappfile.rb +1 -1
- data/lib/dapp/error/default.rb +11 -0
- data/lib/dapp/error/mod/user.rb +11 -0
- data/lib/dapp/error/shellout.rb +1 -1
- data/lib/dapp/exception/base.rb +1 -1
- data/lib/dapp/helper/yaml.rb +3 -2
- data/lib/dapp/kube/cli/command/kube/deploy.rb +2 -26
- data/lib/dapp/kube/cli/command/kube/lint.rb +1 -26
- data/lib/dapp/kube/cli/command/kube/render.rb +2 -26
- data/lib/dapp/kube/cli/command/kube/secret_key_generate.rb +2 -2
- data/lib/dapp/kube/dapp/command/common.rb +19 -23
- data/lib/dapp/kube/dapp/command/deploy.rb +16 -9
- data/lib/dapp/kube/dapp/command/dismiss.rb +1 -1
- data/lib/dapp/kube/dapp/command/lint.rb +4 -10
- data/lib/dapp/kube/dapp/command/minikube_setup.rb +12 -18
- data/lib/dapp/kube/dapp/command/secret_edit.rb +2 -2
- data/lib/dapp/kube/error/{command.rb → default.rb} +1 -1
- data/lib/dapp/kube/error/kubernetes.rb +1 -1
- data/lib/dapp/kube/helm/release.rb +7 -33
- data/lib/dapp/kube/helm/values.rb +140 -0
- data/lib/dapp/kube/kubernetes/client.rb +9 -10
- data/lib/dapp/kube/kubernetes/client/error.rb +14 -8
- data/lib/dapp/kube/kubernetes/error.rb +15 -0
- data/lib/dapp/kube/kubernetes/manager/deployment.rb +2 -2
- data/lib/dapp/kube/secret.rb +1 -1
- data/lib/dapp/version.rb +1 -1
- metadata +15 -11
- data/lib/dapp/config/error/config.rb +0 -7
- data/lib/dapp/deployment/error/command.rb +0 -7
- data/lib/dapp/deployment/error/config.rb +0 -7
- data/lib/dapp/dimg/error/base.rb +0 -7
- data/lib/dapp/dimg/error/config.rb +0 -7
- data/lib/dapp/kube/error/base.rb +0 -11
|
@@ -23,7 +23,9 @@ module Dapp
|
|
|
23
23
|
.reject { |job| ['0', 'false'].include? job.annotations["dapp/recreate"].to_s }
|
|
24
24
|
.select { |job| kube_job_list.include? job.name }
|
|
25
25
|
.each do |job|
|
|
26
|
-
log_process("Delete hooks job `#{job.name}` for release #{release.name}", short: true)
|
|
26
|
+
log_process("Delete hooks job `#{job.name}` for release #{release.name}", short: true) do
|
|
27
|
+
kube_delete_job!(job.name) unless dry_run?
|
|
28
|
+
end
|
|
27
29
|
end
|
|
28
30
|
end
|
|
29
31
|
|
|
@@ -66,8 +68,11 @@ module Dapp
|
|
|
66
68
|
watch_hooks_by_type['pre-install'].to_a + watch_hooks_by_type['post-install'].to_a
|
|
67
69
|
end
|
|
68
70
|
|
|
69
|
-
watch_hooks_thr =
|
|
70
|
-
|
|
71
|
+
watch_hooks_thr = nil
|
|
72
|
+
unless dry_run?
|
|
73
|
+
watch_hooks_thr = Thread.new do
|
|
74
|
+
watch_hooks.each {|job| Kubernetes::Manager::Job.new(self, job.name).watch_till_done!}
|
|
75
|
+
end
|
|
71
76
|
end
|
|
72
77
|
|
|
73
78
|
deployment_managers = release.deployments.values
|
|
@@ -79,14 +84,16 @@ module Dapp
|
|
|
79
84
|
|
|
80
85
|
deployment_managers.each(&:after_deploy)
|
|
81
86
|
|
|
82
|
-
watch_hooks_thr.kill if watch_hooks_thr.alive?
|
|
87
|
+
watch_hooks_thr.kill if !dry_run? && watch_hooks_thr && watch_hooks_thr.alive?
|
|
83
88
|
|
|
84
|
-
|
|
85
|
-
|
|
86
|
-
|
|
89
|
+
unless dry_run?
|
|
90
|
+
begin
|
|
91
|
+
::Timeout::timeout(self.options[:timeout] || 300) do
|
|
92
|
+
deployment_managers.each {|deployment_manager| deployment_manager.watch_till_ready!}
|
|
93
|
+
end
|
|
94
|
+
rescue ::Timeout::Error
|
|
95
|
+
raise ::Dapp::Error::Command, code: :kube_deploy_timeout
|
|
87
96
|
end
|
|
88
|
-
rescue ::Timeout::Error
|
|
89
|
-
raise Kube::Error::Base, code: :deploy_timeout
|
|
90
97
|
end
|
|
91
98
|
end
|
|
92
99
|
end
|
|
@@ -16,7 +16,7 @@ module Dapp
|
|
|
16
16
|
|
|
17
17
|
def kube_check_helm_release!
|
|
18
18
|
pr = shellout("helm list | grep #{kube_release_name}")
|
|
19
|
-
raise Error::Command, code: :helm_release_not_exist, data: { name: kube_release_name } if pr.status == 1 || pr.stdout.empty?
|
|
19
|
+
raise ::Dapp::Error::Command, code: :helm_release_not_exist, data: { name: kube_release_name } if pr.status == 1 || pr.stdout.empty?
|
|
20
20
|
end
|
|
21
21
|
end
|
|
22
22
|
end
|
|
@@ -8,7 +8,7 @@ module Dapp
|
|
|
8
8
|
chart_spec = yaml_load_file(chart_yaml_path)
|
|
9
9
|
|
|
10
10
|
if chart_spec["name"].nil? || chart_spec["name"].empty?
|
|
11
|
-
raise Error::Command, code: :
|
|
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 }
|
|
12
12
|
end
|
|
13
13
|
|
|
14
14
|
chart_spec["name"]
|
|
@@ -32,8 +32,7 @@ module Dapp
|
|
|
32
32
|
|
|
33
33
|
repo = option_repo
|
|
34
34
|
|
|
35
|
-
docker_tag =
|
|
36
|
-
docker_tag = consistent_uniq_slugify(docker_tag) if docker_tag
|
|
35
|
+
docker_tag = option_tags.first
|
|
37
36
|
|
|
38
37
|
with_kube_tmp_lint_chart_dir do
|
|
39
38
|
kube_copy_chart
|
|
@@ -60,13 +59,8 @@ module Dapp
|
|
|
60
59
|
end
|
|
61
60
|
end
|
|
62
61
|
|
|
63
|
-
|
|
64
|
-
|
|
65
|
-
'dapp' => {
|
|
66
|
-
'repo' => repo,
|
|
67
|
-
'docker_tag' => docker_tag
|
|
68
|
-
}
|
|
69
|
-
}
|
|
62
|
+
service_values = Helm::Values.service_values_hash(self, repo, kube_namespace, docker_tag, fake: true)
|
|
63
|
+
all_values = all_values.in_depth_merge service_values
|
|
70
64
|
|
|
71
65
|
kube_chart_path_for_helm.join("values.yaml").write YAML.dump(all_values)
|
|
72
66
|
|
|
@@ -3,12 +3,6 @@ module Dapp
|
|
|
3
3
|
module Dapp
|
|
4
4
|
module Command
|
|
5
5
|
module MinikubeSetup
|
|
6
|
-
class MinikubeSetupError < Error::Command
|
|
7
|
-
def initialize(**net_status)
|
|
8
|
-
super(**net_status, context: :minikube_setup)
|
|
9
|
-
end
|
|
10
|
-
end
|
|
11
|
-
|
|
12
6
|
def kube_minikube_setup
|
|
13
7
|
_minikube_restart_minikube
|
|
14
8
|
|
|
@@ -34,7 +28,7 @@ module Dapp
|
|
|
34
28
|
|
|
35
29
|
def _minikube_restart_minikube
|
|
36
30
|
log_process("Restart minikube") do
|
|
37
|
-
raise
|
|
31
|
+
raise ::Dapp::Error::Command, code: :minikube_not_found if shellout('which minikube').exitstatus == 1
|
|
38
32
|
|
|
39
33
|
Process.fork do
|
|
40
34
|
_minikube_set_original_sudo_caller_process_user!
|
|
@@ -50,7 +44,7 @@ module Dapp
|
|
|
50
44
|
end
|
|
51
45
|
|
|
52
46
|
_, status = Process.wait2
|
|
53
|
-
raise
|
|
47
|
+
raise ::Dapp::Error::Command, code: :cannot_restart_minikube unless status.success?
|
|
54
48
|
end
|
|
55
49
|
end
|
|
56
50
|
|
|
@@ -97,7 +91,7 @@ module Dapp
|
|
|
97
91
|
rescue Errno::ESRCH
|
|
98
92
|
daemon_ok = false
|
|
99
93
|
end
|
|
100
|
-
raise
|
|
94
|
+
raise ::Dapp::Error::Command, code: :"#{name}_daemon_failed" unless daemon_ok
|
|
101
95
|
end
|
|
102
96
|
|
|
103
97
|
def _minikube_run_minikube_persisted_storage_daemon
|
|
@@ -127,7 +121,7 @@ module Dapp
|
|
|
127
121
|
sleep 1
|
|
128
122
|
end
|
|
129
123
|
|
|
130
|
-
raise
|
|
124
|
+
raise ::Dapp::Error::Command, code: :minikube_readiness_timeout
|
|
131
125
|
end
|
|
132
126
|
end
|
|
133
127
|
|
|
@@ -145,7 +139,7 @@ module Dapp
|
|
|
145
139
|
end
|
|
146
140
|
sleep 1
|
|
147
141
|
end
|
|
148
|
-
raise
|
|
142
|
+
raise ::Dapp::Error::Command, code: :registry_replicationcontroller_shutdown_failed unless shutdown_ok
|
|
149
143
|
end
|
|
150
144
|
|
|
151
145
|
_minikube_kubernetes.delete_pods! labelSelector: 'k8s-app=kube-registry'
|
|
@@ -157,7 +151,7 @@ module Dapp
|
|
|
157
151
|
end
|
|
158
152
|
sleep 1
|
|
159
153
|
end
|
|
160
|
-
raise
|
|
154
|
+
raise ::Dapp::Error::Command, code: :registry_pod_shutdown_failed unless shutdown_ok
|
|
161
155
|
|
|
162
156
|
if _minikube_kubernetes.service? _minikube_registry_service_spec['metadata']['name']
|
|
163
157
|
_minikube_kubernetes.delete_service! _minikube_registry_service_spec['metadata']['name']
|
|
@@ -170,7 +164,7 @@ module Dapp
|
|
|
170
164
|
end
|
|
171
165
|
sleep 1
|
|
172
166
|
end
|
|
173
|
-
raise
|
|
167
|
+
raise ::Dapp::Error::Command, code: :registry_service_shutdown_failed unless shutdown_ok
|
|
174
168
|
end
|
|
175
169
|
|
|
176
170
|
if _minikube_kubernetes.pod? _minikube_registry_proxy_pod_spec['metadata']['name']
|
|
@@ -184,7 +178,7 @@ module Dapp
|
|
|
184
178
|
end
|
|
185
179
|
sleep 1
|
|
186
180
|
end
|
|
187
|
-
raise
|
|
181
|
+
raise ::Dapp::Error::Command, code: :registry_proxy_pod_shutdown_failed unless shutdown_ok
|
|
188
182
|
end
|
|
189
183
|
|
|
190
184
|
_minikube_kubernetes.create_replicationcontroller!(_minikube_registry_replicationcontroller_spec)
|
|
@@ -199,7 +193,7 @@ module Dapp
|
|
|
199
193
|
end
|
|
200
194
|
sleep 1
|
|
201
195
|
end
|
|
202
|
-
raise
|
|
196
|
+
raise ::Dapp::Error::Command, code: :registry_pod_not_ok unless registry_pod_ok
|
|
203
197
|
|
|
204
198
|
_minikube_kubernetes.create_service!(_minikube_registry_service_spec)
|
|
205
199
|
registry_service_ok = false
|
|
@@ -210,7 +204,7 @@ module Dapp
|
|
|
210
204
|
end
|
|
211
205
|
sleep 1
|
|
212
206
|
end
|
|
213
|
-
raise
|
|
207
|
+
raise ::Dapp::Error::Command, code: :registry_service_not_ok unless registry_service_ok
|
|
214
208
|
|
|
215
209
|
_minikube_kubernetes.create_pod! _minikube_registry_proxy_pod_spec
|
|
216
210
|
registry_proxy_pod_ok = false
|
|
@@ -224,7 +218,7 @@ module Dapp
|
|
|
224
218
|
end
|
|
225
219
|
sleep 1
|
|
226
220
|
end
|
|
227
|
-
raise
|
|
221
|
+
raise ::Dapp::Error::Command, code: :registry_proxy_pod_not_ok unless registry_proxy_pod_ok
|
|
228
222
|
end
|
|
229
223
|
end
|
|
230
224
|
end
|
|
@@ -237,7 +231,7 @@ module Dapp
|
|
|
237
231
|
rescue Errno::ECONNREFUSED
|
|
238
232
|
false
|
|
239
233
|
end
|
|
240
|
-
raise
|
|
234
|
+
raise ::Dapp::Error::Command, code: :registry_port_in_use, data: {host: 'localhost', port: 5000} if registry_port_in_use
|
|
241
235
|
|
|
242
236
|
_minikube_run_daemon(:registry_forwarder) do
|
|
243
237
|
STDIN.reopen '/dev/null'
|
|
@@ -43,7 +43,7 @@ module Dapp
|
|
|
43
43
|
|
|
44
44
|
IO.binwrite(file_path, "#{encoded_data}\n")
|
|
45
45
|
break
|
|
46
|
-
rescue ::Dapp::Error::
|
|
46
|
+
rescue ::Dapp::Error::Default => e
|
|
47
47
|
log_warning(Helper::NetStatus.message(e))
|
|
48
48
|
print 'Do you want to change file (Y/n)?'
|
|
49
49
|
response = $stdin.getch.tap { print "\n" }
|
|
@@ -56,7 +56,7 @@ module Dapp
|
|
|
56
56
|
def kube_secret_editor
|
|
57
57
|
return ENV['EDITOR'] unless ENV['EDITOR'].nil?
|
|
58
58
|
%w(vim vi nano).each { |editor| return editor unless shellout("which #{editor}").exitstatus.nonzero? }
|
|
59
|
-
raise Error::Command, code: :editor_not_found
|
|
59
|
+
raise ::Dapp::Error::Command, code: :editor_not_found
|
|
60
60
|
end
|
|
61
61
|
|
|
62
62
|
private
|
|
@@ -123,40 +123,10 @@ module Dapp
|
|
|
123
123
|
|
|
124
124
|
def set_options(without_registry: false)
|
|
125
125
|
[].tap do |options|
|
|
126
|
-
options.concat
|
|
127
|
-
options << "--set global.dapp.repo=#{repo}"
|
|
128
|
-
options << "--set global.dapp.docker_tag=#{docker_tag}"
|
|
129
|
-
|
|
130
|
-
if dapp.nameless_dimg?
|
|
131
|
-
options << "--set global.dapp.docker_image=#{repo}:#{docker_tag}"
|
|
132
|
-
if self.without_registry || without_registry
|
|
133
|
-
options << "--set global.dapp.docker_image_id=\\\"-\\\""
|
|
134
|
-
else
|
|
135
|
-
options << "--set global.dapp.docker_image_id=#{dimg_registry.image_id(docker_tag, nil)}"
|
|
136
|
-
end
|
|
137
|
-
else
|
|
138
|
-
dapp.dimgs_names.each do |dimg_name|
|
|
139
|
-
options << "--set global.dapp.docker_image.#{dimg_name}=#{repo}/#{dimg_name}:#{docker_tag}"
|
|
140
|
-
if self.without_registry || without_registry
|
|
141
|
-
options << "--set global.dapp.docker_image_id.#{dimg_name}=\\\"-\\\""
|
|
142
|
-
else
|
|
143
|
-
options << "--set global.dapp.docker_image_id.#{dimg_name}=#{dimg_registry.image_id(docker_tag, dimg_name)}"
|
|
144
|
-
end
|
|
145
|
-
end
|
|
146
|
-
end
|
|
126
|
+
options.concat set.map {|opt| "--set #{opt}"}
|
|
147
127
|
|
|
148
|
-
|
|
149
|
-
|
|
150
|
-
elsif ENV["CI_COMMIT_REF_NAME"]
|
|
151
|
-
true
|
|
152
|
-
elsif dapp.git_path and dapp.git_local_repo.branch != "HEAD"
|
|
153
|
-
true
|
|
154
|
-
else
|
|
155
|
-
false
|
|
156
|
-
end
|
|
157
|
-
options << "--set global.dapp.is_branch=#{is_branch}"
|
|
158
|
-
|
|
159
|
-
options << "--set global.namespace=#{namespace}"
|
|
128
|
+
service_values = Helm::Values.service_values(dapp, repo, namespace, docker_tag, without_registry: self.without_registry || without_registry)
|
|
129
|
+
options.concat service_values.to_set_options
|
|
160
130
|
end
|
|
161
131
|
end
|
|
162
132
|
|
|
@@ -171,6 +141,10 @@ module Dapp
|
|
|
171
141
|
options << "--timeout #{deploy_timeout}" if deploy_timeout
|
|
172
142
|
end
|
|
173
143
|
end
|
|
144
|
+
|
|
145
|
+
class << self
|
|
146
|
+
|
|
147
|
+
end # << self
|
|
174
148
|
end # Helm::Release
|
|
175
149
|
end # Kube
|
|
176
150
|
end # Dapp
|
|
@@ -0,0 +1,140 @@
|
|
|
1
|
+
module Dapp
|
|
2
|
+
module Kube
|
|
3
|
+
class Helm::Values
|
|
4
|
+
TEMPLATE_EMPTY_VALUE = "\\\"-\\\""
|
|
5
|
+
|
|
6
|
+
class << self
|
|
7
|
+
def service_values(*a, &b)
|
|
8
|
+
self.new(service_values_hash(*a, &b))
|
|
9
|
+
end
|
|
10
|
+
|
|
11
|
+
def service_values_hash(dapp, repo, namespace, docker_tag, fake: false, without_registry: false)
|
|
12
|
+
res = {
|
|
13
|
+
"global" => {
|
|
14
|
+
"namespace" => namespace,
|
|
15
|
+
"dapp" => {
|
|
16
|
+
"name" => dapp.name,
|
|
17
|
+
"repo" => repo,
|
|
18
|
+
"docker_tag" => docker_tag,
|
|
19
|
+
}
|
|
20
|
+
}
|
|
21
|
+
}
|
|
22
|
+
|
|
23
|
+
ci_info = {
|
|
24
|
+
"is_tag" => false,
|
|
25
|
+
"is_branch" => false,
|
|
26
|
+
"branch" => TEMPLATE_EMPTY_VALUE,
|
|
27
|
+
"tag" => TEMPLATE_EMPTY_VALUE,
|
|
28
|
+
"ref" => TEMPLATE_EMPTY_VALUE
|
|
29
|
+
}
|
|
30
|
+
res["global"]["dapp"]["ci"] = ci_info
|
|
31
|
+
|
|
32
|
+
if fake
|
|
33
|
+
elsif ENV["CI_COMMIT_TAG"]
|
|
34
|
+
ci_info["tag"] = ci_info["ref"] = ENV["CI_COMMIT_TAG"]
|
|
35
|
+
ci_info["is_tag"] = true
|
|
36
|
+
elsif ENV["CI_COMMIT_REF_NAME"]
|
|
37
|
+
ci_info["branch"] = ci_info["ref"] = ENV["CI_COMMIT_REF_NAME"]
|
|
38
|
+
ci_info["is_branch"] = true
|
|
39
|
+
elsif dapp.git_path and dapp.git_local_repo.branch != "HEAD"
|
|
40
|
+
ci_info["branch"] = ci_info["ref"] = dapp.git_local_repo.branch
|
|
41
|
+
ci_info["is_branch"] = true
|
|
42
|
+
elsif dapp.git_path
|
|
43
|
+
git = dapp.git_local_repo.send(:git)
|
|
44
|
+
|
|
45
|
+
tagref = git.references.find do |r|
|
|
46
|
+
if r.name.start_with?("refs/tags/")
|
|
47
|
+
if r.target.is_a? Rugged::Tag::Annotation
|
|
48
|
+
r.target.target_id == git.head.target_id
|
|
49
|
+
else
|
|
50
|
+
r.target_id == git.head.target_id
|
|
51
|
+
end
|
|
52
|
+
end
|
|
53
|
+
end
|
|
54
|
+
|
|
55
|
+
if tagref
|
|
56
|
+
tag = tagref.name.partition("refs/tags/").last
|
|
57
|
+
else
|
|
58
|
+
tag = git.head.target_id
|
|
59
|
+
end
|
|
60
|
+
|
|
61
|
+
ci_info["tag"] = ci_info["ref"] = tag
|
|
62
|
+
ci_info["is_tag"] = true
|
|
63
|
+
end
|
|
64
|
+
|
|
65
|
+
dimgs = dapp.build_configs.map do |config|
|
|
66
|
+
::Dapp::Dimg::Dimg.new(config: config, dapp: dapp, ignore_git_fetch: true)
|
|
67
|
+
end.uniq do |dimg|
|
|
68
|
+
dimg.config._name
|
|
69
|
+
end
|
|
70
|
+
|
|
71
|
+
dimgs.each do |dimg|
|
|
72
|
+
dimg_data = {}
|
|
73
|
+
if dimg.config._name
|
|
74
|
+
res["global"]["dapp"]["is_nameless_dimg"] = false
|
|
75
|
+
res["global"]["dapp"]["dimg"] ||= {}
|
|
76
|
+
res["global"]["dapp"]["dimg"][dimg.config._name] = dimg_data
|
|
77
|
+
else
|
|
78
|
+
res["global"]["dapp"]["is_nameless_dimg"] = true
|
|
79
|
+
res["global"]["dapp"]["dimg"] = dimg_data
|
|
80
|
+
end
|
|
81
|
+
|
|
82
|
+
dimg_labels = {}
|
|
83
|
+
docker_image_id = TEMPLATE_EMPTY_VALUE
|
|
84
|
+
unless fake || without_registry
|
|
85
|
+
dimg_labels = dapp.dimg_registry(repo).image_labels(docker_tag, dimg.config._name)
|
|
86
|
+
docker_image_id = dapp.dimg_registry(repo).image_id(docker_tag, dimg.config._name)
|
|
87
|
+
end
|
|
88
|
+
|
|
89
|
+
dimg_data["docker_image"] = [[repo, dimg.config._name].compact.join("/"), docker_tag].join(":")
|
|
90
|
+
dimg_data["docker_image_id"] = docker_image_id
|
|
91
|
+
|
|
92
|
+
[*dimg.local_git_artifacts, *dimg.remote_git_artifacts].each do |ga|
|
|
93
|
+
if ga.as
|
|
94
|
+
commit_id = dimg_labels[dapp.dimgstage_g_a_commit_label(ga.paramshash)] || TEMPLATE_EMPTY_VALUE
|
|
95
|
+
|
|
96
|
+
dimg_data["git"] ||= {}
|
|
97
|
+
dimg_data["git"][ga.as] ||= {}
|
|
98
|
+
dimg_data["git"][ga.as]["commit_id"] = commit_id
|
|
99
|
+
end
|
|
100
|
+
end
|
|
101
|
+
end
|
|
102
|
+
|
|
103
|
+
res
|
|
104
|
+
end
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
attr_reader :data
|
|
108
|
+
|
|
109
|
+
def initialize(data={})
|
|
110
|
+
@data = data
|
|
111
|
+
end
|
|
112
|
+
|
|
113
|
+
def as_set_options
|
|
114
|
+
options = {}
|
|
115
|
+
|
|
116
|
+
queue = [[nil, data]]
|
|
117
|
+
|
|
118
|
+
loop do
|
|
119
|
+
option_key, hash = queue.shift
|
|
120
|
+
break unless hash
|
|
121
|
+
|
|
122
|
+
hash.each do |k, v|
|
|
123
|
+
new_option_key = [option_key, k].compact.join(".")
|
|
124
|
+
if v.is_a? Hash
|
|
125
|
+
queue << [new_option_key, v]
|
|
126
|
+
else
|
|
127
|
+
options[new_option_key] = v
|
|
128
|
+
end
|
|
129
|
+
end
|
|
130
|
+
end
|
|
131
|
+
|
|
132
|
+
options
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
def to_set_options
|
|
136
|
+
as_set_options.map {|k, v| "--set #{k}=#{v}"}
|
|
137
|
+
end
|
|
138
|
+
end # Helm::ServiceValues
|
|
139
|
+
end # Kube
|
|
140
|
+
end # Dapp
|
|
@@ -150,15 +150,14 @@ module Dapp
|
|
|
150
150
|
else
|
|
151
151
|
err_data = {}
|
|
152
152
|
err_data[:response_http_status] = response.status
|
|
153
|
+
err_data[:response_raw_body] = response.body
|
|
153
154
|
if response_body = (JSON.parse(response.body) rescue nil)
|
|
154
155
|
err_data[:response_body] = response_body
|
|
155
|
-
else
|
|
156
|
-
err_data[:response_raw_body] = response.body
|
|
157
156
|
end
|
|
158
157
|
err_data[:request_parameters] = request_parameters
|
|
159
158
|
|
|
160
159
|
if response.status.to_s.start_with? '5'
|
|
161
|
-
raise Error::
|
|
160
|
+
raise Error::Default, code: :server_error, data: err_data
|
|
162
161
|
elsif response.status.to_s == '404'
|
|
163
162
|
case err_data.fetch(:response_body, {}).fetch('details', {})['kind']
|
|
164
163
|
when 'pods'
|
|
@@ -177,8 +176,8 @@ module Dapp
|
|
|
177
176
|
Excon.new(kube_cluster_config['cluster']['server'], **kube_server_options(excon_parameters)).tap(&:get)
|
|
178
177
|
rescue Excon::Error::Socket => err
|
|
179
178
|
raise Error::ConnectionRefused,
|
|
180
|
-
|
|
181
|
-
|
|
179
|
+
code: :server_connection_refused,
|
|
180
|
+
data: { kube_cluster_config: kube_cluster_config, kube_user_config: kube_user_config, error: err.message }
|
|
182
181
|
end
|
|
183
182
|
|
|
184
183
|
return yield connection
|
|
@@ -217,7 +216,7 @@ module Dapp
|
|
|
217
216
|
def kube_user_config
|
|
218
217
|
@kube_user_config ||= begin
|
|
219
218
|
kube_user_config = self.class.kube_user_config(kube_config, kube_context_config['context']['user'])
|
|
220
|
-
raise Error::BadConfig, code: :
|
|
219
|
+
raise Error::BadConfig, code: :user_config_not_found, data: {config_path: self.class.kube_config_path, context: kube_context_config, user: kube_context_config['context']['user']} if kube_user_config.nil?
|
|
221
220
|
kube_user_config
|
|
222
221
|
end
|
|
223
222
|
end
|
|
@@ -225,7 +224,7 @@ module Dapp
|
|
|
225
224
|
def kube_cluster_config
|
|
226
225
|
@kube_cluster_config ||= begin
|
|
227
226
|
kube_cluster_config = self.class.kube_cluster_config(kube_config, kube_context_config['context']['cluster'])
|
|
228
|
-
raise Error::BadConfig, code: :
|
|
227
|
+
raise Error::BadConfig, code: :cluster_config_not_found, data: {config_path: self.class.kube_config_path, context: kube_context_config, cluster: kube_context_config['context']['cluster']} if kube_cluster_config.nil?
|
|
229
228
|
kube_cluster_config
|
|
230
229
|
end
|
|
231
230
|
end
|
|
@@ -234,7 +233,7 @@ module Dapp
|
|
|
234
233
|
@kube_context_config ||= begin
|
|
235
234
|
context_name = self.class.kube_context_name(kube_config)
|
|
236
235
|
kube_context_config = self.class.kube_context_config(kube_config, context_name)
|
|
237
|
-
raise Error::BadConfig, code: :
|
|
236
|
+
raise Error::BadConfig, code: :config_context_not_found, data: {config_path: self.class.kube_config_path, config: kube_config, context_name: context_name} if kube_context_config.nil?
|
|
238
237
|
kube_context_config
|
|
239
238
|
end
|
|
240
239
|
end
|
|
@@ -242,7 +241,7 @@ module Dapp
|
|
|
242
241
|
def kube_config
|
|
243
242
|
@kube_config ||= begin
|
|
244
243
|
kube_config = self.class.kube_config(self.class.kube_config_path)
|
|
245
|
-
raise Error::
|
|
244
|
+
raise Error::BadConfig, code: :config_not_found, data: { config_path: self.class.kube_config_path } if kube_config.nil?
|
|
246
245
|
kube_config
|
|
247
246
|
end
|
|
248
247
|
end
|
|
@@ -260,7 +259,7 @@ module Dapp
|
|
|
260
259
|
|
|
261
260
|
def kube_context_name(kube_config)
|
|
262
261
|
kube_config['current-context'] || begin
|
|
263
|
-
if context = kube_config.fetch('contexts', []).first
|
|
262
|
+
if (context = kube_config.fetch('contexts', []).first)
|
|
264
263
|
warn "[WARN] .kube/config current-context is not set, using context '#{context['name']}'"
|
|
265
264
|
context['name']
|
|
266
265
|
end
|