orchestration 0.4.21 → 0.5.0

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 CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA256:
3
- metadata.gz: a5364dca18181a903cf48ab9e3f41a09e1701644a4761a44a4df14ae0d967840
4
- data.tar.gz: '0930a75b039913e18f4fa921edaaaf42937cfd66564336cfe2068403e1ca18e5'
3
+ metadata.gz: 972211f73865daa2a2ea2bcbfc35e031d9d974ba8fc129fda6bc8908073c9821
4
+ data.tar.gz: e1c219157ed6911b89f2af2c0b0851209ce9473c4370d9728e0600486495a564
5
5
  SHA512:
6
- metadata.gz: 281d9cb2713d9e172847b495702541e82a1396281a29553b820988ea5f5f66c8e772b01ee138158e73d84c719b8317167903fcbc446e746ddb6d3ede4e7568c3
7
- data.tar.gz: 041ebd73730d0531d4ffd649bf2b68125b84aea3a4bfd1b5027c3c68d3451437fddd2126bec0c7958e54906ba7f9ef2cfeb388bfeec95230dc69aa39028707d6
6
+ metadata.gz: 23400aeae92d13494edde9881448aa24a7fb4e4d7a96a574062c89cb0c8ff7955d884bb8fb5b1fba7a646d0c51bec4e5bc22743fdb91ea104a67d7b65f1cfc57
7
+ data.tar.gz: e06f3cb45140a2f90e95e7ab5492537f40600da1db892c7f9041f474119509a08882870b3a7d69a68e4727cc02a7af3a9cb80b01881cd727ac9671f65a1af1a6
data/README.md CHANGED
@@ -35,7 +35,7 @@ The below screenshot demonstrates _Orchestration_ being installed in a brand new
35
35
  Add _Orchestration_ to your Gemfile:
36
36
 
37
37
  ```ruby
38
- gem 'orchestration', '~> 0.4.21'
38
+ gem 'orchestration', '~> 0.5.0'
39
39
  ```
40
40
 
41
41
  Install:
@@ -276,10 +276,10 @@ The output from most underlying components is hidden in an effort to make contin
276
276
  tail -f log/orchestration*.log
277
277
  ```
278
278
 
279
- A convenience `Makefile` target `dump` is provided which will output all consumed _stdout_ and _stderr_:
279
+ A convenience `Makefile` target `dump` is provided. The following command will output all consumed _stdout_, _stderr_, and _Docker Compose_ container logs for the test environment:
280
280
 
281
281
  ```bash
