prima-twig 0.3.9 → 0.3.10

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 (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/twig-feature +70 -14
  3. metadata +1 -1
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: a21b864488bcc9d835d4e236c0061714c7ce9056
4
- data.tar.gz: b7bcb72ed9682ecd3d540524ccd84bd6d0c51a16
3
+ metadata.gz: 3ed110c96e11b9841ce6a6c9b7930480367e67d8
4
+ data.tar.gz: a6afcc8d40e1ac6e506d73a83939b004d6eee5e7
5
5
  SHA512:
6
- metadata.gz: 02dfc60c1589460c495509b53b895dbdc1f492b57cadb5018470f3b351f415b1cf4511a71060c86cd34ccef303a167d237017907652a818aa82ea76b91188031
7
- data.tar.gz: b49bc328108b552faab57b2560b71314a9713cd1326ae6ea90c331ac26b19c742d8dabee1c8ff615b69cbaf3ae7938824a11faf5ed9783b4d4058524ee51c5d3
6
+ metadata.gz: 4c81cd417c6122f8b181cfe44b67f5897f584cb7d676c11fd8ed94d960c12988c54abee1b8ace62ec10c0c7f29119ddb8f85742f115b1347a3f3ab5b9f9f8883
7
+ data.tar.gz: 2690a5366673fee0ed291de1fe998c17923f51b854da575d6375d60815126a82ee09fe662feb8c1cbf5d25a667bbd1310bb8d19c98b72885ef28f482aa4b6957
@@ -24,6 +24,7 @@ class Release
24
24
  @prima_built = false
25
25
  @urania_built = false
26
26
  @backoffice_built = false
27
+ @dns_record_identifier = nil
27
28
  end
28
29
 
29
30
  def execute! args
@@ -104,6 +105,7 @@ class Release
104
105
  end
105
106
 
106
107
  def deploy_feature!
108
+ `sudo true` # cosi' non chiede la password dopo
107
109
  `git pull`
108
110
  prima_branch = choose_branch_to_deploy('prima')
109
111
  backoffice_branch = choose_branch_to_deploy('backoffice')
@@ -111,6 +113,8 @@ class Release
111
113
  socket_branch = {name: "master"}
112
114
  pamela_branch = {name: "master"}
113
115
 
116
+ @dns_record_identifier = "#{@prima.clean_branch_name(prima_branch[:name])}-#{@prima.clean_branch_name(backoffice_branch[:name])}-#{@prima.clean_branch_name(urania_branch[:name])}"
117
+
114
118
  tags = [
115
119
  {
116
120
  key: "prima",
@@ -143,10 +147,11 @@ class Release
143
147
 
144
148
  create_prima_artifact(prima_branch[:revision]) unless artifact_exists?('prima-artifacts', "prima/#{prima_branch[:revision]}")
145
149
  create_urania_artifact(urania_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/urania/#{urania_branch[:revision]}-qa.tar.gz")
150
+ create_backoffice_artifact(backoffice_branch[:revision], deploy_id) unless artifact_exists?('prima-artifacts', "backoffice/#{backoffice_branch[:revision]}-#{deploy_id}.zip")
146
151
 
147
152
  wait_for_stack_ready(stack_name_db) unless stack_ready?(stack_name_db)
148
153
 
149
- import_dbs unless stack_exists?("ecs-task-web-qa-#{deploy_id}")
154
+ import_dbs(ec2_ip_address(asg_stack_name)) unless stack_exists?("ecs-task-web-qa-#{deploy_id}")
150
155
 
151
156
  stack_name_web = "ecs-task-web-qa-#{deploy_id}"
152
157
  git_checkout_version('prima', prima_branch[:revision])
@@ -213,8 +218,6 @@ class Release
213
218
  create_stack(stack_name_urania, stack_body, parameters, tags)
214
219
  end
215
220
 
216
- # Dev'essere fatto qua perche' dipende dall'url di web
217
- create_backoffice_artifact(backoffice_branch[:revision], deploy_id) unless artifact_exists?('prima-artifacts', "backoffice/#{backoffice_branch[:revision]}-#{deploy_id}.zip")
218
221
  git_checkout_version('backoffice', backoffice_branch[:revision])
219
222
  stack_name_backoffice = "ecs-task-backoffice-qa-#{deploy_id}"
220
223
  stack_body = IO.read('projects/backoffice/deploy/task.json')
@@ -248,17 +251,53 @@ class Release
248
251
  update_service_defaults(stack_name_urania)
249
252
  update_service_defaults(stack_name_backoffice)
250
253
 
251
- prima_elb_url = get_elb_url(stack_name_web)
252
- urania_elb_url = get_elb_url(stack_name_urania)
253
- backoffice_elb_url = get_elb_url(stack_name_backoffice)
254
+ stack_name_route53 = "ecs-route53-qa-#{deploy_id}"
255
+ stack_body = IO.read('cloudformation/stacks/route53/qa.json')
256
+ parameters = [
257
+ {
258
+ parameter_key: "DnsRecordIdentifier",
259
+ parameter_value: @dns_record_identifier
260
+ },
261
+ {
262
+ parameter_key: "PrimaElbHostname",
263
+ parameter_value: get_elb_host(stack_name_web)
264
+ },
265
+ {
266
+ parameter_key: "BackofficeElbHostname",
267
+ parameter_value: get_elb_host(stack_name_backoffice)
268
+ },
269
+ {
270
+ parameter_key: "UraniaElbHostname",
271
+ parameter_value: get_elb_host(stack_name_urania)
272
+ }
273
+ ]
274
+ create_stack(stack_name_route53, stack_body, parameters, tags) unless stack_exists?(stack_name_route53)
275
+
276
+ prima_hostname = get_route53_hostname(stack_name_web)
277
+ urania_hostname = get_route53_hostname(stack_name_urania)
278
+ backoffice_hostname = get_route53_hostname(stack_name_backoffice)
279
+
280
+ wait_for_stack_ready(stack_name_route53) unless stack_ready?(stack_name_route53)
254
281
 
255
- output "Prima url: #{prima_elb_url}\n".cyan
256
- output "Urania url: #{urania_elb_url}\n".cyan
257
- output "Backoffice url: #{backoffice_elb_url}\n".cyan
282
+ output "Prima url: #{prima_hostname}\n".cyan
283
+ output "Urania url: #{urania_hostname}\n".cyan
284
+ output "Backoffice url: #{backoffice_hostname}\n".cyan
258
285
  output "SSH connection: ssh ec2-user@#{ec2_ip_address(asg_stack_name)} -i ~/.ssh/ecs-cluster-qa.pem".cyan
259
286
  output "Deploy effettuato, everything is awesome!\n".green
260
287
  end
261
288
 
289
+ def get_route53_hostname(stack_name)
290
+ case
291
+ when stack_name.include?('web')
292
+ host = "www.#{@dns_record_identifier}.qa.colaster.com"
293
+ when stack_name.include?('urania')
294
+ host = "urania.#{@dns_record_identifier}.qa.colaster.com"
295
+ when stack_name.include?('backoffice')
296
+ host = "backoffice.#{@dns_record_identifier}.qa.colaster.com"
297
+ end
298
+ host
299
+ end
300
+
262
301
  def ec2_ip_address(asg_stack_name)
263
302
  resp = @cf.describe_stack_resource({
264
303
  stack_name: asg_stack_name,
@@ -273,7 +312,7 @@ class Release
273
312
  resp.reservations[0].instances[0].private_ip_address
274
313
  end
275
314
 
276
- def get_elb_url(stack_name)
315
+ def get_elb_host(stack_name)
277
316
  case
278
317
  when stack_name.include?('web')
279
318
  logical_resource_id = 'EcsElasticLoadBalancerPublic'
@@ -368,9 +407,8 @@ class Release
368
407
  end
369
408
  end
370
409
 
371
- stack_name_web = "ecs-task-web-qa-#{deploy_id}"
372
- wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
373
- web_qa_host = get_elb_url(stack_name_web)
410
+ stack_name_web = "ecs-task-web-qa-notneeded"
411
+ web_qa_host = get_route53_hostname(stack_name_web)
374
412
 
375
413
  [
376
414
  "docker-compose build workers",
@@ -412,10 +450,14 @@ class Release
412
450
  end
413
451
  end
414
452
 
453
+ stack_name_backoffice = "ecs-task-backoffice-qa-notneeded"
454
+ backoffice_qa_host = get_route53_hostname(stack_name_backoffice)
455
+
415
456
  base_cmd = 'docker run -v $PWD:/code -w /code --link redis:redis prima_'
416
457
  [
417
458
  "docker-compose build web php",
418
459
  "docker run -d --name redis redis:2.8",
460
+ "#{base_cmd}web 'bash' '-c' 'sed -i \"s/replaceme.qa.staging.colaster.com/#{backoffice_qa_host}/g\" app/config/config_qa.yml'",
419
461
  "cd ../../ && docker run -e GIT_DIR=$PWD -v $PWD:/usr/app/src -w /usr/app/src/projects/prima blinkmobile/bower install --allow-root",
420
462
  "#{base_cmd}web composer install -n",
421
463
  "#{base_cmd}web npm install",
@@ -438,6 +480,7 @@ class Release
438
480
  color = 'green'
439
481
  end
440
482
  output res.send color
483
+ exec_step "docker kill redis && docker rm redis" if color == 'red'
441
484
  stop_if (color == 'red'), "Errore durante la build dell'artifact".red
442
485
  end
443
486
 
@@ -516,10 +559,23 @@ class Release
516
559
  create_stack(stack_name, stack_body, parameters, tags)
517
560
  end
518
561
 
519
- def import_dbs
562
+ def import_dbs(ip_address)
520
563
  resp = @ecs.run_task({
521
564
  cluster: @qa_cluster,
522
565
  task_definition: @import_db_task,
566
+ overrides: {
567
+ container_overrides: [
568
+ {
569
+ name: 'dbrestore',
570
+ environment: [
571
+ {
572
+ name: 'Ec2IpAddress',
573
+ value: ip_address,
574
+ }
575
+ ]
576
+ }
577
+ ]
578
+ },
523
579
  count: 1
524
580
  })
525
581
  output "Attendo che i DB vengano importati...\n".yellow
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prima-twig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.9
4
+ version: 0.3.10
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino