dry-stack 0.0.36 → 0.0.38
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/dry-stack/stack.rb +30 -16
- data/lib/version.rb +1 -1
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 552fc69a9e66540b6dda0684697a9f6d61fca3df74237622d7c332bbdff055ef
|
4
|
+
data.tar.gz: 47525a271a081a4eb8f0ced2ffed4ef8292e86959efcb45aa0e08aff2a86a4e3
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: abdc1e2747cfe02adedbaff0c56d5b2ccba4406c4705313b618e1889bd6a47bcba6d0f0cc9b1b0eaaa73fa62f511ab734c1d07c839a8ca9f070c405365783c48
|
7
|
+
data.tar.gz: e07c5699910cbaecda40dceab572a693e20bb069526b340d1763549c8354a2b2d7ce82ba294909bff4f2de5b841b09e6d24c62c6b7b656108c5d5c4fbd49a5c6
|
data/lib/dry-stack/stack.rb
CHANGED
@@ -16,7 +16,7 @@ module Dry
|
|
16
16
|
def image(name)= @service[:image] = name
|
17
17
|
def ports(ports)= ((@service[:ports] ||= []) << ports).flatten!
|
18
18
|
def command(cmd)= @service[:command] = cmd
|
19
|
-
def
|
19
|
+
def deploy_label(str)= @service[:deploy][:labels] << str
|
20
20
|
end
|
21
21
|
|
22
22
|
class Stack
|
@@ -91,33 +91,36 @@ module Dry
|
|
91
91
|
end
|
92
92
|
|
93
93
|
compose[:services].each do |name, service|
|
94
|
-
|
94
|
+
ingress = [@ingress[name]].flatten
|
95
|
+
ingress[0][:port] ||= service[:ports]&.first if ingress[0]
|
95
96
|
service[:deploy] ||= {}
|
96
97
|
service[:deploy][:labels] ||= []
|
97
98
|
service[:deploy][:labels] += @labels.map { "#{_1}=#{_2}" }
|
98
99
|
|
99
|
-
if
|
100
|
+
if ingress[0] && (opts[:ingress] || opts[:traefik] || opts[:traefik_tls])
|
100
101
|
service[:networks] ||= []
|
101
102
|
service[:networks] << 'default' if service[:networks].empty?
|
102
103
|
service[:networks] << 'ingress_routing'
|
103
104
|
end
|
104
105
|
|
105
|
-
|
106
|
-
|
107
|
-
|
106
|
+
ingress.each do |rule|
|
107
|
+
if opts[:host_sed] && rule[:host]
|
108
|
+
a, b = opts[:host_sed].split('/').reject(&:empty?)
|
109
|
+
rule[:host].gsub! %r{#{a}}, b
|
110
|
+
end
|
108
111
|
end
|
109
112
|
|
110
|
-
if
|
111
|
-
service[:deploy][:labels] =
|
113
|
+
if ingress[0] && opts[:ingress]
|
114
|
+
service[:deploy][:labels] = ingress[0]&.map { |k, v| "ingress.#{k}=#{v}" }
|
112
115
|
end
|
113
116
|
|
114
|
-
|
115
|
-
service_name = "#{@name}_#{name}"
|
117
|
+
service_name = "#{@name}_#{name}"
|
116
118
|
|
119
|
+
if ingress[0] && (opts[:traefik] || opts[:traefik_tls])
|
117
120
|
service[:deploy][:labels] += [
|
118
121
|
'traefik.enable=true',
|
119
122
|
"traefik.http.routers.#{service_name}.service=#{service_name}",
|
120
|
-
"traefik.http.services.#{service_name}.loadbalancer.server.port=#{
|
123
|
+
"traefik.http.services.#{service_name}.loadbalancer.server.port=#{ingress[0][:port]}"
|
121
124
|
]
|
122
125
|
|
123
126
|
if opts[:traefik_tls]
|
@@ -131,13 +134,24 @@ module Dry
|
|
131
134
|
]
|
132
135
|
end
|
133
136
|
|
134
|
-
|
135
|
-
|
136
|
-
|
137
|
-
|
138
|
-
|
137
|
+
rule_group = ingress.map do|r|
|
138
|
+
rule = []
|
139
|
+
rule << "HostRegexp(`{name:#{nginx_host2regexp r[:host]}}`)" if r[:host]
|
140
|
+
rule << "PathPrefix(`#{nginx_host2regexp r[:path]}`)" if r[:path]
|
141
|
+
rule << "#{r[:rule]}" if r[:rule]
|
142
|
+
rule.join ' && '
|
143
|
+
end
|
144
|
+
rule = rule_group.size > 1 ? rule_group.map{"(#{_1})"}.join(' || ') : rule_group[0]
|
145
|
+
service[:deploy][:labels] << "traefik.http.routers.#{service_name}.rule=#{rule}"
|
139
146
|
end
|
140
147
|
|
148
|
+
hash = {'service-name': service_name}
|
149
|
+
hash.default = ''
|
150
|
+
original_verbosity = $VERBOSE
|
151
|
+
$VERBOSE = nil
|
152
|
+
service[:deploy][:labels].map!{ _1 % hash }
|
153
|
+
$VERBOSE = original_verbosity
|
154
|
+
|
141
155
|
service[:deploy].merge! @deploy[name] if @deploy[name]
|
142
156
|
|
143
157
|
pp_i = @publish_ports[name]&.reject { _1.class == String }
|
data/lib/version.rb
CHANGED
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dry-stack
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0.
|
4
|
+
version: 0.0.38
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Artyom B
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2023-07-
|
11
|
+
date: 2023-07-27 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rake
|