et_full_system 0.1.23
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 +7 -0
- data/.gitignore +12 -0
- data/.rspec +3 -0
- data/.ruby-version +1 -0
- data/.travis.yml +7 -0
- data/CODE_OF_CONDUCT.md +74 -0
- data/Gemfile +7 -0
- data/Gemfile.lock +115 -0
- data/LICENSE.txt +21 -0
- data/README.md +194 -0
- data/Rakefile +6 -0
- data/bin/console +14 -0
- data/bin/setup +8 -0
- data/docker/Dockerfile +103 -0
- data/docker/docker-compose.yml +95 -0
- data/et_full_system.gemspec +41 -0
- data/exe/et_full_system +22 -0
- data/foreman/.env +32 -0
- data/foreman/.foreman +1 -0
- data/foreman/Procfile +12 -0
- data/foreman/et1.env +16 -0
- data/foreman/et3.env +3 -0
- data/foreman/et_admin.env +8 -0
- data/foreman/et_api.env +7 -0
- data/foreman/et_atos.env +3 -0
- data/foreman/mailhog.env +3 -0
- data/foreman/minio.env +2 -0
- data/foreman/ports.env +4 -0
- data/foreman/s3/.env +5 -0
- data/foreman/traefik.json +188 -0
- data/foreman/traefik.toml +38 -0
- data/lib/et_full_system/cli/docker/server.rb +33 -0
- data/lib/et_full_system/cli/docker.rb +64 -0
- data/lib/et_full_system/cli/local/file_storage.rb +60 -0
- data/lib/et_full_system/cli/local.rb +303 -0
- data/lib/et_full_system/cli.rb +2 -0
- data/lib/et_full_system/version.rb +3 -0
- data/lib/et_full_system.rb +5 -0
- data/shell_scripts/docker_bootstrap.sh +20 -0
- data/shell_scripts/run_foreman +32 -0
- metadata +188 -0
@@ -0,0 +1,303 @@
|
|
1
|
+
module EtFullSystem
|
2
|
+
#!/usr/bin/env ruby
|
3
|
+
# frozen_string_literal: true
|
4
|
+
require "rubygems"
|
5
|
+
require "thor"
|
6
|
+
require 'httparty'
|
7
|
+
require 'et_full_system/cli/local/file_storage'
|
8
|
+
require 'dotenv'
|
9
|
+
|
10
|
+
class LocalCommand < Thor
|
11
|
+
DEFAULT_BASE_URL="http://localhost:3200"
|
12
|
+
LOCK_FILE = File.join(Dir.tmpdir, 'et_full_system_traefik_rest_lockfile')
|
13
|
+
PROJECT_PATH = Dir.pwd
|
14
|
+
GEM_PATH = File.absolute_path('../../..', __dir__)
|
15
|
+
|
16
|
+
class RestProviderNotConfigured < RuntimeError; end
|
17
|
+
class ServiceUrlIncorrect < RuntimeError; end
|
18
|
+
desc "boot", "Sets up the server - traefik frontends and backends, along with initial data in local s3 and azure storage"
|
19
|
+
method_option :base_url, type: :string, default: DEFAULT_BASE_URL
|
20
|
+
def boot
|
21
|
+
STDERR.puts "boot - base_url is #{options[:base_url]}"
|
22
|
+
json_setup_file = File.absolute_path('../../../foreman/traefik.json', __dir__)
|
23
|
+
connect_retry_countdown = 10
|
24
|
+
begin
|
25
|
+
resp = HTTParty.put "#{options[:base_url]}/api/providers/rest", body: File.read(json_setup_file) , headers: {'Content-Type': 'application/json', 'Accept': 'application/json'}
|
26
|
+
raise "Error from traefik when performing initial config says: #{resp.body}" unless (200..299).include? resp.code
|
27
|
+
sleep 1
|
28
|
+
rescue Errno::EADDRNOTAVAIL, Errno::ECONNREFUSED
|
29
|
+
connect_retry_countdown -= 1
|
30
|
+
if connect_retry_countdown.zero?
|
31
|
+
raise "Could not connect to the traefik API after 10 retries (boot)"
|
32
|
+
else
|
33
|
+
STDERR.puts "boot - Retrying connection to traefik API in 5 seconds"
|
34
|
+
sleep 5
|
35
|
+
retry
|
36
|
+
end
|
37
|
+
end
|
38
|
+
end
|
39
|
+
|
40
|
+
method_option :base_url, type: :string, default: DEFAULT_BASE_URL
|
41
|
+
method_option :wait, type: :boolean, default: false, desc: "If set, the command will retry up to 10 times at 5 second intervals to connect to traefik. If not set, will fail immediately"
|
42
|
+
desc "update_service_url SERVICE URL", "Configures the reverse proxy to connect to a specific url for a service"
|
43
|
+
def update_service_url(service, url)
|
44
|
+
within_rest_lock do
|
45
|
+
update_rest_backend_url(service, url)
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
method_option :base_url, type: :string, default: DEFAULT_BASE_URL
|
50
|
+
desc "wait_for_support", "Waits for the servers support services to be ready - useful to call before starting application services"
|
51
|
+
def wait_for_support
|
52
|
+
connect_retry_countdown = 10
|
53
|
+
setup_retry_countdown = 10
|
54
|
+
|
55
|
+
begin
|
56
|
+
resp = HTTParty.get "#{options[:base_url]}/api/providers/rest", headers: {'Content-Type': 'application/json', 'Accept': 'application/json'}
|
57
|
+
raise RestProviderNotConfigured if resp.code == 404
|
58
|
+
rescue Errno::EADDRNOTAVAIL, Errno::ECONNREFUSED
|
59
|
+
connect_retry_countdown -= 1
|
60
|
+
if connect_retry_countdown.zero?
|
61
|
+
raise "Could not connect to the traefik API after 10 retries (wait_for_support)"
|
62
|
+
else
|
63
|
+
STDERR.puts "wait_for_support - Retrying connection to traefik API in 5 seconds"
|
64
|
+
sleep 5
|
65
|
+
retry
|
66
|
+
end
|
67
|
+
rescue RestProviderNotConfigured
|
68
|
+
setup_retry_countdown -= 1
|
69
|
+
if setup_retry_countdown.zero?
|
70
|
+
raise "Could not find the REST provider in traefik after 10 retries"
|
71
|
+
else
|
72
|
+
STDERR.puts "Re checking for the REST provider in traefik in 5 seconds"
|
73
|
+
sleep 5
|
74
|
+
retry
|
75
|
+
end
|
76
|
+
end
|
77
|
+
STDERR.puts "Support services now ready"
|
78
|
+
end
|
79
|
+
|
80
|
+
|
81
|
+
desc "server", "Starts the full system server"
|
82
|
+
method_option :without, type: :array, default: [], banner: "service1 service2", desc: "If specified, disables the specified services from running. The services are et1_web, et1_sidekiq, et3_web, mail_web, api_web, api_sidekiq, admin_web, atos_api_web, s3_web, azure_blob_web, fake_acas_web"
|
83
|
+
method_option :azurite_storage_path, default: '/tmp/azurite_storage', desc: "Where to store azurite data"
|
84
|
+
method_option :minio_storage_path, default: '/tmp/minio_storage', desc: "Where to store minio data"
|
85
|
+
def server
|
86
|
+
puts "Scheduling traefik config and file storage config"
|
87
|
+
pid = fork do
|
88
|
+
self.class.start(['boot'])
|
89
|
+
EtFullSystem::Cli::Local::FileStorageCommand.start(['setup'])
|
90
|
+
end
|
91
|
+
Process.detach(pid)
|
92
|
+
|
93
|
+
puts "Starting Procfile"
|
94
|
+
::Bundler.with_original_env do
|
95
|
+
concurrency = " -c #{procfile_concurrency_without(options[:without]).join(',')}"
|
96
|
+
cmd = "AZURITE_STORAGE_PATH=\"#{options[:azurite_storage_path]}\" MINIO_STORAGE_PATH=\"#{options[:minio_storage_path]}\" FS_ROOT_PATH=#{PROJECT_PATH} FOREMAN_PATH=#{GEM_PATH}/foreman forego start -f \"#{GEM_PATH}/foreman/Procfile\" -e \"#{GEM_PATH}/foreman/.env\"#{concurrency}"
|
97
|
+
STDERR.puts cmd
|
98
|
+
exec(cmd)
|
99
|
+
end
|
100
|
+
end
|
101
|
+
|
102
|
+
desc "file_storage <commands>", "Tools for the 'local cloud' file storage"
|
103
|
+
subcommand "file_storage", ::EtFullSystem::Cli::Local::FileStorageCommand
|
104
|
+
|
105
|
+
desc "setup", "Sets up everything ready for first run"
|
106
|
+
def setup
|
107
|
+
setup_depencencies
|
108
|
+
setup_services
|
109
|
+
end
|
110
|
+
|
111
|
+
desc "setup_services", "Sets up all services in one command"
|
112
|
+
def setup_services
|
113
|
+
::Bundler.with_original_env do
|
114
|
+
setup_et1_service
|
115
|
+
setup_et3_service
|
116
|
+
setup_api_service
|
117
|
+
setup_admin_service
|
118
|
+
setup_atos_service
|
119
|
+
end
|
120
|
+
end
|
121
|
+
|
122
|
+
desc "setup_dependencies", "Sets up all local dependencies"
|
123
|
+
def setup_depencencies
|
124
|
+
cmd = "bash --login -c \"cd /tmp && git clone https://github.com/ministryofjustice/et_fake_acas_server.git && cd et_fake_acas_server && gem build -o et_fake_acas_server.gem et_fake_acas_server && gem install et_fake_acas_server.gem && cd .. && rm -rf et_fake_acas_server\""
|
125
|
+
STDERR.puts cmd
|
126
|
+
external_command cmd, 'setup_dependencies'
|
127
|
+
end
|
128
|
+
|
129
|
+
desc "service_env SERVICE", "Returns the environment variables configured for the specified service"
|
130
|
+
def service_env(service)
|
131
|
+
lookup = {
|
132
|
+
'atos_api' => :et_atos,
|
133
|
+
'admin' => :et_admin,
|
134
|
+
'api' => :et_api,
|
135
|
+
'et1' => :et1,
|
136
|
+
'et3' => :et3
|
137
|
+
}
|
138
|
+
file = lookup.fetch(service)
|
139
|
+
parsed = Dotenv.parse("#{GEM_PATH}/foreman/.env", "#{GEM_PATH}/foreman/#{file}.env")
|
140
|
+
parsed.each_pair do |name, value|
|
141
|
+
puts "#{name}=#{value}"
|
142
|
+
end
|
143
|
+
|
144
|
+
end
|
145
|
+
|
146
|
+
private
|
147
|
+
|
148
|
+
def procfile_services
|
149
|
+
File.readlines("#{GEM_PATH}/foreman/Procfile").inject([]) do |acc, line|
|
150
|
+
next if line.strip.start_with?('#')
|
151
|
+
acc + [line.split(':').first]
|
152
|
+
end
|
153
|
+
end
|
154
|
+
|
155
|
+
def procfile_concurrency_without(without)
|
156
|
+
procfile_services.map {|service| "#{service}=#{without.include?(service) ? 0 : 1}"}
|
157
|
+
end
|
158
|
+
|
159
|
+
def external_command(cmd, tag)
|
160
|
+
IO.popen(cmd) do |io|
|
161
|
+
io.each do |line|
|
162
|
+
puts "| #{tag} | #{line}"
|
163
|
+
end
|
164
|
+
end
|
165
|
+
end
|
166
|
+
|
167
|
+
def setup_et1_service
|
168
|
+
puts "------------------------------------------------ SETTING UP ET1 SERVICE ---------------------------------------------------"
|
169
|
+
cmd = "bash --login -c \"cd #{PROJECT_PATH}/systems/et1 && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et1.env\" bundle install\""
|
170
|
+
puts cmd
|
171
|
+
external_command cmd, 'et1 setup'
|
172
|
+
|
173
|
+
cmd = "bash --login -c \"cd #{PROJECT_PATH}/systems/et1 && npm install\""
|
174
|
+
puts cmd
|
175
|
+
external_command cmd, 'et1 setup'
|
176
|
+
|
177
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/et1 && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et1.env\" bundle exec rake db:create db:migrate assets:precompile\""
|
178
|
+
puts cmd
|
179
|
+
external_command cmd, 'et1 setup'
|
180
|
+
end
|
181
|
+
|
182
|
+
def setup_et3_service
|
183
|
+
puts "------------------------------------------------ SETTING UP ET3 SERVICE ---------------------------------------------------"
|
184
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/et3 && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et3.env\" bundle install --without=development test\""
|
185
|
+
puts cmd
|
186
|
+
external_command cmd, 'et3 setup'
|
187
|
+
|
188
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/et3 && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et3.env\" bundle exec rake db:create db:migrate assets:precompile\""
|
189
|
+
puts cmd
|
190
|
+
external_command cmd, 'et3 setup'
|
191
|
+
end
|
192
|
+
|
193
|
+
def setup_admin_service
|
194
|
+
puts "------------------------------------------------ SETTING UP ADMIN SERVICE ---------------------------------------------------"
|
195
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/admin && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et_admin.env\" bundle install --without=development test\""
|
196
|
+
puts cmd
|
197
|
+
external_command cmd, 'admin setup'
|
198
|
+
|
199
|
+
puts "| Admin | Running rake commands"
|
200
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/admin && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et_admin.env\" bundle exec rake db:seed assets:precompile\""
|
201
|
+
puts cmd
|
202
|
+
external_command cmd, 'admin setup'
|
203
|
+
end
|
204
|
+
|
205
|
+
def setup_api_service
|
206
|
+
puts "------------------------------------------------ SETTING UP API SERVICE ---------------------------------------------------"
|
207
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/api && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et_api.env\" bundle install --without=development test\""
|
208
|
+
puts cmd
|
209
|
+
external_command cmd, 'api setup'
|
210
|
+
|
211
|
+
puts "| API | Running rake commands"
|
212
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/api && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et_api.env\" bundle exec rake db:create db:migrate db:seed\""
|
213
|
+
puts cmd
|
214
|
+
external_command cmd, 'api setup'
|
215
|
+
end
|
216
|
+
|
217
|
+
def setup_atos_service
|
218
|
+
puts "------------------------------------------------ SETTING UP ATOS SERVICE ---------------------------------------------------"
|
219
|
+
cmd ="bash --login -c \"cd #{PROJECT_PATH}/systems/atos && dotenv -f \"#{GEM_PATH}/foreman/.env\" dotenv -f \"#{GEM_PATH}/foreman/et_atos.env\" bundle install --without=development test\""
|
220
|
+
puts cmd
|
221
|
+
external_command cmd, 'atos setup'
|
222
|
+
end
|
223
|
+
|
224
|
+
def update_rest_backend_url(service, url)
|
225
|
+
connect_retry_countdown = 10
|
226
|
+
setup_retry_countdown = 10
|
227
|
+
begin
|
228
|
+
resp = HTTParty.get "#{options[:base_url]}/api/providers/rest", headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }
|
229
|
+
raise RestProviderNotConfigured if resp.code == 404
|
230
|
+
rescue Errno::EADDRNOTAVAIL, Errno::ECONNREFUSED
|
231
|
+
connect_retry_countdown -= 1
|
232
|
+
if !options[:wait]
|
233
|
+
fail "Could not connect to the traefik API - specify --wait to keep retrying when this happens"
|
234
|
+
elsif connect_retry_countdown.zero?
|
235
|
+
fail "Could not connect to the traefik API after 10 retries (update_rest_backend_url)"
|
236
|
+
else
|
237
|
+
STDERR.puts "update_rest_backend_url - Retrying connection to traefik API in 5 seconds"
|
238
|
+
sleep 5
|
239
|
+
retry
|
240
|
+
end
|
241
|
+
rescue RestProviderNotConfigured
|
242
|
+
setup_retry_countdown -= 1
|
243
|
+
if !options[:wait]
|
244
|
+
fail "The REST provider in traefik is not yet setup - specify --wait to keep retrying when this happens (i.e to wait for another command to set it up)"
|
245
|
+
elsif setup_retry_countdown.zero?
|
246
|
+
fail "Could not find the REST provider in traefik after 10 retries"
|
247
|
+
else
|
248
|
+
STDERR.puts "Re checking for the REST provider in traefik in 5 seconds"
|
249
|
+
sleep 5
|
250
|
+
retry
|
251
|
+
end
|
252
|
+
end
|
253
|
+
|
254
|
+
json = resp.parsed_response.dup
|
255
|
+
backend = json['backends'][service]
|
256
|
+
raise "Unknown service called #{service} - valid options are #{json['backends'].keys.join(', ')}" if backend.nil?
|
257
|
+
|
258
|
+
container = backend.dig('servers', 'web')
|
259
|
+
raise "The service '#{service}' has no server called 'web' - it must have for this command to work" if container.nil?
|
260
|
+
|
261
|
+
if container['url'] != url
|
262
|
+
container['url'] = url
|
263
|
+
put_resp = HTTParty.put "#{options[:base_url]}/api/providers/rest", body: json.to_json, headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }
|
264
|
+
raise "Error from traefik says: #{put_resp.body}" unless (200..299).include? put_resp.code
|
265
|
+
|
266
|
+
validate_rest_backend_url(service, url)
|
267
|
+
STDERR.puts "The url for service '#{service}' is now '#{url}'"
|
268
|
+
else
|
269
|
+
STDERR.puts "The url for service '#{service}' was already '#{url}'"
|
270
|
+
end
|
271
|
+
end
|
272
|
+
|
273
|
+
def validate_rest_backend_url(service, url)
|
274
|
+
retry_countdown = 10
|
275
|
+
begin
|
276
|
+
resp = HTTParty.get "#{options[:base_url]}/api/providers/rest", headers: { 'Content-Type': 'application/json', 'Accept': 'application/json' }
|
277
|
+
raise ServiceUrlIncorrect unless (200..299).include?(resp.code) && resp.parsed_response.dig('backends', service, 'servers', 'web', 'url') == url
|
278
|
+
return
|
279
|
+
rescue ServiceUrlIncorrect
|
280
|
+
retry_countdown -= 1
|
281
|
+
raise if retry_countdown.zero?
|
282
|
+
|
283
|
+
STDERR.puts "Retrying request to validate the url of '#{service}' is '#{url}' in 1 second"
|
284
|
+
sleep 1
|
285
|
+
retry
|
286
|
+
end
|
287
|
+
end
|
288
|
+
|
289
|
+
def within_rest_lock(wait: 60 * 60 * 24, timeout: 60)
|
290
|
+
File.open(LOCK_FILE, File::RDWR|File::CREAT, 0644) do |file|
|
291
|
+
Timeout::timeout(wait) { file.flock(File::LOCK_EX) }
|
292
|
+
Timeout::timeout(timeout) { yield file }
|
293
|
+
end
|
294
|
+
end
|
295
|
+
|
296
|
+
def summarise_json(json)
|
297
|
+
json['backends'].inject({}) do |acc, (service, value)|
|
298
|
+
acc[service] = value.dig('servers', 'web', 'url')
|
299
|
+
acc
|
300
|
+
end
|
301
|
+
end
|
302
|
+
end
|
303
|
+
end
|
@@ -0,0 +1,20 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
mkdir /home/app/public
|
3
|
+
sudo chown app:app /home/app/full_system/systems/et1/public/apply/assets
|
4
|
+
sudo chown app:app /home/app/full_system/systems/et3/public/assets
|
5
|
+
sudo chown app:app /home/app/full_system/systems/admin/public/assets
|
6
|
+
sudo chown app:app /home/app/full_system/systems/et1/node_modules
|
7
|
+
sudo chown app:app /home/app/full_system/systems/et1/log
|
8
|
+
sudo chown app:app /home/app/full_system/systems/et3/log
|
9
|
+
sudo chown app:app /home/app/full_system/systems/admin/log
|
10
|
+
sudo chown app:app /home/app/full_system/systems/api/log
|
11
|
+
sudo chown app:app /home/app/full_system/systems/atos/lib/rails_container/log
|
12
|
+
sudo chown app:app /home/app/full_system/systems/et3/node_modules
|
13
|
+
sudo chown app:app /home/app/full_system/systems/admin/node_modules
|
14
|
+
sudo chown app:app /home/app/full_system/systems/et1/.bundle
|
15
|
+
sudo chown app:app /home/app/full_system/systems/et3/.bundle
|
16
|
+
sudo chown app:app /home/app/full_system/systems/api/.bundle
|
17
|
+
sudo chown app:app /home/app/full_system/systems/admin/.bundle
|
18
|
+
sudo chown app:app /home/app/full_system/systems/atos/.bundle
|
19
|
+
sudo chown app:app /home/app/minio_data
|
20
|
+
sudo chown app:app /home/app/azure_storage_data
|
@@ -0,0 +1,32 @@
|
|
1
|
+
#!/bin/bash
|
2
|
+
env
|
3
|
+
mkdir /home/app/public
|
4
|
+
sudo chown app:app /home/app/full_system/systems/et1/public/apply/assets
|
5
|
+
sudo chown app:app /home/app/full_system/systems/et3/public/assets
|
6
|
+
sudo chown app:app /home/app/full_system/systems/admin/public/assets
|
7
|
+
sudo chown app:app /home/app/full_system/systems/et1/node_modules
|
8
|
+
sudo chown app:app /home/app/full_system/systems/et1/log
|
9
|
+
sudo chown app:app /home/app/full_system/systems/et3/log
|
10
|
+
sudo chown app:app /home/app/full_system/systems/admin/log
|
11
|
+
sudo chown app:app /home/app/full_system/systems/api/log
|
12
|
+
sudo chown app:app /home/app/full_system/systems/atos/lib/rails_container/log
|
13
|
+
sudo chown app:app /home/app/full_system/systems/et3/node_modules
|
14
|
+
sudo chown app:app /home/app/full_system/systems/admin/node_modules
|
15
|
+
sudo chown app:app /home/app/full_system/systems/et1/.bundle
|
16
|
+
sudo chown app:app /home/app/full_system/systems/et3/.bundle
|
17
|
+
sudo chown app:app /home/app/full_system/systems/api/.bundle
|
18
|
+
sudo chown app:app /home/app/full_system/systems/admin/.bundle
|
19
|
+
sudo chown app:app /home/app/full_system/systems/atos/.bundle
|
20
|
+
sudo chown app:app /home/app/minio_data
|
21
|
+
sudo chown app:app /home/app/azure_storage_data
|
22
|
+
|
23
|
+
parent_path=$( cd "$(dirname "${BASH_SOURCE[0]}")" ; pwd -P )
|
24
|
+
et_full_system local setup_services
|
25
|
+
echo "------------------------------------------------ SETTING UP FULL SYSTEM ---------------------------------------------------"
|
26
|
+
/usr/local/rvm/bin/rvm use
|
27
|
+
bundle install --without=development --with=production test
|
28
|
+
bundle exec et_full_system local setup &
|
29
|
+
bundle exec et_full_system local file_storage setup &
|
30
|
+
export FOREMAN_PATH="`bundle show et_full_system | tail -1`/foreman"
|
31
|
+
export FS_ROOT_PATH=$PWD;
|
32
|
+
forego start -f "${FOREMAN_PATH}/Procfile" -e "${FOREMAN_PATH}/.env"
|
metadata
ADDED
@@ -0,0 +1,188 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: et_full_system
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.1.23
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Gary Taylor
|
8
|
+
autorequire:
|
9
|
+
bindir: exe
|
10
|
+
cert_chain: []
|
11
|
+
date: 2019-04-27 00:00:00.000000000 Z
|
12
|
+
dependencies:
|
13
|
+
- !ruby/object:Gem::Dependency
|
14
|
+
name: thor
|
15
|
+
requirement: !ruby/object:Gem::Requirement
|
16
|
+
requirements:
|
17
|
+
- - "~>"
|
18
|
+
- !ruby/object:Gem::Version
|
19
|
+
version: '0.20'
|
20
|
+
type: :runtime
|
21
|
+
prerelease: false
|
22
|
+
version_requirements: !ruby/object:Gem::Requirement
|
23
|
+
requirements:
|
24
|
+
- - "~>"
|
25
|
+
- !ruby/object:Gem::Version
|
26
|
+
version: '0.20'
|
27
|
+
- !ruby/object:Gem::Dependency
|
28
|
+
name: httparty
|
29
|
+
requirement: !ruby/object:Gem::Requirement
|
30
|
+
requirements:
|
31
|
+
- - "~>"
|
32
|
+
- !ruby/object:Gem::Version
|
33
|
+
version: '0.16'
|
34
|
+
type: :runtime
|
35
|
+
prerelease: false
|
36
|
+
version_requirements: !ruby/object:Gem::Requirement
|
37
|
+
requirements:
|
38
|
+
- - "~>"
|
39
|
+
- !ruby/object:Gem::Version
|
40
|
+
version: '0.16'
|
41
|
+
- !ruby/object:Gem::Dependency
|
42
|
+
name: aws-sdk-s3
|
43
|
+
requirement: !ruby/object:Gem::Requirement
|
44
|
+
requirements:
|
45
|
+
- - "~>"
|
46
|
+
- !ruby/object:Gem::Version
|
47
|
+
version: '1.9'
|
48
|
+
type: :runtime
|
49
|
+
prerelease: false
|
50
|
+
version_requirements: !ruby/object:Gem::Requirement
|
51
|
+
requirements:
|
52
|
+
- - "~>"
|
53
|
+
- !ruby/object:Gem::Version
|
54
|
+
version: '1.9'
|
55
|
+
- !ruby/object:Gem::Dependency
|
56
|
+
name: azure-storage
|
57
|
+
requirement: !ruby/object:Gem::Requirement
|
58
|
+
requirements:
|
59
|
+
- - "~>"
|
60
|
+
- !ruby/object:Gem::Version
|
61
|
+
version: 0.15.0.preview
|
62
|
+
type: :runtime
|
63
|
+
prerelease: false
|
64
|
+
version_requirements: !ruby/object:Gem::Requirement
|
65
|
+
requirements:
|
66
|
+
- - "~>"
|
67
|
+
- !ruby/object:Gem::Version
|
68
|
+
version: 0.15.0.preview
|
69
|
+
- !ruby/object:Gem::Dependency
|
70
|
+
name: dotenv
|
71
|
+
requirement: !ruby/object:Gem::Requirement
|
72
|
+
requirements:
|
73
|
+
- - "~>"
|
74
|
+
- !ruby/object:Gem::Version
|
75
|
+
version: '2.7'
|
76
|
+
- - ">="
|
77
|
+
- !ruby/object:Gem::Version
|
78
|
+
version: 2.7.2
|
79
|
+
type: :runtime
|
80
|
+
prerelease: false
|
81
|
+
version_requirements: !ruby/object:Gem::Requirement
|
82
|
+
requirements:
|
83
|
+
- - "~>"
|
84
|
+
- !ruby/object:Gem::Version
|
85
|
+
version: '2.7'
|
86
|
+
- - ">="
|
87
|
+
- !ruby/object:Gem::Version
|
88
|
+
version: 2.7.2
|
89
|
+
- !ruby/object:Gem::Dependency
|
90
|
+
name: bundler
|
91
|
+
requirement: !ruby/object:Gem::Requirement
|
92
|
+
requirements:
|
93
|
+
- - "~>"
|
94
|
+
- !ruby/object:Gem::Version
|
95
|
+
version: '1.16'
|
96
|
+
type: :development
|
97
|
+
prerelease: false
|
98
|
+
version_requirements: !ruby/object:Gem::Requirement
|
99
|
+
requirements:
|
100
|
+
- - "~>"
|
101
|
+
- !ruby/object:Gem::Version
|
102
|
+
version: '1.16'
|
103
|
+
- !ruby/object:Gem::Dependency
|
104
|
+
name: rake
|
105
|
+
requirement: !ruby/object:Gem::Requirement
|
106
|
+
requirements:
|
107
|
+
- - "~>"
|
108
|
+
- !ruby/object:Gem::Version
|
109
|
+
version: '10.0'
|
110
|
+
type: :development
|
111
|
+
prerelease: false
|
112
|
+
version_requirements: !ruby/object:Gem::Requirement
|
113
|
+
requirements:
|
114
|
+
- - "~>"
|
115
|
+
- !ruby/object:Gem::Version
|
116
|
+
version: '10.0'
|
117
|
+
description: Runs the employment tribunals system - all services and background jobs
|
118
|
+
email:
|
119
|
+
- gary.taylor@hmcts.net
|
120
|
+
executables:
|
121
|
+
- et_full_system
|
122
|
+
extensions: []
|
123
|
+
extra_rdoc_files: []
|
124
|
+
files:
|
125
|
+
- ".gitignore"
|
126
|
+
- ".rspec"
|
127
|
+
- ".ruby-version"
|
128
|
+
- ".travis.yml"
|
129
|
+
- CODE_OF_CONDUCT.md
|
130
|
+
- Gemfile
|
131
|
+
- Gemfile.lock
|
132
|
+
- LICENSE.txt
|
133
|
+
- README.md
|
134
|
+
- Rakefile
|
135
|
+
- bin/console
|
136
|
+
- bin/setup
|
137
|
+
- docker/Dockerfile
|
138
|
+
- docker/docker-compose.yml
|
139
|
+
- et_full_system.gemspec
|
140
|
+
- exe/et_full_system
|
141
|
+
- foreman/.env
|
142
|
+
- foreman/.foreman
|
143
|
+
- foreman/Procfile
|
144
|
+
- foreman/et1.env
|
145
|
+
- foreman/et3.env
|
146
|
+
- foreman/et_admin.env
|
147
|
+
- foreman/et_api.env
|
148
|
+
- foreman/et_atos.env
|
149
|
+
- foreman/mailhog.env
|
150
|
+
- foreman/minio.env
|
151
|
+
- foreman/ports.env
|
152
|
+
- foreman/s3/.env
|
153
|
+
- foreman/traefik.json
|
154
|
+
- foreman/traefik.toml
|
155
|
+
- lib/et_full_system.rb
|
156
|
+
- lib/et_full_system/cli.rb
|
157
|
+
- lib/et_full_system/cli/docker.rb
|
158
|
+
- lib/et_full_system/cli/docker/server.rb
|
159
|
+
- lib/et_full_system/cli/local.rb
|
160
|
+
- lib/et_full_system/cli/local/file_storage.rb
|
161
|
+
- lib/et_full_system/version.rb
|
162
|
+
- shell_scripts/docker_bootstrap.sh
|
163
|
+
- shell_scripts/run_foreman
|
164
|
+
homepage: https://github.com/ministryofjustice/et-full-system
|
165
|
+
licenses:
|
166
|
+
- MIT
|
167
|
+
metadata:
|
168
|
+
allowed_push_host: http://mygemserver.com
|
169
|
+
post_install_message:
|
170
|
+
rdoc_options: []
|
171
|
+
require_paths:
|
172
|
+
- lib
|
173
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
174
|
+
requirements:
|
175
|
+
- - ">="
|
176
|
+
- !ruby/object:Gem::Version
|
177
|
+
version: '0'
|
178
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
179
|
+
requirements:
|
180
|
+
- - ">="
|
181
|
+
- !ruby/object:Gem::Version
|
182
|
+
version: '0'
|
183
|
+
requirements: []
|
184
|
+
rubygems_version: 3.0.3
|
185
|
+
signing_key:
|
186
|
+
specification_version: 4
|
187
|
+
summary: Runs the employment tribunals system - all services and background jobs
|
188
|
+
test_files: []
|