prima-twig 0.15.0 → 0.16.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.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/twig-feature +96 -3
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 8f2f0b335b9ae5c2d2e8546e2e5234d2b89b4f6a
4
- data.tar.gz: 1e1038a70d3e7012e972e978c4ba7e3fccd8c4bc
3
+ metadata.gz: db916caa0cc3ed242f5c162d4b4f60d87dd245aa
4
+ data.tar.gz: e9b620de1e2c444bbcef87ec7e7392483a290cde
5
5
  SHA512:
6
- metadata.gz: 4b376ae6c563db1a39b0c40641e7c94b6fdb3d190826c86488bae3137daa946620af5e28aca14a83a9c5cd77486d2dc493b01a6f56ecd25575461f28901f57ee
7
- data.tar.gz: 54890c9f882db21900a000157ad35d329ba2eceef46df8992c624ab5a2e657cf28ef0706645918d4e772f633e63b0ba5f2cd3d3b6b6597e2c00deb8159583ebd
6
+ metadata.gz: 138a652e8e9f96abb4e6d2cdaecc86033c271a3dd9839b6404e8972e3936cd210dd3a10cc3f4622c5838d667e2e2cf04b71c60a0fee5c37f8659a81a9ea404e6
7
+ data.tar.gz: 33bcde18a03ad010b631814e6dff91e34cf9985963409312fb931cb7853be910bb788edc16c77bde5fffa64247b3070b688395f1095a65c96603180031644f95
data/bin/twig-feature CHANGED
@@ -20,11 +20,12 @@ class Release
20
20
  @asg = Aws::AutoScaling::Client.new
21
21
  @s3_bucket = 'prima-artifacts'
22
22
  @artifact_path = '/tmp/prima-artifact.zip'
23
- @import_db_task = 'arn:aws:ecs:eu-west-1:001575623345:task-definition/ecs-task-db-restore-TaskDefinitionDbRestore-8A9N41PAYMJ2:1'
23
+ @import_db_task = 'arn:aws:ecs:eu-west-1:001575623345:task-definition/ecs-task-db-restore-TaskDefinitionDbRestore-TMFWBW7DNOYB:1'
24
24
  @prima_built = false
25
25
  @urania_built = false
26
26
  @ermes_built = false
27
27
  @bburago_built = false
28
+ @hal9000_built = false
28
29
  @backoffice_built = false
29
30
  @dns_record_identifier = nil
30
31
  @ecs_cluster_name = nil
@@ -130,10 +131,13 @@ class Release
130
131
  urania_branch = choose_branch_to_deploy('urania')
131
132
  ermes_branch = choose_branch_to_deploy('ermes')
132
133
  bburago_branch = choose_branch_to_deploy('bburago')
134
+ hal9000_branch = choose_branch_to_deploy('hal9000')
133
135
  socket_branch = {name: "master"}
134
136
  pamela_branch = {name: "master"}
135
137
 
136
- @dns_record_identifier = "#{@prima.clean_branch_name(prima_branch[:name])}-#{@prima.clean_branch_name(backoffice_branch[:name])}-#{@prima.clean_branch_name(urania_branch[:name])}-#{@prima.clean_branch_name(ermes_branch[:name])}-#{@prima.clean_branch_name(bburago_branch[:name])}".gsub(/feature./, '')[0..35].gsub(/(-+$)/, '')
138
+
139
+ @dns_record_identifier = "#{@prima.clean_branch_name(prima_branch[:name])}-#{@prima.clean_branch_name(backoffice_branch[:name])}-#{@prima.clean_branch_name(urania_branch[:name])}-#{@prima.clean_branch_name(ermes_branch[:name])}-#{@prima.clean_branch_name(bburago_branch[:name])}-#{@prima.clean_branch_name(hal9000_branch[:name])}"
140
+ @dns_record_identifier = @dns_record_identifier.gsub(/feature./, '')[0..35].gsub(/(-+$)/, '')
137
141
 