282
- make dump
282
+ make dump env=test
283
283
  ```
284
284
 
285
285
  All commands also support the `verbose` flag which will output all logs immediately to the console:
@@ -395,44 +395,10 @@ This is a convention of the _Orchestration_ gem intended to make _RabbitMQ_ conf
395
395
 
396
396
  ## Alternate Database Configuration Files
397
397
 
398
- If you have multiple databases configured in various (e.g.) `config/database.*.yml` files then the `make wait-database` command can be used directly in continuous integration environments to verify that your database services are available.
398
+ If you have multiple databases configured in various `config/database.*.yml` files then the `make wait` command will automatically detect database configurations.
399
399
 
400
- Note that all services from the relevant `docker-compose.yml` configuration will be loaded when using the `make start` or `make test-setup` (called by default `make test` command).
400
+ If a service `database-example` is included in the relevant _Docker Compose_ configuration then `config/database.example.yml` will be used to load the connection configuration. Note that the service name _must_ begin with `database-`.
401
401
 
402
- Assuming the following configurations:
403
- ```
404
- # orchestration/docker-compose.test.yml
405
- version: '3.7'
406
- services:
407
- customdb:
408
- image: postgres
409
- ports:
410
- - "55667:5432"
411
- # ...
412
- ```
413
-
414
- ```
415
- # config/database.custom.yml
416
- test:
417
- adapter: postgresql
418
- host: 127.0.0.1
419
- port: 55667
420
- username: postgres
421
- password: password
422
- database: postgres
423
- ```
424
-
425
- The following command can be used to ensure that the `customdb` service is available:
426
- ```
427
- make wait-database service=custom config=config/database.custom.yml env=test
428
- ```
429
-
430
- You may wish to extend the example `Makefile` to include something like this:
431
- ```
432
- test: test-setup
433
- $(MAKE) wait-database service=custom config=config/database.custom.yml env=test
434
- # ...
435
- ```
436
402
  ## License
437
403
 
438
404
  [MIT License](LICENSE)
@@ -116,15 +116,11 @@ ifeq (${env},$(filter ${env},test development))
116
116
  ) \
117
117
  || ( [ -z '${sidecar}' ] || ${fail} )
118
118
  else
119
- @${compose} up --detach --scale app=$${instances:-1} ${services} ${log} || ${fail}
119
+ @${compose} up --detach --scale app=$${instances:-1} ${log} || ${fail}
120
120
  endif
121
121
  @$(call printrawln,' ${green}started${reset} ${tick}')
122
122
  @$(call println,'${yellow}Waiting for services to become available${reset} ...')
123
- ifdef services
124
- @$(call make,wait services='${services}') 2>${stderr} || ${fail}
125
- else
126
123
  @$(call make,wait) 2>${stderr} || ${fail}
127
- endif
128
124
 
129
125
  <% services.each do |service| %>
130
126
  .PHONY: start-<%= service %>
@@ -226,6 +222,14 @@ ifndef verbose
226
222
  $(call hr,${red}) ; \
227
223
  )
228
224
  endif
225
+ @echo ; \
226
+ $(call hr,${yellow}) ; \
227
+ $(call println,'${gray}docker-compose logs${reset}') ; \
228
+ $(call hr,${yellow}) ; \
229
+ echo
230
+ @${compose} logs
231
+ @echo ; \
232
+ $(call hr,${yellow})
229
233
 
230
234
  .PHONY: image
231
235
  image:
@@ -296,14 +300,8 @@ endif
296
300
  ### Service healthcheck commands ###
297
301
 
298
302
  .PHONY: wait
299
- <% services.each do |service| %>
300
- ifneq (,$(findstring <%= service %>,${services}))
301
- wait: wait-<%= service %>
302
- endif
303
- <% end %>
304
- ifndef services
305
- wait: <%= services.map { |command| "wait-#{command}" }.join(' ') %>
306
- endif
303
+ wait:
304
+ @${rake} orchestration:wait
307
305
  @$(call println,'${yellow}All services${reset} ${green}ready${reset}. ${tick}')
308
306
 
309
307
  ## Generic Listener healthcheck for TCP services ##
@@ -311,26 +309,6 @@ endif
311
309
  wait-listener:
312
310
  @${rake} orchestration:listener:wait service=${service} sidecar=${sidecar}
313
311
 
314
- ## Test/development wait commands
315
-
316
- <% services.each do |service| %>
317
- <% next if service.to_sym == :app %>
318
- .PHONY: wait-<%= service %>
319
- ifdef config
320
- wait-<%= service %>: configvar := config=$(config)
321
- endif
322
- ifdef service
323
- wait-<%= service %>: servicevar := service=$(service)
324
- endif
325
- wait-<%= service %>:
326
- @${rake} orchestration:<%= service %>:wait $(configvar) $(servicevar)
327
-
328
- <% end %>
329
-
330
- .PHONY: wait-app
331
- wait-app:
332
- @# no-op
333
-
334
312
  ### Docker build commands ###
335
313
 
336
314
  .PHONY: build
@@ -1,5 +1,5 @@
1
1
  # frozen_string_literal: true
2
2
 
3
3
  module Orchestration
4
- VERSION = '0.4.21'
4
+ VERSION = '0.5.0'
5
5
  end
@@ -15,6 +15,31 @@ namespace :orchestration do
15
15
  end
16
16
  end
17
17
 
18
+ task :wait do
19
+ env = Orchestration::Environment.new
20
+ services = Orchestration::Services
21
+ env.docker_compose_config['services'].each do |name, service|
22
+ path = nil
23
+
24
+ adapter = if name == 'database'
25
+ services::Database
26
+ elsif name.include?('database')
27
+ path = "config/database.#{name.sub('database-', '')}.yml"
28
+ services::Database
29
+ elsif name == 'mongo'
30
+ services::Mongo
31
+ elsif name == 'rabbitmq'
32
+ services::RabbitMQ
33
+ else
34
+ services::Listener
35
+ end
36
+
37
+ adapter::Healthcheck.start(
38
+ nil, nil, config_path: path, service_name: name, sidecar: ENV['sidecar']
39
+ )
40
+ end
41
+ end
42
+
18
43
  namespace :app do
19
44
  desc I18n.t('orchestration.rake.app.wait')
20
45
  task :wait do
metadata CHANGED
@@ -1,14 +1,14 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: orchestration
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.4.21
4
+ version: 0.5.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Bob Farrell
8
8
  autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2020-01-08 00:00:00.000000000 Z
11
+ date: 2020-01-19 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: database_url