24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
74
75
76
77
78
79
80
81
82
83
84
85
86
87
88
89
90
91
92
93
94
95
96
97
98
99
100
101
102
103
104
105
106
107
108
109
110
111
112
113
114
115
|
# File 'lib/kuber_kit/actions/service_deployer.rb', line 24
def call(services:, tags:, skip_services: nil, skip_compile: false, skip_dependencies: false, skip_deployment: false, require_confirmation: false)
deployment_result = KuberKit::Actions::ActionResult.new()
current_configuration = KuberKit.current_configuration
if services.empty? && tags.empty?
services, tags = deployment_options_selector.call()
end
disabled_services = current_configuration.disabled_services.map(&:to_s)
disabled_services += skip_services if skip_services
default_services = current_configuration.default_services.map(&:to_s) - disabled_services
pre_deploy_services = current_configuration.pre_deploy_services.map(&:to_s) - disabled_services
post_deploy_services = current_configuration.post_deploy_services.map(&:to_s) - disabled_services
service_names = service_list_resolver.resolve(
services: services || [],
tags: tags || [],
enabled_services: current_configuration.enabled_services.map(&:to_s),
disabled_services: disabled_services,
default_services: default_services
).map(&:to_sym)
if skip_dependencies
all_service_names = service_names
else
all_service_names = service_dependency_resolver.get_all(service_names)
end
all_service_names_with_hooks = (pre_deploy_services.map(&:to_sym) + all_service_names + post_deploy_services.map(&:to_sym)).uniq
unless all_service_names.any?
ui.print_warning "ServiceDeployer", "No service found with given options, nothing will be deployed."
return false
end
unless allow_deployment?(require_confirmation: require_confirmation, service_names: all_service_names_with_hooks)
return false
end
images_names = get_image_names(service_names: all_service_names_with_hooks.uniq)
unless skip_compile
compilation_result = compile_images(images_names)
return false unless compilation_result && compilation_result.succeeded?
end
if skip_deployment
return deployment_result
end
pre_deploy_services.map(&:to_sym).each_slice(configs.deploy_simultaneous_limit) do |batch_service_names|
deploy_simultaneously(batch_service_names, deployment_result)
end
unless skip_dependencies
initializers = service_dependency_resolver.get_all_deps(service_names)
initializers.map(&:to_sym).each_slice(configs.deploy_simultaneous_limit) do |batch_service_names|
deploy_simultaneously(batch_service_names, deployment_result)
end
end
service_names.each_slice(configs.deploy_simultaneous_limit) do |batch_service_names|
deploy_simultaneously(batch_service_names, deployment_result)
end
post_deploy_services.map(&:to_sym).each_slice(configs.deploy_simultaneous_limit) do |batch_service_names|
deploy_simultaneously(batch_service_names, deployment_result)
end
deployment_result
rescue KuberKit::Error => e
ui.print_error("Error", e.message)
deployment_result.failed!(e.message)
false
rescue Interrupt => e
process_cleaner.clean
false
end
|