138
142
  tags = [
139
143
  {
@@ -155,10 +159,14 @@ class Release
155
159
  {
156
160
  key: "bburago",
157
161
  value: bburago_branch[:name]
162
+ },
163
+ {
164
+ key: "hal9000",
165
+ value: hal9000_branch[:name]
158
166
  }
159
167
  ]
160
168
 
161
- deploy_id = Digest::MD5.hexdigest(prima_branch[:name] + backoffice_branch[:name] + urania_branch[:name] + socket_branch[:name] + pamela_branch[:name] + ermes_branch[:name] + bburago_branch[:name])
169
+ deploy_id = Digest::MD5.hexdigest(prima_branch[:name] + backoffice_branch[:name] + urania_branch[:name] + socket_branch[:name] + pamela_branch[:name] + ermes_branch[:name] + bburago_branch[:name] + hal9000_branch[:name])
162
170
 
163
171
  cluster_stack_name = "ecs-cluster-qa-#{deploy_id}"
164
172
  create_cluster_stack(cluster_stack_name, tags) unless stack_exists?(cluster_stack_name)
@@ -188,6 +196,7 @@ class Release
188
196
  create_urania_artifact(urania_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/urania/#{urania_branch[:revision]}-qa.tar.gz")
189
197
  create_ermes_artifact(ermes_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/ermes/#{ermes_branch[:revision]}-qa.tar.gz")
190
198
  create_bburago_artifact(bburago_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/bburago/#{bburago_branch[:revision]}-qa.tar.gz")
199
+ create_hal9000_artifact(hal9000_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/hal9000/#{hal9000_branch[:revision]}-qa.tar.gz")
191
200
  create_backoffice_artifact(backoffice_branch[:revision], deploy_id) unless artifact_exists?('prima-artifacts', "backoffice/#{backoffice_branch[:revision]}-#{deploy_id}.zip")
192
201
 
193
202
  wait_for_stack_ready(stack_name_db) unless stack_ready?(stack_name_db)
@@ -336,6 +345,37 @@ class Release
336
345
  create_stack(stack_name_bburago, stack_body, parameters, tags)
337
346
  end
338
347
 
348
+ stack_name_hal9000 = "ecs-task-hal9000-qa-#{deploy_id}"
349
+ git_checkout_version('hal9000', hal9000_branch[:revision])
350
+ stack_body = IO.read('projects/hal9000/deploy/task.yml')
351
+ parameters = [
352
+ {
353
+ parameter_key: "Environment",
354
+ parameter_value: "qa"
355
+ },
356
+ {
357
+ parameter_key: "ReleaseVersion",
358
+ parameter_value: hal9000_branch[:revision]
359
+ },
360
+ {
361
+ parameter_key: "ECSClusterName",
362
+ parameter_value: @ecs_cluster_name
363
+ },
364
+ {
365
+ parameter_key: "TaskDesiredCount",
366
+ parameter_value: "1"
367
+ },
368
+ {
369
+ parameter_key: "ALBShortName",
370
+ parameter_value: "ecs-task-hal9000-qa-#{deploy_id}"[0..31]
371
+ }
372
+ ]
373
+ if stack_exists?(stack_name_hal9000)
374
+ update_stack(stack_name_hal9000, stack_body, parameters) if @hal9000_built
375
+ else
376
+ create_stack(stack_name_hal9000, stack_body, parameters, tags)
377
+ end
378
+
339
379
  git_checkout_version('backoffice', backoffice_branch[:revision])
340
380
  stack_name_backoffice = "ecs-task-backoffice-qa-#{deploy_id}"
341
381
  stack_body = IO.read('projects/backoffice/deploy/task.yml')
@@ -373,6 +413,7 @@ class Release
373
413
  wait_for_stack_ready(stack_name_backoffice) unless stack_ready?(stack_name_backoffice)
374
414
  wait_for_stack_ready(stack_name_ermes) unless stack_ready?(stack_name_ermes)
375
415
  wait_for_stack_ready(stack_name_bburago) unless stack_ready?(stack_name_bburago)
416
+ wait_for_stack_ready(stack_name_hal9000) unless stack_ready?(stack_name_hal9000)
376
417
 
377
418
  update_service_defaults(stack_name_web)
378
419
  update_service_defaults(stack_name_consumer)
@@ -380,6 +421,7 @@ class Release
380
421
  update_service_defaults(stack_name_backoffice)
381
422
  update_service_defaults(stack_name_ermes)
382
423
  update_service_defaults(stack_name_bburago)
424
+ update_service_defaults(stack_name_hal9000)
383
425
 
384
426
  stack_name_route53 = "ecs-route53-qa-#{deploy_id}"
385
427
  stack_body = IO.read('cloudformation/stacks/route53/qa.yml')
@@ -403,6 +445,10 @@ class Release
403
445
  {
404
446
  parameter_key: "BburagoElbHostname",
405
447
  parameter_value: get_alb_host(stack_name_bburago)
448
+ },
449
+ {
450
+ parameter_key: "Hal9000ElbHostname",
451
+ parameter_value: get_alb_host(stack_name_hal9000)
406
452
  }
407
453
  ]
408
454
  create_stack(stack_name_route53, stack_body, parameters, tags) unless stack_exists?(stack_name_route53)
@@ -410,6 +456,7 @@ class Release
410
456
  prima_hostname = get_route53_hostname(stack_name_web)
411
457
  urania_hostname = get_route53_hostname(stack_name_urania)
412
458
  bburago_hostname = get_route53_hostname(stack_name_bburago)
459
+ hal9000_hostname = get_route53_hostname(stack_name_hal9000)
413
460
  backoffice_hostname = get_route53_hostname(stack_name_backoffice)
414
461
 
415
462
  wait_for_stack_ready(stack_name_route53) unless stack_ready?(stack_name_route53)
@@ -419,6 +466,7 @@ class Release
419
466
  output "Urania url: #{urania_hostname}\n".cyan
420
467
  output "Backoffice url: #{backoffice_hostname}\n".cyan
421
468
  output "Bburago url: #{bburago_hostname}\n".cyan
469
+ output "Hal9000 url: #{hal9000_hostname}\n".cyan
422
470
  output "SSH connection: ssh ec2-user@#{ec2_ip_address(asg_stack_name)} -i ~/.ssh/ecs-cluster-qa.pem".cyan
423
471
  output "Deploy effettuato, everything is awesome!\n".green
424
472
  end
@@ -433,6 +481,8 @@ class Release
433
481
  host = "backoffice-#{@dns_record_identifier}.qa.colaster.com"
434
482
  when stack_name.include?('bburago')
435
483
  host = "bburago-#{@dns_record_identifier}.qa.colaster.com"
484
+ when stack_name.include?('hal9000')
485
+ host = "hal9000-#{@dns_record_identifier}.qa.colaster.com"
436
486
  end
437
487
  host
438
488
  end
@@ -461,6 +511,8 @@ class Release
461
511
  logical_resource_id = 'EcsApplicationLoadBalancerPublic'
462
512
  when stack_name.include?('bburago')
463
513
  logical_resource_id = 'EcsApplicationLoadBalancerInternal'
514
+ when stack_name.include?('hal9000')
515
+ logical_resource_id = 'EcsApplicationLoadBalancerInternal'
464
516
  end
465
517
  resp = @cf.describe_stack_resource({
466
518
  stack_name: stack_name,
@@ -482,6 +534,8 @@ class Release
482
534
  logical_resource_id = 'EcsElasticLoadBalancerPublic'
483
535
  when stack_name.include?('bburago')
484
536
  logical_resource_id = 'EcsElasticLoadBalancerInternal'
537
+ when stack_name.include?('hal9000')
538
+ logical_resource_id = 'EcsElasticLoadBalancerInternal'
485
539
  end
486
540
  resp = @cf.describe_stack_resource({
487
541
  stack_name: stack_name,
@@ -508,6 +562,8 @@ class Release
508
562
  logical_resource_id = 'ECSServiceErmes'
509
563
  when stack_name.include?('bburago')
510
564
  logical_resource_id = 'ECSServiceBburago'
565
+ when stack_name.include?('hal9000')
566
+ logical_resource_id = 'ECSServiceHal9000'
511
567
  else
512
568
  raise "Service name non gestito per lo stack #{stack_name}"
513
569
  end
@@ -627,6 +683,43 @@ class Release
627
683
  Dir.chdir '../../'
628
684
  end
629
685
 
686
+ def create_hal9000_artifact(revision)
687
+ @hal9000_built = true
688
+ output "Preparo l'artifact .zip\n".yellow
689
+
690
+ git_checkout_version('hal9000', revision)
691
+
692
+ Dir.chdir 'projects/hal9000'
693
+
694
+ [
695
+ "docker-compose build web",
696
+ "docker run -v $PWD:/code -w /code -e MIX_ENV=qa --entrypoint /bin/sh hal9000_web \
697
+ '-c' 'mix local.hex --force && mix hex.info && \
698
+ mix deps.get && mix compile && mix deps.compile && \
699
+ yarn && \
700
+ ./node_modules/.bin/brunch b --production && \
701
+ mix phoenix.digest && \
702
+ cp rel/vm.args rel/config.exs /tmp/ && mix release.clean --implode --no-confirm && \
703
+ mkdir -p rel && mv /tmp/vm.args /tmp/config.exs rel/ && mix release --env=qa'",
704
+ "sudo chown -R `whoami` ."
705
+ ].each do |cmd|
706
+ output "Eseguo #{cmd}".yellow
707
+ res = %x[ #{cmd} ]
708
+ if $?.exitstatus != 0
709
+ color = 'red'
710
+ else
711
+ color = 'green'
712
+ end
713
+ output res.send color
714
+ stop_if (color == 'red'), "Errore durante la build dell'artifact".red
715
+ end
716
+
717
+ artifact_path = Dir.glob("_build/qa/rel/hal9000/releases/*/hal9000.tar.gz").first
718
+ upload_artifact(artifact_path, "microservices/hal9000/#{revision}-qa.tar.gz")
719
+
720
+ Dir.chdir '../../'
721
+ end
722
+
630
723
  def create_backoffice_artifact(revision, deploy_id)
631
724
  @backoffice_built = true
632
725
  output "Preparo l'artifact .zip\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.15.0
4
+ version: 0.16.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2017-01-11 00:00:00.000000000 Z
14
+ date: 2017-01-28 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: twig