dry-stack 0.0.38 → 0.0.40

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 (4) hide show
  1. checksums.yaml +4 -4
  2. data/lib/dry-stack/stack.rb +22 -20
  3. data/lib/version.rb +1 -1
  4. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: 552fc69a9e66540b6dda0684697a9f6d61fca3df74237622d7c332bbdff055ef
4
- data.tar.gz: 47525a271a081a4eb8f0ced2ffed4ef8292e86959efcb45aa0e08aff2a86a4e3
3
+ metadata.gz: 7e9b84c4033d29204a5625ad37ab81c03f23f828c164127e53c4d7421667ada6
4
+ data.tar.gz: 2c38a45e3951c7b70f4cc142f44850eaf4a6a9d3929a2e93b6aaad4a40f136e5
5
5
  SHA512:
6
- metadata.gz: abdc1e2747cfe02adedbaff0c56d5b2ccba4406c4705313b618e1889bd6a47bcba6d0f0cc9b1b0eaaa73fa62f511ab734c1d07c839a8ca9f070c405365783c48
7
- data.tar.gz: e07c5699910cbaecda40dceab572a693e20bb069526b340d1763549c8354a2b2d7ce82ba294909bff4f2de5b841b09e6d24c62c6b7b656108c5d5c4fbd49a5c6
6
+ metadata.gz: 9086e6f00852383990845461c207cbec44750203929daf5b19698d2a11f60e6ee2074516adb5af2d5f8587b3d8dc9a3a026625dcea11a9e4ff7ffbb8a8d7cf34
7
+ data.tar.gz: 05615bde9a94a491066fab4b8e6045f517dd4e896e1b15f536543b2c4cf9e969cee82884d6b35f0605d0bdb6899f1c65dada887d56e70ebcbe2fae4815043642
@@ -16,6 +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 entrypoint(cmd)= @service[:entrypoint] = cmd
19
20
  def deploy_label(str)= @service[:deploy][:labels] << str
20
21
  end
21
22
 
@@ -92,7 +93,6 @@ module Dry
92
93
 
93
94
  compose[:services].each do |name, service|
94
95
  ingress = [@ingress[name]].flatten
95
- ingress[0][:port] ||= service[:ports]&.first if ingress[0]
96
96
  service[:deploy] ||= {}
97
97
  service[:deploy][:labels] ||= []
98
98
  service[:deploy][:labels] += @labels.map { "#{_1}=#{_2}" }
@@ -111,6 +111,7 @@ module Dry
111
111
  end
112
112
 
113
113
  if ingress[0] && opts[:ingress]
114
+ ingress[0][:port] ||= service[:ports]&.first
114
115
  service[:deploy][:labels] = ingress[0]&.map { |k, v| "ingress.#{k}=#{v}" }
115
116
  end
116
117
 
@@ -120,29 +121,30 @@ module Dry
120
121
  service[:deploy][:labels] += [
121
122
  'traefik.enable=true',
122
123
  "traefik.http.routers.#{service_name}.service=#{service_name}",
123
- "traefik.http.services.#{service_name}.loadbalancer.server.port=#{ingress[0][:port]}"
124
124
  ]
125
+ ingress.each_with_index do |ing, index|
126
+ ing[:port] ||= service[:ports]&.first
127
+ service[:deploy][:labels] <<
128
+ "traefik.http.services.#{service_name}-#{index}.loadbalancer.server.port=#{ing[:port]}"
129
+
130
+ if opts[:traefik_tls]
131
+ domain = opts[:tls_domain] || 'example.com'
132
+ domain = @ingress[name][:host].gsub('.*', ".#{domain}") if @ingress[name][:host]
133
+ domain = @ingress[name][:tls_domain] if @ingress[name][:tls_domain]
134
+ service[:deploy][:labels] += [
135
+ "traefik.http.routers.#{service_name}-#{index}.tls=true",
136
+ "traefik.http.routers.#{service_name}-#{index}.tls.certresolver=le",
137
+ "traefik.http.routers.#{service_name}-#{index}.tls.domains[0].main=#{domain}"
138
+ ]
139
+ end
125
140
 
126
- if opts[:traefik_tls]
127
- domain = opts[:tls_domain] || 'example.com'
128
- domain = @ingress[name][:host].gsub('.*', ".#{domain}") if @ingress[name][:host]
129
- domain = @ingress[name][:tls_domain] if @ingress[name][:tls_domain]
130
- service[:deploy][:labels] += [
131
- "traefik.http.routers.#{service_name}.tls=true",
132
- "traefik.http.routers.#{service_name}.tls.certresolver=le",
133
- "traefik.http.routers.#{service_name}.tls.domains[0].main=#{domain}"
134
- ]
135
- end
136
-
137
- rule_group = ingress.map do|r|
138
141
  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 ' && '
142
+ rule << "HostRegexp(`{name:#{nginx_host2regexp ing[:host]}}`)" if ing[:host]
143
+ rule << "PathPrefix(`#{nginx_host2regexp ing[:path]}`)" if ing[:path]
144
+ rule << "#{ing[:rule]}" if ing[:rule]
145
+
146
+ service[:deploy][:labels] << "traefik.http.routers.#{service_name}-#{index}.rule=#{rule.join ' && '}"
143
147
  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}"
146
148
  end
147
149
 
148
150
  hash = {'service-name': service_name}
data/lib/version.rb CHANGED
@@ -1,5 +1,5 @@
1
1
  module Dry
2
2
  class Stack
3
- VERSION = '0.0.38'
3
+ VERSION = '0.0.40'
4
4
  end
5
5
  end
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.38
4
+ version: 0.0.40
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-27 00:00:00.000000000 Z
11
+ date: 2023-08-16 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: rake