prima-twig 0.62.15 → 0.62.102

Sign up to get free protection for your applications and to get access to all the features.
@@ -22,18 +22,9 @@ class Release
22
22
  exec "twig feature #{ARGV.join ' '}"
23
23
  end
24
24
  end
25
- @batch = Aws::Batch::Client.new
26
- @s3 = Aws::S3::Client.new
27
- @s3_bucket = 'prima-artifacts'
28
- @artifact_path = '/tmp/prima-artifact.zip'
29
- @import_db_task = 'arn:aws:ecs:eu-west-1:001575623345:task-definition/ecs-task-db-restore2-TaskDefinitionDbRestore-4UBHMCZBE5WM:1'
30
- @cf_role = 'arn:aws:iam::001575623345:role/qainit-service-role-cloudformat-CloudformationRole-18KBZQIS148R9'
31
25
  @dns_record_identifier = nil
32
26
  @ecs_cluster_name = nil
33
27
  @deploy_update = false
34
- @qainit = false
35
- @qainit_host_folder = "/var/ci/#{ENV['DRONE_REPO']}/#{ENV['DRONE_BRANCH']}/#{ENV['DRONE_BUILD_NUMBER']}"
36
- @qainit_folder = "/drone/src/github.com/project/primait/qainit"
37
28
  @projects = {
38
29
  'prima' => {},
39
30
  'urania' => {},
@@ -42,7 +33,7 @@ class Release
42
33
  'hal9000' => {},
43
34
  'fidaty' => {},
44
35
  'peano' => {},
45
- 'rogoreport' => {},
36
+ # 'rogoreport' => {},
46
37
  'assange' => {},
47
38
  'borat' => {},
48
39
  'crash' => {},
@@ -74,8 +65,6 @@ class Release
74
65
  qainit_deploy_shutdown!
75
66
  elsif 'update' == args[1]
76
67
  qainit_deploy_update!
77
- elsif 'read' == args[1]
78
- qainit_read_config! args[2]
79
68
  else
80
69
  if args[1]
81
70
  select_branches(args[1..-1])
@@ -92,19 +81,8 @@ class Release
92
81
  end
93
82
  when 'deploy'
94
83
  abort('Non sei nella cartella di artemide') unless Dir.pwd.match 'artemide$'
95
- if ['terminate', 'stop', 'shutdown', 'halt', 'destroy'].include? args[1]
96
- deploy_shutdown!
97
- elsif 'update' == args[1]
98
- deploy_update!
99
- elsif 'lock' == args[1]
84
+ if 'lock' == args[1]
100
85
  deploy_lock!
101
- else
102
- if args[1]
103
- select_branches(args[1])
104
- else
105
- select_branches
106
- end
107
- deploy_feature!
108
86
  end
109
87
  when 'aggregator'
110
88
  if 'enable' == args[1]
@@ -474,8 +452,10 @@ class Release
474
452
 
475
453
  File.open('branch_names', 'w') { |file| file.write(JSON.generate(@projects)) }
476
454
 
455
+ update_drone_yml!
456
+
477
457
  `git add projects && \
478
- git add branch_names && \
458
+ git add branch_names .drone.yml && \
479
459
  git commit -m '#{branch_name}' && \
480
460
  git push -f --set-upstream origin #{branch_name} && \
481
461
  git checkout master`
@@ -519,7 +499,10 @@ class Release
519
499
 
520
500
  File.open('branch_names', 'w') { |file| file.write(JSON.generate(@projects)) }
521
501
 
522
- `git commit -am 'update'`
502
+ update_drone_yml!
503
+
504
+ `git add branch_names .drone.yml`
505
+ `git commit -m 'update'`
523
506
  `git push && git checkout master`
524
507
  end
525
508
 
@@ -597,10 +580,6 @@ class Release
597
580
  output "Cancello il record DNS utilizzato da Lighthouse"
598
581
  delete_lighthouse_dns()
599
582
  output "Finito!".green
600
-
601
- if @qainit
602
- qainit_write_output("QA #{ENV["DRONE_BRANCH"]} spento.", 'Indirizzi scritti su ')
603
- end
604
583
  end
605
584
 
606
585
  def qainit_write_output(file_message, output_message)
@@ -610,41 +589,16 @@ class Release
610
589
  output "#{output_message} #{qa_file_name}".green
611
590
  end
612
591
 
613
- def qainit_read_config!(action)
614
- projects = ''
615
-
616
- File.open('branch_names', 'r') do |file|
617
- file.each_line do |line|
618
- projects = JSON.parse(line)
619
- end
592
+ def update_drone_yml!()
593
+ drone_yml = File.read('.drone.yml')
594
+ @projects.each do |key, project|
595
+ drone_yml = drone_yml.gsub(/#{key}@.+\n/, "#{key}@#{project['revision']}\n")
620
596
  end
621
-
622
- projects.each do |key, project|
623
- @projects[key] = project
624
- end
625
-
626
- get_s3_config_files
627
- @qainit = true
628
- case action
629
- when 'shutdown'
630
- output 'Shutting down'.green
631
- qainit_drone_shutdown!
632
- else
633
- output 'Starting standard deploy'.green
634
- deploy_feature!
597
+ File.open(".drone.yml", "w") do |f|
598
+ f.write(drone_yml)
635
599
  end
636
600
  end
637
601
 
638
- def get_s3_config_files
639
- # manteniamo la struttura per lanciarlo facilmente anche da locale
640
- `mkdir -p cloudformation/stacks/task cloudformation/stacks/route53 cloudformation/stacks/asg cloudformation/stacks/elb`
641
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/task/db.yml', response_target: 'cloudformation/stacks/task/db.yml'})
642
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/route53/qa.yml', response_target: 'cloudformation/stacks/route53/qa.yml'})
643
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/asg/ecs-asg-allinone.yml', response_target: 'cloudformation/stacks/asg/ecs-asg-allinone.yml'})
644
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/ecs-cluster.yml', response_target: 'cloudformation/stacks/ecs-cluster.yml'})
645
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/elb/alb-public-qa.yml', response_target: 'cloudformation/stacks/elb/alb-public-qa.yml'})
646
- end
647
-
648
602
  def get_deploy_id
649
603
  if @deploy_id
650
604
  @deploy_id
@@ -654,1236 +608,6 @@ class Release
654
608
  end
655
609
  end
656
610
 
657
- def deploy_feature!
658
- `git pull && git submodule init && git submodule update`
659
- @ami_id = get_ami_id("ecs-fleet-allinone-staging")
660
- deploy_id = get_deploy_id
661
- stack_name_alb = 'ecs-alb-http-public-qa-' + deploy_id[0..5]
662
- stack_name_alb_ws = 'ecs-alb-ws-public-qa-' + deploy_id[0..5]
663
- unless @qainit
664
- @projects.each_key do |project_key|
665
- if @projects[project_key]['revision']
666
- git_checkout_version(project_key, @projects[project_key]['revision'])
667
- end
668
- end
669
- end
670
- @dns_record_identifier = deploy_id
671
- @git_branch = ENV['DRONE_BRANCH']
672
- hostname_pattern_priority = hostname_pattern_priority()
673
- tags = [
674
- {
675
- key: "qainit",
676
- value: @git_branch
677
- },
678
- {
679
- key: "hostname_pattern_priority",
680
- value: hostname_pattern_priority
681
- }
682
- ]
683
- @projects.each do |key, value|
684
- case key.to_s
685
- when 'crash'
686
- tags << { key: 'crash', value: @projects['crash']['name'] } if deploy_crash?
687
- when 'starsky', 'hutch'
688
- tags << { key: key.to_s, value: @projects[key.to_s]['name'] } if deploy_starsky_hutch?
689
- else
690
- tags << { key: key, value: value['name'] }
691
- end
692
- end
693
-
694
- cluster_stack_name = "ecs-cluster-qa-#{deploy_id}"
695
-
696
- if stack_exists?(cluster_stack_name)
697
- tags = get_stack_tags(cluster_stack_name)
698
- hostname_pattern_priority = tags.detect do |tag|
699
- tag.key == 'hostname_pattern_priority'
700
- end.value
701
- end
702
-
703
- create_cluster_stack(cluster_stack_name, tags) unless stack_exists?(cluster_stack_name)
704
- wait_for_stack_ready(cluster_stack_name) unless stack_ready?(cluster_stack_name)
705
-
706
- create_alb_stack(stack_name_alb, "http", deploy_id) unless stack_exists?(stack_name_alb)
707
- create_alb_stack(stack_name_alb_ws, "websocket", deploy_id) unless stack_exists?(stack_name_alb_ws)
708
-
709
- resp = describe_stack_resource(cluster_stack_name, 'ECSCluster')
710
- @ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
711
-
712
- asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
713
- create_asg_stack(asg_stack_name, tags) unless stack_exists?(asg_stack_name)
714
-
715
- stack_name_db = "ecs-task-db-qa-#{deploy_id}"
716
- stack_body = IO.read('cloudformation/stacks/task/db.yml')
717
- parameters = [
718
- {
719
- parameter_key: "Environment",
720
- parameter_value: "qa"
721
- },
722
- {
723
- parameter_key: "ECSClusterName",
724
- parameter_value: @ecs_cluster_name
725
- }
726
- ]
727
- create_stack(stack_name_db, stack_body, parameters, tags, @cf_role) unless stack_exists?(stack_name_db) # creazione asincrona stack dei db (~4 min)
728
-
729
- output "check pyxis \n".yellow
730
-
731
- create_pyxis_artifact(@projects["pyxis-npm"]['revision'], deploy_id) unless @projects["pyxis-npm"].nil? # deve essere creato prima di quello di prima, per avere la versione
732
- create_prima_artifact(@projects["prima"]['revision'], @projects["prima"]['name'], deploy_id) unless artifact_exists?('prima-artifacts-encrypted', "prima/#{@projects["prima"]['revision']}.tar.gz")
733
- # l'artefatto di prima viene creato sempre (puntamenti all'ambiente compilati nel js) e richiede molto più di 4 minuti
734
- wait_for_stack_ready(stack_name_db) unless stack_ready?(stack_name_db) # dovrebbe essere istantaneo
735
- db_task = ''
736
- db_task = import_dbs(ec2_ip_address(asg_stack_name)) unless stack_exists?("ecs-route53-qa-#{deploy_id}") # import asincrono dei dati
737
-
738
- create_crash_artifact(@projects['crash']['revision'], deploy_id) unless !deploy_crash? || artifact_exists?('prima-artifacts-encrypted', "microservices/crash/#{@projects['crash']['revision']}-qa.tar.gz")
739
- create_urania_artifact(@projects["urania"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/urania/#{@projects["urania"]['revision']}-qa.tar.gz")
740
- create_roger_artifact(@projects["roger"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/roger/#{@projects["roger"]['revision']}-qa.tar.gz")
741
- create_ermes_artifact(@projects["ermes"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/ermes/#{@projects["ermes"]['revision']}-qa.tar.gz")
742
- create_bburago_artifact(@projects["bburago"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/bburago/#{@projects["bburago"]['revision']}-qa.tar.gz")
743
- create_hal9000_artifact(@projects["hal9000"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/hal9000/#{@projects["hal9000"]['revision']}-qa.tar.gz")
744
- create_rachele_artifact(@projects["rachele"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/rachele/#{@projects["rachele"]['revision']}-qa.tar.gz")
745
- create_fidaty_artifact(@projects["fidaty"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/fidaty/#{@projects["fidaty"]['revision']}-qa.tar.gz")
746
- create_peano_artifact(@projects["peano"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/peano/#{@projects["peano"]['revision']}-qa.tar.gz")
747
- create_rogoreport_artifact(@projects["rogoreport"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/rogoreport/rogoreport-#{@projects["rogoreport"]['revision']}-qa.tar.gz")
748
- create_assange_artifact(@projects["assange"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/assange/#{@projects["assange"]['revision']}-qa.tar.gz")
749
- create_borat_artifact(@projects["borat"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/borat/#{@projects["borat"]['revision']}-qa.tar.gz")
750
- create_activia_artifact(@projects["activia"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/activia/#{@projects["activia"]['revision']}-qa.tar.gz")
751
- create_leftorium_artifact(@projects["leftorium"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/leftorium/#{@projects["leftorium"]['revision']}-qa.tar.gz")
752
- create_skynet_artifact(@projects["skynet"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/skynet/#{@projects["skynet"]['revision']}-qa.tar.gz")
753
- create_maia_artifact(@projects["maia"]['revision']) unless artifact_exists?('prima-artifacts-encrypted', "microservices/maia/#{@projects["maia"]['revision']}-qa.tar.gz")
754
- create_starsky_artifact(@projects["starsky"]['revision']) unless !deploy_starsky_hutch? || artifact_exists?('prima-artifacts-encrypted', "microservices/starsky/#{@projects["starsky"]['revision']}-qa.tar.gz")
755
- create_hutch_artifact(@projects["hutch"]['revision']) unless !deploy_starsky_hutch? || artifact_exists?('prima-artifacts-encrypted', "microservices/hutch/#{@projects["hutch"]['revision']}-#{@dns_record_identifier[0..7]}-qa.tar.gz")
756
-
757
-
758
- wait_for_db_import(db_task) unless stack_exists?("ecs-route53-qa-#{deploy_id}") # dovrebbe essere istantaneo
759
-
760
- import_redis_crash(ec2_ip_address(asg_stack_name)) if deploy_crash? && !stack_exists?("ecs-task-web-qa-#{deploy_id}")
761
-
762
- wait_for_stack_ready(stack_name_alb) unless stack_ready?(stack_name_alb)
763
- wait_for_stack_ready(stack_name_alb_ws) unless stack_ready?(stack_name_alb_ws)
764
-
765
- stack_name_route53 = "ecs-route53-qa-#{deploy_id}"
766
- stack_body = IO.read('cloudformation/stacks/route53/qa.yml')
767
- parameters = [
768
- {
769
- parameter_key: "DnsRecordIdentifier",
770
- parameter_value: @dns_record_identifier
771
- },
772
- {
773
- parameter_key: "PrimaElbHostname",
774
- parameter_value: get_alb_host(stack_name_alb)
775
- },
776
- {
777
- parameter_key: "UraniaIp",
778
- parameter_value: ec2_ip_address(asg_stack_name)
779
- },
780
- {
781
- parameter_key: "BburagoIp",
782
- parameter_value: ec2_ip_address(asg_stack_name)
783
- },
784
- {
785
- parameter_key: "Hal9000Ip",
786
- parameter_value: ec2_ip_address(asg_stack_name)
787
- },
788
- {
789
- parameter_key: "FidatyIp",
790
- parameter_value: ec2_ip_address(asg_stack_name)
791
- },
792
- {
793
- parameter_key: "PeanoIp",
794
- parameter_value: ec2_ip_address(asg_stack_name)
795
- },
796
- {
797
- parameter_key: "ErmesIp",
798
- parameter_value: ec2_ip_address(asg_stack_name)
799
- },
800
- {
801
- parameter_key: "ActiviaIp",
802
- parameter_value: ec2_ip_address(asg_stack_name)
803
- },
804
- {
805
- parameter_key: "SkynetIp",
806
- parameter_value: ec2_ip_address(asg_stack_name)
807
- },
808
- {
809
- parameter_key: "RogerIp",
810
- parameter_value: ec2_ip_address(asg_stack_name)
811
- },
812
- {
813
- parameter_key: "LeftoriumIp",
814
- parameter_value: ec2_ip_address(asg_stack_name)
815
- },
816
- {
817
- parameter_key: "RacheleIp",
818
- parameter_value: ec2_ip_address(asg_stack_name)
819
- },
820
- {
821
- parameter_key: "RedisIp",
822
- parameter_value: ec2_ip_address(asg_stack_name)
823
- },
824
- {
825
- parameter_key: "AssangeElbHostname",
826
- parameter_value: get_alb_host(stack_name_alb)
827
- },
828
- {
829
- parameter_key: "BoratElbHostname",
830
- parameter_value: get_alb_host(stack_name_alb_ws)
831
- },
832
- {
833
- parameter_key: 'CrashElbHostname',
834
- parameter_value: get_alb_host(stack_name_alb_ws)
835
- },
836
- {
837
- parameter_key: 'StarskyElbHostname',
838
- parameter_value: get_alb_host(stack_name_alb)
839
- },
840
- {
841
- parameter_key: 'HutchElbHostname',
842
- parameter_value: get_alb_host(stack_name_alb)
843
- },
844
- {
845
- parameter_key: 'MaiaElbHostname',
846
- parameter_value: get_alb_host(stack_name_alb)
847
- }
848
- ]
849
-
850
- create_stack(stack_name_route53, stack_body, parameters, tags, @cf_role) unless stack_exists?(stack_name_route53)
851
- wait_for_stack_ready(stack_name_route53) unless stack_ready?(stack_name_route53)
852
-
853
- stack_name_skynet = "ecs-task-skynet-qa-#{deploy_id}"
854
- git_checkout_version('skynet', @projects["skynet"]['revision'])
855
- stack_body = File.read('projects/skynet/deploy/task.yml')
856
- parameters = [
857
- {
858
- parameter_key: "Environment",
859
- parameter_value: "qa"
860
- },
861
- {
862
- parameter_key: "ReleaseVersion",
863
- parameter_value: @projects["skynet"]['revision']
864
- },
865
- {
866
- parameter_key: "TaskDesiredCount",
867
- parameter_value: "1"
868
- },
869
- {
870
- parameter_key: "ECSClusterName",
871
- parameter_value: @ecs_cluster_name
872
- },
873
- {
874
- parameter_key: "HostnamePattern",
875
- parameter_value: "skynet-#{@dns_record_identifier}.qa.colaster.com"
876
- },
877
- {
878
- parameter_key: "HostnamePatternPriority",
879
- parameter_value: hostname_pattern_priority
880
- }
881
- ]
882
- if stack_exists?(stack_name_skynet)
883
- cur_version = get_currently_deployed_version(stack_name_skynet)
884
- update_stack(stack_name_skynet, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["skynet"]['revision'])
885
- else
886
- create_stack(stack_name_skynet, stack_body, parameters, tags, @cf_role)
887
- end
888
-
889
- stack_name_urania = "ecs-task-urania-qa-#{deploy_id}"
890
- git_checkout_version('urania', @projects["urania"]['revision'])
891
- stack_body = File.read('projects/urania/deploy/task.yml')
892
- parameters = [
893
- {
894
- parameter_key: "Environment",
895
- parameter_value: "qa"
896
- },
897
- {
898
- parameter_key: "ReleaseVersion",
899
- parameter_value: @projects["urania"]['revision']
900
- },
901
- {
902
- parameter_key: "TaskDesiredCount",
903
- parameter_value: "1"
904
- },
905
- {
906
- parameter_key: "ECSClusterName",
907
- parameter_value: @ecs_cluster_name
908
- },
909
- {
910
- parameter_key: "HostnamePattern",
911
- parameter_value: "urania-#{@dns_record_identifier}.qa.colaster.com"
912
- },
913
- {
914
- parameter_key: "HostnamePatternPriority",
915
- parameter_value: hostname_pattern_priority
916
- }
917
- ]
918
- if stack_exists?(stack_name_urania)
919
- cur_version = get_currently_deployed_version(stack_name_urania)
920
- update_stack(stack_name_urania, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["urania"]['revision'])
921
- else
922
- create_stack(stack_name_urania, stack_body, parameters, tags, @cf_role)
923
- end
924
-
925
- stack_name_ermes = "ecs-task-ermes-qa-#{deploy_id}"
926
- git_checkout_version('ermes', @projects["ermes"]['revision'])
927
- stack_body = File.read('projects/ermes/deploy/task.yml')
928
- parameters = [
929
- {
930
- parameter_key: "Environment",
931
- parameter_value: "qa"
932
- },
933
- {
934
- parameter_key: "ReleaseVersion",
935
- parameter_value: "#{@projects['ermes']['revision']}"
936
- },
937
- {
938
- parameter_key: "TaskDesiredCount",
939
- parameter_value: "1"
940
- },
941
- {
942
- parameter_key: "ECSClusterName",
943
- parameter_value: @ecs_cluster_name
944
- },
945
- {
946
- parameter_key: "HostnamePattern",
947
- parameter_value: "ermes-#{@dns_record_identifier}.qa.colaster.com"
948
- },
949
- {
950
- parameter_key: "HostnamePatternPriority",
951
- parameter_value: hostname_pattern_priority
952
- },
953
- {
954
- parameter_key: "WebHost",
955
- parameter_value: get_route53_hostname('ecs-task-web-qa-notneeded')
956
- },
957
- {
958
- parameter_key: "PeanoHost",
959
- parameter_value: get_route53_hostname('ecs-task-peano-qa-notneeded')
960
- }
961
- ]
962
- if stack_exists?(stack_name_ermes)
963
- cur_version = get_currently_deployed_version(stack_name_ermes)
964
- update_stack(stack_name_ermes, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["ermes"]['revision'])
965
- else
966
- create_stack(stack_name_ermes, stack_body, parameters, tags, @cf_role)
967
- end
968
-
969
- stack_name_bburago = "ecs-task-bburago-qa-#{deploy_id}"
970
- git_checkout_version('bburago', @projects["bburago"]['revision'])
971
- stack_body = File.read('projects/bburago/deploy/task.yml')
972
- parameters = [
973
- {
974
- parameter_key: "Environment",
975
- parameter_value: "qa"
976
- },
977
- {
978
- parameter_key: "ReleaseVersion",
979
- parameter_value: @projects["bburago"]['revision']
980
- },
981
- {
982
- parameter_key: "ECSClusterName",
983
- parameter_value: @ecs_cluster_name
984
- },
985
- {
986
- parameter_key: "TaskDesiredCount",
987
- parameter_value: "1"
988
- },
989
- {
990
- parameter_key: "HostnamePattern",
991
- parameter_value: "bburago-#{@dns_record_identifier}.qa.colaster.com"
992
- },
993
- {
994
- parameter_key: "HostnamePatternPriority",
995
- parameter_value: hostname_pattern_priority
996
- }
997
- ]
998
- if stack_exists?(stack_name_bburago)
999
- cur_version = get_currently_deployed_version(stack_name_bburago)
1000
- update_stack(stack_name_bburago, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["bburago"]['revision'])
1001
- else
1002
- create_stack(stack_name_bburago, stack_body, parameters, tags, @cf_role)
1003
- end
1004
-
1005
- stack_name_hal9000 = "ecs-task-hal9000-qa-#{deploy_id}"
1006
- git_checkout_version('hal9000', @projects["hal9000"]['revision'])
1007
- stack_body = File.read('projects/hal9000/deploy/task.yml')
1008
- parameters = [
1009
- {
1010
- parameter_key: "Environment",
1011
- parameter_value: "qa"
1012
- },
1013
- {
1014
- parameter_key: "ReleaseVersion",
1015
- parameter_value: @projects["hal9000"]['revision']
1016
- },
1017
- {
1018
- parameter_key: "ECSClusterName",
1019
- parameter_value: @ecs_cluster_name
1020
- },
1021
- {
1022
- parameter_key: "TaskDesiredCount",
1023
- parameter_value: "1"
1024
- },
1025
- {
1026
- parameter_key: "HostnamePattern",
1027
- parameter_value: "hal9000-#{@dns_record_identifier}.qa.colaster.com"
1028
- },
1029
- {
1030
- parameter_key: "HostnamePatternPriority",
1031
- parameter_value: hostname_pattern_priority
1032
- }
1033
- ]
1034
- if stack_exists?(stack_name_hal9000)
1035
- cur_version = get_currently_deployed_version(stack_name_hal9000)
1036
- update_stack(stack_name_hal9000, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["hal9000"]['revision'])
1037
- else
1038
- create_stack(stack_name_hal9000, stack_body, parameters, tags, @cf_role)
1039
- end
1040
-
1041
- stack_name_fidaty = "ecs-task-fidaty-qa-#{deploy_id}"
1042
- git_checkout_version('fidaty', @projects["fidaty"]['revision'])
1043
- stack_body = File.read('projects/fidaty/deploy/task.yml')
1044
- parameters = [
1045
- {
1046
- parameter_key: "Environment",
1047
- parameter_value: "qa"
1048
- },
1049
- {
1050
- parameter_key: "ReleaseVersion",
1051
- parameter_value: "#{@projects["fidaty"]['revision']}"
1052
- },
1053
- {
1054
- parameter_key: "ECSClusterName",
1055
- parameter_value: @ecs_cluster_name
1056
- },
1057
- {
1058
- parameter_key: "TaskDesiredCount",
1059
- parameter_value: "1"
1060
- },
1061
- {
1062
- parameter_key: "HostnamePattern",
1063
- parameter_value: "fidaty-#{@dns_record_identifier}.qa.colaster.com"
1064
- },
1065
- {
1066
- parameter_key: "HostnamePatternPriority",
1067
- parameter_value: hostname_pattern_priority
1068
- },
1069
- {
1070
- parameter_key: "PeanoHost",
1071
- parameter_value: get_route53_hostname("ecs-task-peano-qa-notneeded")
1072
- }
1073
- ]
1074
- if stack_exists?(stack_name_fidaty)
1075
- cur_version = get_currently_deployed_version(stack_name_fidaty)
1076
- update_stack(stack_name_fidaty, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["fidaty"]['revision'])
1077
- else
1078
- create_stack(stack_name_fidaty, stack_body, parameters, tags, @cf_role)
1079
- end
1080
-
1081
- stack_name_peano = "ecs-task-peano-qa-#{deploy_id}"
1082
- git_checkout_version('peano', @projects["peano"]['revision'])
1083
- stack_body = File.read('projects/peano/deploy/task.yml')
1084
- parameters = [
1085
- {
1086
- parameter_key: "Environment",
1087
- parameter_value: "qa"
1088
- },
1089
- {
1090
- parameter_key: "ReleaseVersion",
1091
- parameter_value: "#{@projects['peano']['revision']}"
1092
- },
1093
- {
1094
- parameter_key: "ECSClusterName",
1095
- parameter_value: @ecs_cluster_name
1096
- },
1097
- {
1098
- parameter_key: "TaskDesiredCount",
1099
- parameter_value: "1"
1100
- },
1101
- {
1102
- parameter_key: "HostnamePattern",
1103
- parameter_value: "peano-#{@dns_record_identifier}.qa.colaster.com"
1104
- },
1105
- {
1106
- parameter_key: "HostnamePatternPriority",
1107
- parameter_value: hostname_pattern_priority
1108
- },
1109
- {
1110
- parameter_key: "WebHost",
1111
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1112
- },
1113
- {
1114
- parameter_key: "AssangeHost",
1115
- parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
1116
- }
1117
- ]
1118
- if stack_exists?(stack_name_peano)
1119
- cur_version = get_currently_deployed_version(stack_name_peano)
1120
- update_stack(stack_name_peano, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["peano"]['revision'])
1121
- else
1122
- create_stack(stack_name_peano, stack_body, parameters, tags, @cf_role)
1123
- end
1124
-
1125
- stack_name_rogoreport = "ecs-task-rogoreport-qa-#{deploy_id}"
1126
- git_checkout_version('rogoreport', @projects["rogoreport"]['revision'])
1127
- stack_body = IO.read('projects/rogoreport/deploy/task.yml')
1128
- parameters = [
1129
- {
1130
- parameter_key: "Environment",
1131
- parameter_value: "qa"
1132
- },
1133
- {
1134
- parameter_key: "ReleaseVersion",
1135
- parameter_value: "#{@projects["rogoreport"]['revision']}"
1136
- },
1137
- {
1138
- parameter_key: "ReleaseName",
1139
- parameter_value: "rogoreport"
1140
- },
1141
- {
1142
- parameter_key: "ECSClusterName",
1143
- parameter_value: @ecs_cluster_name
1144
- }
1145
- ]
1146
- if stack_exists?(stack_name_rogoreport)
1147
- cur_version = get_currently_deployed_version(stack_name_rogoreport)
1148
- update_stack(stack_name_rogoreport, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["rogoreport"]['revision'])
1149
- else
1150
- create_stack(stack_name_rogoreport, stack_body, parameters, tags, @cf_role)
1151
- end
1152
-
1153
- stack_name_assange = "ecs-task-assange-qa-#{deploy_id}"
1154
- git_checkout_version('assange', @projects["assange"]['revision'])
1155
- stack_body = IO.read('projects/assange/deploy/task.yml')
1156
- parameters = [
1157
- {
1158
- parameter_key: "Environment",
1159
- parameter_value: "qa"
1160
- },
1161
- {
1162
- parameter_key: "ReleaseVersion",
1163
- parameter_value: "#{@projects["assange"]['revision']}"
1164
- },
1165
- {
1166
- parameter_key: "ECSClusterName",
1167
- parameter_value: @ecs_cluster_name
1168
- },
1169
- {
1170
- parameter_key: "TaskDesiredCount",
1171
- parameter_value: "1"
1172
- },
1173
- {
1174
- parameter_key: "ALBShortName",
1175
- parameter_value: "assange-qa-#{deploy_id}"[0..27]
1176
- },
1177
- {
1178
- parameter_key: "HostnamePattern",
1179
- parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
1180
- },
1181
- {
1182
- parameter_key: "HostnamePatternPriority",
1183
- parameter_value: (hostname_pattern_priority.to_i + 20).to_s
1184
- },
1185
- {
1186
- parameter_key: "EnvHash",
1187
- parameter_value: deploy_id
1188
- },
1189
- {
1190
- parameter_key: "WebHost",
1191
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1192
- },
1193
- {
1194
- parameter_key: "AssangeHost",
1195
- parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
1196
- }
1197
- ]
1198
- if stack_exists?(stack_name_assange)
1199
- cur_version = get_currently_deployed_version(stack_name_assange)
1200
- update_stack(stack_name_assange, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["assange"]['revision'])
1201
- else
1202
- create_stack(stack_name_assange, stack_body, parameters, tags, @cf_role)
1203
- end
1204
-
1205
- stack_name_leftorium = "ecs-task-leftorium-qa-#{deploy_id}"
1206
- git_checkout_version('leftorium', @projects["leftorium"]['revision'])
1207
- stack_body = File.read('projects/leftorium/deploy/task.yml')
1208
- parameters = [
1209
- {
1210
- parameter_key: "Environment",
1211
- parameter_value: "qa"
1212
- },
1213
- {
1214
- parameter_key: "ReleaseVersion",
1215
- parameter_value: "#{@projects["leftorium"]['revision']}"
1216
- },
1217
- {
1218
- parameter_key: "ECSClusterName",
1219
- parameter_value: @ecs_cluster_name
1220
- },
1221
- {
1222
- parameter_key: "TaskDesiredCount",
1223
- parameter_value: "1"
1224
- },
1225
- {
1226
- parameter_key: "HostnamePattern",
1227
- parameter_value: "leftorium-#{@dns_record_identifier}.qa.colaster.com"
1228
- },
1229
- {
1230
- parameter_key: "HostnamePatternPriority",
1231
- parameter_value: hostname_pattern_priority
1232
- }
1233
- ]
1234
- if stack_exists?(stack_name_leftorium)
1235
- cur_version = get_currently_deployed_version(stack_name_leftorium)
1236
- update_stack(stack_name_leftorium, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["leftorium"]['revision'])
1237
- else
1238
- create_stack(stack_name_leftorium, stack_body, parameters, tags, @cf_role)
1239
- end
1240
-
1241
- stack_name_rachele = "ecs-task-rachele-qa-#{deploy_id}"
1242
- git_checkout_version('rachele', @projects["rachele"]['revision'])
1243
- stack_body = File.read('projects/rachele/deploy/task.yml')
1244
- parameters = [
1245
- {
1246
- parameter_key: "Environment",
1247
- parameter_value: "qa"
1248
- },
1249
- {
1250
- parameter_key: "ReleaseVersion",
1251
- parameter_value: "#{@projects["rachele"]['revision']}"
1252
- },
1253
- {
1254
- parameter_key: "ECSClusterName",
1255
- parameter_value: @ecs_cluster_name
1256
- },
1257
- {
1258
- parameter_key: "TaskDesiredCount",
1259
- parameter_value: "1"
1260
- },
1261
- {
1262
- parameter_key: "WebHost",
1263
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1264
- },
1265
- {
1266
- parameter_key: "HostnamePattern",
1267
- parameter_value: "rachele-#{@dns_record_identifier}.qa.colaster.com"
1268
- },
1269
- {
1270
- parameter_key: "HostnamePatternPriority",
1271
- parameter_value: hostname_pattern_priority
1272
- }
1273
- ]
1274
- if stack_exists?(stack_name_rachele)
1275
- cur_version = get_currently_deployed_version(stack_name_rachele)
1276
- unless cur_version.include?(@projects["rachele"]['revision'])
1277
- delete_stack(stack_name_rachele)
1278
- wait_for_stack_removal(stack_name_rachele)
1279
- create_stack(stack_name_rachele, stack_body, parameters, tags, @cf_role)
1280
- end
1281
- else
1282
- create_stack(stack_name_rachele, stack_body, parameters, tags, @cf_role)
1283
- end
1284
-
1285
- stack_name_borat = "ecs-task-borat-qa-#{deploy_id}"
1286
- git_checkout_version('borat', @projects["borat"]['revision'])
1287
- stack_body = IO.read('projects/borat/deploy/task.yml')
1288
- parameters = [
1289
- {
1290
- parameter_key: "Environment",
1291
- parameter_value: "qa"
1292
- },
1293
- {
1294
- parameter_key: "ReleaseVersion",
1295
- parameter_value: "#{@projects["borat"]['revision']}"
1296
- },
1297
- {
1298
- parameter_key: "ECSClusterName",
1299
- parameter_value: @ecs_cluster_name
1300
- },
1301
- {
1302
- parameter_key: "TaskDesiredCount",
1303
- parameter_value: "1"
1304
- },
1305
- {
1306
- parameter_key: "ALBShortName",
1307
- parameter_value: "borat-qa-#{deploy_id}"[0..27]
1308
- },
1309
- {
1310
- parameter_key: "HostnamePattern",
1311
- parameter_value: "backoffice-#{@dns_record_identifier}.qa.colaster.com"
1312
- },
1313
- {
1314
- parameter_key: "HostnamePatternPriority",
1315
- parameter_value: (hostname_pattern_priority.to_i + 30).to_s
1316
- },
1317
- {
1318
- parameter_key: "EnvHash",
1319
- parameter_value: deploy_id
1320
- },
1321
- {
1322
- parameter_key: "WsEndpoint",
1323
- parameter_value: "wss://backoffice-#{@dns_record_identifier}.qa.colaster.com/socket/websocket?vsn=1.0.0"
1324
- },
1325
- {
1326
- parameter_key: "GraphqlEndpoint",
1327
- parameter_value: "https://backoffice-#{@dns_record_identifier}.qa.colaster.com/graphql"
1328
- },
1329
- {
1330
- parameter_key: "GraphqlInsuranceEndpoint",
1331
- parameter_value: "https://backoffice-#{@dns_record_identifier}.qa.colaster.com/graphql/insurance"
1332
- },
1333
- {
1334
- parameter_key: "AuthEndpoint",
1335
- parameter_value: "https://backoffice-#{@dns_record_identifier}.qa.colaster.com/auth"
1336
- },
1337
- {
1338
- parameter_key: "FrontendEndpoint",
1339
- parameter_value: "https://www-#{@dns_record_identifier}.qa.colaster.com/"
1340
- }
1341
- ]
1342
- if stack_exists?(stack_name_borat)
1343
- cur_version = get_currently_deployed_version(stack_name_borat)
1344
- update_stack(stack_name_borat, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["borat"]['revision'])
1345
- else
1346
- create_stack(stack_name_borat, stack_body, parameters, tags, @cf_role)
1347
- end
1348
-
1349
- if deploy_crash?
1350
- git_checkout_version('crash', @projects['crash']['revision'])
1351
- stack_name_crash = "ecs-task-crash-qa-#{deploy_id}"
1352
- stack_body = IO.read('projects/crash/deploy/task.yml')
1353
- parameters = [
1354
- {
1355
- parameter_key: 'Environment',
1356
- parameter_value: 'qa'
1357
- },
1358
- {
1359
- parameter_key: 'ReleaseVersion',
1360
- parameter_value: "#{@projects['crash']['revision']}"
1361
- },
1362
- {
1363
- parameter_key: 'TaskDesiredCount',
1364
- parameter_value: '1'
1365
- },
1366
- {
1367
- parameter_key: 'ECSClusterName',
1368
- parameter_value: @ecs_cluster_name
1369
- },
1370
- {
1371
- parameter_key: 'ALBShortName',
1372
- parameter_value: "crash-qa-#{deploy_id}"[0..27]
1373
- },
1374
- {
1375
- parameter_key: 'HostnamePattern',
1376
- parameter_value: "crash-#{@dns_record_identifier}.qa.colaster.com"
1377
- },
1378
- {
1379
- parameter_key: 'HostnamePatternPriority',
1380
- parameter_value: (hostname_pattern_priority.to_i + 10).to_s
1381
- },
1382
- {
1383
- parameter_key: "EnvHash",
1384
- parameter_value: deploy_id
1385
- },
1386
- {
1387
- parameter_key: "WsEndpoint",
1388
- parameter_value: "wss://crash-#{@dns_record_identifier}.qa.colaster.com/socket/websocket?vsn=1.0.0"
1389
- },
1390
- {
1391
- parameter_key: "GraphqlEndpoint",
1392
- parameter_value: "https://crash-#{@dns_record_identifier}.qa.colaster.com/graphql"
1393
- },
1394
- {
1395
- parameter_key: "AuthDomain",
1396
- parameter_value: "https://www-#{@dns_record_identifier}.qa.colaster.com/"
1397
- },
1398
- ]
1399
- if stack_exists?(stack_name_crash)
1400
- cur_version = get_currently_deployed_version(stack_name_crash)
1401
- update_stack(stack_name_crash, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["crash"]['revision'])
1402
- else
1403
- create_stack(stack_name_crash, stack_body, parameters, tags, @cf_role)
1404
- end
1405
- end
1406
-
1407
- if deploy_starsky_hutch?
1408
- stack_name_starsky = "ecs-task-starsky-qa-#{deploy_id}"
1409
- git_checkout_version('starsky', @projects["starsky"]['revision'])
1410
- stack_body = IO.read('projects/starsky/deploy/task.yml')
1411
- parameters = [
1412
- {
1413
- parameter_key: "Environment",
1414
- parameter_value: "qa"
1415
- },
1416
- {
1417
- parameter_key: "ReleaseVersion",
1418
- parameter_value: "#{@projects["starsky"]['revision']}"
1419
- },
1420
- {
1421
- parameter_key: "TaskDesiredCount",
1422
- parameter_value: "1"
1423
- },
1424
- {
1425
- parameter_key: "ECSClusterName",
1426
- parameter_value: @ecs_cluster_name
1427
- },
1428
- {
1429
- parameter_key: "ALBShortName",
1430
- parameter_value: "starsky-qa-#{deploy_id}"[0..27]
1431
- },
1432
- {
1433
- parameter_key: "EnvHash",
1434
- parameter_value: deploy_id
1435
- },
1436
- {
1437
- parameter_key: "HostnamePattern",
1438
- parameter_value: "starsky-#{@dns_record_identifier}.qa.colaster.com"
1439
- },
1440
- {
1441
- parameter_key: "HostnamePatternPriority",
1442
- parameter_value: (hostname_pattern_priority.to_i + 74).to_s
1443
- }
1444
- ]
1445
- if stack_exists?(stack_name_starsky)
1446
- cur_version = get_currently_deployed_version(stack_name_starsky)
1447
- unless cur_version.include?(@projects["starsky"]['revision'])
1448
- delete_stack(stack_name_starsky)
1449
- wait_for_stack_removal(stack_name_starsky)
1450
- create_stack(stack_name_starsky, stack_body, parameters, tags, @cf_role)
1451
- end
1452
- else
1453
- create_stack(stack_name_starsky, stack_body, parameters, tags, @cf_role)
1454
- end
1455
- end
1456
-
1457
- stack_name_activia = "ecs-task-activia-qa-#{deploy_id}"
1458
- git_checkout_version('activia', @projects["activia"]['revision'])
1459
- stack_body = File.read('projects/activia/deploy/task.yml')
1460
- parameters = [
1461
- {
1462
- parameter_key: "Environment",
1463
- parameter_value: "qa"
1464
- },
1465
- {
1466
- parameter_key: "ReleaseVersion",
1467
- parameter_value: "#{@projects["activia"]['revision']}"
1468
- },
1469
- {
1470
- parameter_key: "ECSClusterName",
1471
- parameter_value: @ecs_cluster_name
1472
- },
1473
- {
1474
- parameter_key: "TaskDesiredCount",
1475
- parameter_value: "1"
1476
- },
1477
- {
1478
- parameter_key: "HostnamePattern",
1479
- parameter_value: "activia-#{@dns_record_identifier}.qa.colaster.com"
1480
- },
1481
- {
1482
- parameter_key: "HostnamePatternPriority",
1483
- parameter_value: hostname_pattern_priority
1484
- },
1485
- {
1486
- parameter_key: "WebHost",
1487
- parameter_value: get_route53_hostname('ecs-task-web-qa-notneeded')
1488
- },
1489
- {
1490
- parameter_key: "PeanoHost",
1491
- parameter_value: get_route53_hostname('ecs-task-peano-qa-notneeded')
1492
- }
1493
- ]
1494
- if stack_exists?(stack_name_activia)
1495
- cur_version = get_currently_deployed_version(stack_name_activia)
1496
- update_stack(stack_name_activia, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["activia"]['revision'])
1497
- else
1498
- create_stack(stack_name_activia, stack_body, parameters, tags, @cf_role)
1499
- end
1500
-
1501
- # Waiting for prima healtcheck dependencies
1502
- wait_for_stack_ready(stack_name_skynet) unless stack_ready?(stack_name_skynet)
1503
- wait_for_stack_ready(stack_name_urania) unless stack_ready?(stack_name_urania)
1504
- wait_for_stack_ready(stack_name_bburago) unless stack_ready?(stack_name_bburago)
1505
- wait_for_stack_ready(stack_name_hal9000) unless stack_ready?(stack_name_hal9000)
1506
- wait_for_stack_ready(stack_name_assange) unless stack_ready?(stack_name_assange)
1507
- wait_for_stack_ready(stack_name_fidaty) unless stack_ready?(stack_name_fidaty)
1508
- wait_for_stack_ready(stack_name_leftorium) unless stack_ready?(stack_name_leftorium)
1509
- wait_for_stack_ready(stack_name_rachele) unless stack_ready?(stack_name_rachele)
1510
-
1511
- stack_name_web = "ecs-task-web-qa-#{deploy_id}"
1512
- git_checkout_version('prima', @projects["prima"]['revision'])
1513
- stack_body = IO.read('projects/prima/app/cloudformation/tasks/web-qa.yml')
1514
- parameters = [
1515
- # {
1516
- # parameter_key: "Environment",
1517
- # parameter_value: "qa"
1518
- # },
1519
- {
1520
- parameter_key: "ReleaseVersion",
1521
- parameter_value: "#{@projects["prima"]['revision']}"
1522
- },
1523
- # {
1524
- # parameter_key: "TaskDesiredCount",
1525
- # parameter_value: "1"
1526
- # },
1527
- {
1528
- parameter_key: "ECSClusterName",
1529
- parameter_value: @ecs_cluster_name
1530
- },
1531
- {
1532
- parameter_key: "ALBShortName",
1533
- parameter_value: "web-qa-#{deploy_id}"[0..27]
1534
- },
1535
- {
1536
- parameter_key: "WebQaBaseHostname",
1537
- parameter_value: "#{@dns_record_identifier}.qa.colaster.com"
1538
- },
1539
- {
1540
- parameter_key: "HostnamePatternPriority",
1541
- parameter_value: hostname_pattern_priority
1542
- },
1543
- {
1544
- parameter_key: "HostnamePatternAggregatorPriority",
1545
- parameter_value: (hostname_pattern_priority.to_i + 1).to_s
1546
- },
1547
- {
1548
- parameter_key: "EnvHash",
1549
- parameter_value: deploy_id
1550
- },
1551
- {
1552
- parameter_key: "AssangeHostname",
1553
- parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
1554
- },
1555
- {
1556
- parameter_key: "BackofficeHostname",
1557
- parameter_value: "backoffice-#{@dns_record_identifier}.qa.colaster.com"
1558
- },
1559
- {
1560
- parameter_key: "WebHostname",
1561
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1562
- },
1563
- {
1564
- parameter_key: "FePrimaDomain",
1565
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1566
- },
1567
- {
1568
- parameter_key: "HostnamePattern",
1569
- parameter_value: "www-#{@dns_record_identifier}.*"
1570
- }
1571
- ]
1572
- if stack_exists?(stack_name_web)
1573
- cur_version = get_currently_deployed_version(stack_name_web)
1574
- update_stack(stack_name_web, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
1575
- else
1576
- create_stack(stack_name_web, stack_body, parameters, tags, @cf_role)
1577
- end
1578
-
1579
- stack_name_consumer = "ecs-task-consumer-qa-#{deploy_id}"
1580
- git_checkout_version('prima', @projects["prima"]['revision'])
1581
- stack_body = IO.read('projects/prima/app/cloudformation/tasks/consumer.yml')
1582
- parameters = [
1583
- {
1584
- parameter_key: "Environment",
1585
- parameter_value: "qa"
1586
- },
1587
- {
1588
- parameter_key: "ReleaseVersion",
1589
- parameter_value: "#{@projects["prima"]['revision']}"
1590
- },
1591
- {
1592
- parameter_key: "ECSClusterName",
1593
- parameter_value: @ecs_cluster_name
1594
- }
1595
- ]
1596
- if stack_exists?(stack_name_consumer)
1597
- cur_version = get_currently_deployed_version(stack_name_consumer)
1598
- update_stack(stack_name_consumer, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
1599
- else
1600
- create_stack(stack_name_consumer, stack_body, parameters, tags, @cf_role)
1601
- end
1602
-
1603
- stack_name_roger = "ecs-task-roger-qa-#{deploy_id}"
1604
- git_checkout_version('roger', @projects["roger"]['revision'])
1605
- stack_body = File.read('projects/roger/deploy/task.yml')
1606
- parameters = [
1607
- {
1608
- parameter_key: "Environment",
1609
- parameter_value: "qa"
1610
- },
1611
- {
1612
- parameter_key: "ReleaseVersion",
1613
- parameter_value: @projects["roger"]['revision']
1614
- },
1615
- {
1616
- parameter_key: "TaskDesiredCount",
1617
- parameter_value: "1"
1618
- },
1619
- {
1620
- parameter_key: "ECSClusterName",
1621
- parameter_value: @ecs_cluster_name
1622
- },
1623
- {
1624
- parameter_key: "HostnamePattern",
1625
- parameter_value: "roger-#{@dns_record_identifier}.qa.colaster.com"
1626
- },
1627
- {
1628
- parameter_key: "HostnamePatternPriority",
1629
- parameter_value: hostname_pattern_priority
1630
- }
1631
- ]
1632
- if stack_exists?(stack_name_roger)
1633
- cur_version = get_currently_deployed_version(stack_name_roger)
1634
- update_stack(stack_name_roger, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["roger"]['revision'])
1635
- else
1636
- create_stack(stack_name_roger, stack_body, parameters, tags, @cf_role)
1637
- end
1638
-
1639
-
1640
- if deploy_starsky_hutch?
1641
- wait_for_stack_ready(stack_name_starsky) unless stack_ready?(stack_name_starsky) unless !deploy_starsky_hutch?
1642
-
1643
- stack_name_hutch = "ecs-task-hutch-qa-#{deploy_id}"
1644
- git_checkout_version('hutch', @projects["hutch"]['revision'])
1645
- stack_body = File.read('projects/hutch/deploy/task.yml')
1646
- parameters = [
1647
- {
1648
- parameter_key: "Environment",
1649
- parameter_value: "qa"
1650
- },
1651
- {
1652
- parameter_key: "ReleaseVersion",
1653
- parameter_value: "#{@projects["hutch"]['revision']}-#{@dns_record_identifier[0..7]}"
1654
- },
1655
- {
1656
- parameter_key: "ALBShortName",
1657
- parameter_value: "hutch-qa-#{deploy_id}"[0..27]
1658
- },
1659
- {
1660
- parameter_key: "ECSClusterName",
1661
- parameter_value: @ecs_cluster_name
1662
- },
1663
- {
1664
- parameter_key: "EnvHash",
1665
- parameter_value: deploy_id
1666
- },
1667
- {
1668
- parameter_key: "HostnamePattern",
1669
- parameter_value: "hutch-#{@dns_record_identifier}.qa.colaster.com"
1670
- },
1671
- {
1672
- parameter_key: "HostnamePatternPriority",
1673
- parameter_value: (hostname_pattern_priority.to_i + 254).to_s
1674
- },
1675
- {
1676
- parameter_key: "ApiUrl",
1677
- parameter_value: "https://#{get_route53_hostname('maia-intermediari')}"
1678
- }
1679
- ]
1680
- if stack_exists?(stack_name_hutch)
1681
- cur_version = get_currently_deployed_version(stack_name_hutch)
1682
- update_stack(stack_name_hutch, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["hutch"]['revision'])
1683
- else
1684
- create_stack(stack_name_hutch, stack_body, parameters, tags, @cf_role)
1685
- end
1686
- end
1687
-
1688
- stack_name_maia = "ecs-task-maia-qa-#{deploy_id}"
1689
- git_checkout_version('maia', @projects["maia"]['revision'])
1690
- stack_body = File.read('projects/maia/deploy/task.yml')
1691
- parameters = [
1692
- {
1693
- parameter_key: "Environment",
1694
- parameter_value: "qa"
1695
- },
1696
- {
1697
- parameter_key: "ReleaseVersion",
1698
- parameter_value: "#{@projects["maia"]['revision']}"
1699
- },
1700
- {
1701
- parameter_key: "ALBShortName",
1702
- parameter_value: "maia-qa-#{deploy_id}"[0..15]
1703
- },
1704
- {
1705
- parameter_key: "ECSClusterName",
1706
- parameter_value: @ecs_cluster_name
1707
- },
1708
- {
1709
- parameter_key: "EnvHash",
1710
- parameter_value: deploy_id
1711
- },
1712
- {
1713
- parameter_key: "HostnamePatternPublic",
1714
- parameter_value: "api*-#{@dns_record_identifier}.qa.colaster.com"
1715
- },
1716
- {
1717
- parameter_key: "HostnamePatternPriority",
1718
- parameter_value: (hostname_pattern_priority.to_i + 128).to_s
1719
- },
1720
- {
1721
- parameter_key: "ProxyHostnameIntermediari",
1722
- parameter_value: "api-intermediari-#{@dns_record_identifier}.qa.colaster.com"
1723
- },
1724
- {
1725
- parameter_key: "ProxyHostnameApp",
1726
- parameter_value: "api-#{@dns_record_identifier}.qa.colaster.com"
1727
- }
1728
- ]
1729
- if stack_exists?(stack_name_maia)
1730
- cur_version = get_currently_deployed_version(stack_name_maia)
1731
- update_stack(stack_name_maia, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["maia"]['revision'])
1732
- else
1733
- create_stack(stack_name_maia, stack_body, parameters, tags, @cf_role)
1734
- end
1735
-
1736
- wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
1737
- wait_for_stack_ready(stack_name_consumer) unless stack_ready?(stack_name_consumer)
1738
- wait_for_stack_ready(stack_name_ermes) unless stack_ready?(stack_name_ermes)
1739
- wait_for_stack_ready(stack_name_fidaty) unless stack_ready?(stack_name_fidaty)
1740
- wait_for_stack_ready(stack_name_peano) unless stack_ready?(stack_name_peano)
1741
- wait_for_stack_ready(stack_name_rogoreport) unless stack_ready?(stack_name_rogoreport)
1742
- wait_for_stack_ready(stack_name_borat) unless stack_ready?(stack_name_borat)
1743
- wait_for_stack_ready(stack_name_activia) unless stack_ready?(stack_name_activia)
1744
- wait_for_stack_ready(stack_name_maia) unless stack_ready?(stack_name_maia)
1745
- wait_for_stack_ready(stack_name_crash) unless stack_ready?(stack_name_crash) unless !deploy_crash?
1746
- wait_for_stack_ready(stack_name_hutch) unless stack_ready?(stack_name_hutch) unless !deploy_starsky_hutch?
1747
-
1748
-
1749
- update_service_defaults(stack_name_web)
1750
- update_service_defaults(stack_name_consumer)
1751
- update_service_defaults(stack_name_urania)
1752
- update_service_defaults(stack_name_ermes)
1753
- update_service_defaults(stack_name_bburago)
1754
- update_service_defaults(stack_name_hal9000)
1755
- update_service_defaults(stack_name_fidaty)
1756
- update_service_defaults(stack_name_peano)
1757
- update_service_defaults(stack_name_rogoreport)
1758
- update_service_defaults(stack_name_assange)
1759
- update_service_defaults(stack_name_borat)
1760
- update_service_defaults(stack_name_activia)
1761
- update_service_defaults(stack_name_skynet)
1762
- update_service_defaults(stack_name_leftorium)
1763
- update_service_defaults(stack_name_rachele)
1764
- update_service_defaults(stack_name_maia)
1765
- update_service_defaults(stack_name_starsky) unless !deploy_starsky_hutch?
1766
- update_service_defaults(stack_name_hutch) unless !deploy_starsky_hutch?
1767
- update_service_defaults(stack_name_crash) unless !deploy_crash?
1768
-
1769
- activia_hostname = get_route53_hostname("activia")
1770
- assange_hostname = get_route53_hostname("assange")
1771
- bburago_hostname = get_route53_hostname("bburago")
1772
- borat_hostname = get_route53_hostname("borat")
1773
- ermes_hostname = get_route53_hostname("ermes")
1774
- fidaty_hostname = get_route53_hostname("fidaty")
1775
- hal9000_hostname = get_route53_hostname("hal9000")
1776
- prima_hostname = get_route53_hostname("web")
1777
- peano_hostname = get_route53_hostname("peano")
1778
- skynet_hostname = get_route53_hostname("skynet")
1779
- urania_hostname = get_route53_hostname("urania")
1780
- roger_hostname = get_route53_hostname("roger")
1781
- leftorium_hostname = get_route53_hostname("leftorium")
1782
- rachele_hostname = get_route53_hostname("rachele")
1783
- maia_app_hostname = get_route53_hostname("maia-app")
1784
- maia_intermediari_hostname = get_route53_hostname("maia-intermediari")
1785
- crash_hostname = get_route53_hostname("crash") unless !deploy_crash?
1786
- starsky_hostname = get_route53_hostname("starsky") unless !deploy_starsky_hutch?
1787
- hutch_hostname = get_route53_hostname("hutch") unless !deploy_starsky_hutch?
1788
-
1789
- launch_mimo(deploy_id) if deploy_starsky_hutch?
1790
-
1791
- projects_text = "
1792
- > Prima url: https://#{prima_hostname}
1793
- > Backoffice (Borat) url: https://#{borat_hostname}
1794
- > Urania url: http://#{urania_hostname}:81
1795
- > Bburago url: http://#{bburago_hostname}:83
1796
- > Ermes url: http://#{ermes_hostname}:10002
1797
- > Hal9000 url: http://#{hal9000_hostname}:10031
1798
- > Fidaty url: http://#{fidaty_hostname}:10021
1799
- > Peano url: http://#{peano_hostname}:10039
1800
- > Assange url: https://#{assange_hostname}
1801
- > Activia url: http://#{activia_hostname}:10041
1802
- > Skynet url: http://#{skynet_hostname}:8050
1803
- > Roger url: http://#{roger_hostname}:10051
1804
- > Leftorium url: http://#{leftorium_hostname}:10061
1805
- > Rachele url: http://#{rachele_hostname}:10040
1806
- > Maia App url: https://#{maia_app_hostname}
1807
- > Maia Intermediari url: https://#{maia_intermediari_hostname}"
1808
- projects_text.concat "
1809
- > Crash url: https://#{crash_hostname}" if deploy_crash?
1810
- projects_text.concat "
1811
- > Starsky url: https://#{starsky_hostname}
1812
- > Hutch url: https://#{hutch_hostname}" if deploy_starsky_hutch?
1813
- projects_text.concat "
1814
- > RabbitMQ url: http://#{ec2_ip_address(asg_stack_name)}:15672
1815
- > Supervisor url: http://#{ec2_ip_address(asg_stack_name)}:9001
1816
- > Elasticsearch url: http://#{ec2_ip_address(asg_stack_name)}:9200
1817
- > SSH connection: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no githubUsername@#{ec2_ip_address(asg_stack_name)}\n"
1818
- output projects_text.cyan
1819
- output "Deploy effettuato, everything is awesome!\n".green
1820
-
1821
- if @projects['prima']['name'] != 'master' then
1822
- output "Lancio il batch job per la visual regression..."
1823
- launch_bocelli_test(prima_hostname)
1824
- output "Visual regression lanciata con successo!"
1825
-
1826
- output "Lancio i test con Lighthouse..."
1827
- launch_lighthouse_test(prima_hostname, "mobile")
1828
- launch_lighthouse_test(prima_hostname, "desktop")
1829
- output "Test con Lighthouse lanciati con successo..."
1830
- end
1831
-
1832
- qainit_write_output(projects_text, 'Indirizzi scritti su ')
1833
- end
1834
-
1835
- def get_route53_hostname(project)
1836
- case
1837
- when project.include?('web')
1838
- host = "www-#{@dns_record_identifier}.qa.colaster.com"
1839
- when project.include?('urania')
1840
- host = "urania-#{@dns_record_identifier}.qa.colaster.com"
1841
- when project.include?('bburago')
1842
- host = "bburago-#{@dns_record_identifier}.qa.colaster.com"
1843
- when project.include?('hal9000')
1844
- host = "hal9000-#{@dns_record_identifier}.qa.colaster.com"
1845
- when project.include?('fidaty')
1846
- host = "fidaty-#{@dns_record_identifier}.qa.colaster.com"
1847
- when project.include?('peano')
1848
- host = "peano-#{@dns_record_identifier}.qa.colaster.com"
1849
- when project.include?('assange')
1850
- host = "assange-#{@dns_record_identifier}.qa.colaster.com"
1851
- when project.include?('borat')
1852
- host = "backoffice-#{@dns_record_identifier}.qa.colaster.com"
1853
- when project.include?('crash')
1854
- host = "crash-#{@dns_record_identifier}.qa.colaster.com"
1855
- when project.include?('ermes')
1856
- host = "ermes-#{@dns_record_identifier}.qa.colaster.com"
1857
- when project.include?('activia')
1858
- host = "activia-#{@dns_record_identifier}.qa.colaster.com"
1859
- when project.include?('skynet')
1860
- host = "skynet-#{@dns_record_identifier}.qa.colaster.com"
1861
- when project.include?('roger')
1862
- host = "roger-#{@dns_record_identifier}.qa.colaster.com"
1863
- when project.include?('leftorium')
1864
- host = "leftorium-#{@dns_record_identifier}.qa.colaster.com"
1865
- when project.include?('rachele')
1866
- host = "rachele-#{@dns_record_identifier}.qa.colaster.com"
1867
- when project.include?('starsky')
1868
- host = "starsky-#{@dns_record_identifier}.qa.colaster.com"
1869
- when project.include?('hutch')
1870
- host = "hutch-#{@dns_record_identifier}.qa.colaster.com"
1871
- when project.include?('maia-app')
1872
- host = "api-#{@dns_record_identifier}.qa.colaster.com"
1873
- when project.include?('maia-intermediari')
1874
- host = "api-intermediari-#{@dns_record_identifier}.qa.colaster.com"
1875
- end
1876
- host
1877
- end
1878
-
1879
- def ec2_ip_address(asg_stack_name)
1880
- resp = describe_stack_resource(asg_stack_name, 'ECSAutoScalingGroup')
1881
- resp = describe_auto_scaling_groups([resp.stack_resource_detail.physical_resource_id], 1)
1882
- instance_id = resp.auto_scaling_groups[0].instances[0].instance_id
1883
- resp = describe_instances([instance_id])
1884
- resp.reservations[0].instances[0].private_ip_address
1885
- end
1886
-
1887
611
  def get_alb_host(stack_name)
1888
612
  case
1889
613
  when stack_name.include?('web')
@@ -1932,695 +656,6 @@ class Release
1932
656
  resp.load_balancers[0].dns_name
1933
657
  end
1934
658
 
1935
- def update_service_defaults(stack_name)
1936
- case
1937
- when stack_name.include?('web')
1938
- logical_resource_id = 'ECSServiceWebQA'
1939
- when stack_name.include?('consumer')
1940
- logical_resource_id = 'ECSServiceConsumerQa'
1941
- when stack_name.include?('urania')
1942
- logical_resource_id = 'ECSServiceUraniaQA'
1943
- when stack_name.include?('backoffice')
1944
- logical_resource_id = 'ECSServiceBackoffice'
1945
- when stack_name.include?('ermes')
1946
- logical_resource_id = 'ECSServiceErmesQA'
1947
- when stack_name.include?('bburago')
1948
- logical_resource_id = 'ECSServiceBburagoQA'
1949
- when stack_name.include?('hal9000')
1950
- logical_resource_id = 'ECSServiceHal9000QA'
1951
- when stack_name.include?('fidaty')
1952
- logical_resource_id = 'ECSServiceFidatyQA'
1953
- when stack_name.include?('skynet')
1954
- logical_resource_id = 'ECSServiceSkynetQA'
1955
- when stack_name.include?('roger')
1956
- logical_resource_id = 'ECSServiceRogerQA'
1957
- when stack_name.include?('activia')
1958
- logical_resource_id = 'ECSServiceActiviaQA'
1959
- when stack_name.include?('peano')
1960
- logical_resource_id = 'ECSServicePeanoQA'
1961
- when stack_name.include?('rogoreport')
1962
- logical_resource_id = 'ECSServiceRogoreport'
1963
- when stack_name.include?('assange')
1964
- logical_resource_id = 'ECSServiceAssangeQA'
1965
- when stack_name.include?('borat')
1966
- logical_resource_id = 'ECSServiceBorat'
1967
- when stack_name.include?('leftorium')
1968
- logical_resource_id = 'ECSServiceLeftoriumQA'
1969
- when stack_name.include?('rachele')
1970
- logical_resource_id = 'ECSServiceRacheleQA'
1971
- when stack_name.include?('crash')
1972
- logical_resource_id = 'ECSServiceCrashQA'
1973
- when stack_name.include?('starsky')
1974
- logical_resource_id = 'ECSServiceStarskyQA'
1975
- when stack_name.include?('hutch')
1976
- logical_resource_id = 'ECSServiceHutch'
1977
- when stack_name.include?('maia')
1978
- logical_resource_id = 'ECSServiceMaia'
1979
- else
1980
- raise "Service name non gestito per lo stack #{stack_name}"
1981
- end
1982
- resp = describe_stack_resource(stack_name, logical_resource_id)
1983
- update_ecs_service(@ecs_cluster_name, resp.stack_resource_detail.physical_resource_id, {minimum_healthy_percent: 0, maximum_percent: 100})
1984
- end
1985
-
1986
- def launch_lighthouse_test(url, device)
1987
- @cloudflare.post("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {type: 'CNAME', name: "www-#{@dns_record_identifier}", content: url, proxied: true, ttl: 1}) unless get_lighthouse_dns()
1988
-
1989
- @batch.submit_job({
1990
- job_name: "lighthouse-#{device}-#{@dns_record_identifier}",
1991
- job_queue: "tools-production",
1992
- job_definition: describe_stack_resource('batch-job-lighthouse-production', 'JobDefinition').stack_resource_detail.physical_resource_id,
1993
- container_overrides: {
1994
- environment: [
1995
- {
1996
- name: "URL_TO_TEST",
1997
- value: "https://www-#{@dns_record_identifier}.prima.it/?superprima"
1998
- },
1999
- {
2000
- name: "DEVICE",
2001
- value: device
2002
- },
2003
- {
2004
- name: "BRANCH_NAME",
2005
- value: @projects['prima']['name']
2006
- },
2007
- {
2008
- name: "COMMITTER_EMAIL",
2009
- value: @projects['prima']['committer']
2010
- }
2011
- ]
2012
- }
2013
- })
2014
- end
2015
-
2016
- def get_lighthouse_dns()
2017
- dns_records = @cloudflare.get("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {per_page: 100, type: 'CNAME', name: "www-#{@dns_record_identifier}.prima.it"})
2018
- if dns_records.body[:result_info][:count] > 0
2019
- return dns_records.body[:result][0][:id]
2020
- end
2021
- false
2022
- end
2023
-
2024
- def delete_lighthouse_dns()
2025
- dns_id = get_lighthouse_dns()
2026
- @cloudflare.delete("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records/#{dns_id}") if dns_id
2027
- end
2028
-
2029
- def launch_bocelli_test(url)
2030
- @batch.submit_job({
2031
- job_name: "bocelli-test-#{@dns_record_identifier}",
2032
- job_queue: "tools-production",
2033
- job_definition: describe_stack_resource('batch-job-bocelli-production', 'JobDefinition').stack_resource_detail.physical_resource_id,
2034
- container_overrides: {
2035
- environment: [
2036
- {
2037
- name: "BATCH_COMMAND",
2038
- value: "test"
2039
- },
2040
- {
2041
- name: "QA_HOSTNAME",
2042
- value: url
2043
- },
2044
- {
2045
- name: "BRANCH_NAME",
2046
- value: @projects['prima']['name']
2047
- },
2048
- {
2049
- name: "COMMITTER_EMAIL",
2050
- value: @projects['prima']['committer']
2051
- }
2052
- ]
2053
- }
2054
- })
2055
- end
2056
-
2057
- def create_activia_artifact(revision)
2058
- output "Preparo l'artifact activia .zip\n".yellow
2059
-
2060
- git_checkout_version('activia', revision)
2061
-
2062
- Dir.chdir 'projects/activia'
2063
-
2064
- decrypt_secrets()
2065
-
2066
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2067
- exec_step 'prepare-docker-compose --directory activia && cp docker-compose-qainit.yml docker-compose.yml'
2068
-
2069
- execute_command "deploy/build_qa_artifact"
2070
-
2071
- cleanup_containers
2072
-
2073
- artifact_path = Dir.glob("_build/qa/rel/activia/releases/*/activia.tar.gz").first
2074
-
2075
- upload_artifact(artifact_path, "microservices/activia/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2076
-
2077
- Dir.chdir '../../'
2078
- end
2079
-
2080
- def create_assange_artifact(revision)
2081
- output "Preparo l'artifact assange .zip\n".yellow
2082
-
2083
- git_checkout_version('assange', revision)
2084
-
2085
- Dir.chdir 'projects/assange'
2086
-
2087
- decrypt_secrets()
2088
-
2089
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2090
- exec_step 'prepare-docker-compose --directory assange && cp docker-compose-qainit.yml docker-compose.yml'
2091
- exec_step 'deploy/build_qa_artifact'
2092
-
2093
- cleanup_containers
2094
-
2095
- artifact_path = Dir.glob("_build/qa/rel/assange/releases/*/assange.tar.gz").first
2096
- upload_artifact(artifact_path, "microservices/assange/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2097
-
2098
- Dir.chdir '../../'
2099
- end
2100
-
2101
- def create_bburago_artifact(revision)
2102
- output "Preparo l'artifact bburago .zip\n".yellow
2103
-
2104
- git_checkout_version('bburago', revision)
2105
-
2106
- Dir.chdir 'projects/bburago'
2107
-
2108
- decrypt_secrets()
2109
-
2110
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2111
- exec_step 'prepare-docker-compose --directory bburago && cp docker-compose-qainit.yml docker-compose.yml'
2112
- [
2113
- "docker-compose build web",
2114
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint deploy/create_qa_artifact web"
2115
- ].each do |cmd|
2116
- execute_command cmd
2117
- end
2118
-
2119
- cleanup_containers
2120
-
2121
- artifact_path = Dir.glob('_build/qa/rel/bburago/releases/*/bburago.tar.gz').first
2122
- upload_artifact(artifact_path, "microservices/bburago/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2123
-
2124
- Dir.chdir '../../'
2125
- end
2126
-
2127
- def create_borat_artifact(revision)
2128
- output "Preparo l'artifact borat .zip\n".yellow
2129
-
2130
- git_checkout_version('borat', revision)
2131
-
2132
- Dir.chdir 'projects/borat'
2133
-
2134
- decrypt_secrets()
2135
-
2136
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2137
- exec_step 'prepare-docker-compose --directory borat && cp docker-compose-qainit.yml docker-compose.yml'
2138
-
2139
- execute_command "deploy/build_qa_artifact"
2140
-
2141
- cleanup_containers
2142
-
2143
- artifact_path = Dir.glob("_build/qa/rel/borat/releases/*/borat.tar.gz").first
2144
- upload_artifact(artifact_path, "microservices/borat/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2145
-
2146
- Dir.chdir '../../'
2147
- end
2148
-
2149
- def create_crash_artifact(revision, deploy_id)
2150
- output "Preparo l'artifact crash .zip\n".yellow
2151
-
2152
- git_checkout_version('crash', revision)
2153
-
2154
- Dir.chdir 'projects/crash'
2155
-
2156
- crash_qa_host = get_route53_hostname('ecs-task-crash-qa-notneeded')
2157
-
2158
- decrypt_secrets()
2159
-
2160
- `mv docker-compose-ci.yml docker-compose.yml`
2161
- exec_step 'prepare-docker-compose --directory crash && cp docker-compose-qainit.yml docker-compose.yml'
2162
-
2163
- execute_command "deploy/build_qa_artifact #{deploy_id}"
2164
-
2165
- cleanup_containers
2166
-
2167
- artifact_path = Dir.glob('_build/qa/rel/crash/releases/*/crash.tar.gz').first
2168
- upload_artifact(artifact_path, "microservices/crash/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2169
-
2170
- Dir.chdir '../../'
2171
- end
2172
-
2173
- def create_ermes_artifact(revision)
2174
- output "Preparo l'artifact ermes .zip\n".yellow
2175
-
2176
- git_checkout_version('ermes', revision)
2177
-
2178
- Dir.chdir 'projects/ermes'
2179
-
2180
- decrypt_secrets()
2181
-
2182
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2183
- exec_step 'prepare-docker-compose --directory ermes && cp docker-compose-qainit.yml docker-compose.yml'
2184
-
2185
- if File.exists? 'deploy/build_qa_artifact'
2186
- execute_command "deploy/build_qa_artifact"
2187
- else
2188
- [
2189
- "if echo `docker network ls` | grep crash_default; \
2190
- then echo 'crash_default network already existing'; \
2191
- else docker network create crash_default; fi",
2192
- 'docker-compose build web',"docker-compose run --rm -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2193
- '-c' 'mix local.hex --force && mix hex.info && \
2194
- mix deps.get && mix compile && mix deps.compile && \
2195
- mix phx.digest && \
2196
- MIX_ENV=dev mix compile.sms && \
2197
- MIX_ENV=dev mix compile.html && \
2198
- MIX_ENV=dev mix compile.heml && \
2199
- MIX_ENV=dev mix compile.app_notification && \
2200
- rm -rf _build/qa/rel/ && \
2201
- mix release --env=qa'"
2202
- ].each do |cmd|
2203
- execute_command cmd
2204
- end
2205
- end
2206
-
2207
- cleanup_containers
2208
-
2209
- artifact_path = Dir.glob("_build/qa/rel/ermes/releases/*/ermes.tar.gz").first
2210
- upload_artifact(artifact_path, "microservices/ermes/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2211
-
2212
- Dir.chdir '../../'
2213
- end
2214
-
2215
- def create_fidaty_artifact(revision)
2216
- output "Preparo l'artifact fidaty .zip\n".yellow
2217
-
2218
- git_checkout_version('fidaty', revision)
2219
-
2220
- Dir.chdir 'projects/fidaty'
2221
-
2222
- decrypt_secrets()
2223
-
2224
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2225
- exec_step 'prepare-docker-compose --directory fidaty && cp docker-compose-qainit.yml docker-compose.yml'
2226
- [
2227
- "docker-compose build web",
2228
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2229
- '-c' 'mix local.hex --force && mix hex.info && \
2230
- mix deps.get && mix compile && mix deps.compile && \
2231
- mix phx.digest && \
2232
- rm -rf _build/qa/rel/ && \
2233
- mix release --env=qa'"
2234
- ].each do |cmd|
2235
- execute_command cmd
2236
- end
2237
-
2238
- cleanup_containers
2239
-
2240
- artifact_path = Dir.glob("_build/qa/rel/fidaty/releases/*/fidaty.tar.gz").first
2241
- upload_artifact(artifact_path, "microservices/fidaty/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2242
-
2243
- Dir.chdir '../../'
2244
- end
2245
-
2246
- def create_hal9000_artifact(revision)
2247
- output "Preparo l'artifact hal9000 .zip\n".yellow
2248
-
2249
- git_checkout_version('hal9000', revision)
2250
-
2251
- Dir.chdir 'projects/hal9000'
2252
-
2253
- decrypt_secrets()
2254
-
2255
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2256
- exec_step 'prepare-docker-compose --directory hal9000 && cp docker-compose-qainit.yml docker-compose.yml'
2257
- [
2258
- "docker-compose build web",
2259
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2260
- '-c' 'mix local.hex --force && mix hex.info && \
2261
- mix deps.get && mix compile && mix deps.compile && \
2262
- mix phx.digest assets -o priv/static && \
2263
- rm -rf _build/qa/rel/ && \
2264
- mix release --env=qa'"
2265
- ].each do |cmd|
2266
- execute_command cmd
2267
- end
2268
-
2269
- cleanup_containers
2270
-
2271
- artifact_path = Dir.glob("_build/qa/rel/hal9000/releases/*/hal9000.tar.gz").first
2272
- upload_artifact(artifact_path, "microservices/hal9000/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2273
-
2274
- Dir.chdir '../../'
2275
- end
2276
-
2277
- def create_hutch_artifact(revision)
2278
- output "Preparo l'artifact hutch\n".yellow
2279
-
2280
- git_checkout_version('hutch', revision)
2281
-
2282
- Dir.chdir 'projects/hutch'
2283
-
2284
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2285
-
2286
- exec_step 'cp docker-compose-ci.yml docker-compose.yml'
2287
- exec_step 'prepare-docker-compose --directory hutch && cp docker-compose-qainit.yml docker-compose.yml'
2288
-
2289
- execute_command "deploy/build_qa_artifact #{get_route53_hostname("maia-intermediari")}"
2290
-
2291
- cleanup_containers
2292
-
2293
- artifact_path = "./hutch.tar.gz"
2294
- upload_artifact(artifact_path, "microservices/hutch/#{revision}-#{@dns_record_identifier[0..7]}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2295
-
2296
- Dir.chdir '../../'
2297
- end
2298
-
2299
- def create_leftorium_artifact(revision)
2300
- output "Preparo l'artifact leftorium .zip\n".yellow
2301
-
2302
- git_checkout_version('leftorium', revision)
2303
-
2304
- Dir.chdir 'projects/leftorium'
2305
-
2306
- decrypt_secrets()
2307
-
2308
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2309
- exec_step 'prepare-docker-compose --directory leftorium && cp docker-compose-qainit.yml docker-compose.yml'
2310
- [
2311
- "docker-compose build web",
2312
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2313
- '-c' 'mix local.hex --force && mix hex.info && \
2314
- mix deps.get && mix compile && mix deps.compile && \
2315
- rm -rf _build/qa/rel/ && \
2316
- mix release --env=qa'"
2317
- ].each do |cmd|
2318
- execute_command cmd
2319
- end
2320
-
2321
- cleanup_containers
2322
-
2323
- artifact_path = Dir.glob('_build/qa/rel/leftorium/releases/*/leftorium.tar.gz').first
2324
- upload_artifact(artifact_path, "microservices/leftorium/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2325
-
2326
- Dir.chdir '../../'
2327
- end
2328
-
2329
- def create_maia_artifact(revision)
2330
- output "Preparo l'artifact maia .zip\n".yellow
2331
-
2332
- git_checkout_version('maia', revision)
2333
-
2334
- Dir.chdir 'projects/maia'
2335
-
2336
- decrypt_secrets()
2337
-
2338
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2339
- exec_step 'prepare-docker-compose --directory maia && cp docker-compose-qainit.yml docker-compose.yml'
2340
-
2341
- execute_command 'deploy/build_qa_artifact'
2342
-
2343
- cleanup_containers
2344
-
2345
- artifact_path = Dir.glob('_build/qa/rel/maia/releases/*/maia.tar.gz').first
2346
- upload_artifact(artifact_path, "microservices/maia/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2347
-
2348
- Dir.chdir '../../'
2349
- end
2350
-
2351
- def create_peano_artifact(revision)
2352
- output "Preparo l'artifact peano .zip\n".yellow
2353
-
2354
- git_checkout_version('peano', revision)
2355
-
2356
- Dir.chdir 'projects/peano'
2357
-
2358
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2359
-
2360
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2361
- exec_step 'prepare-docker-compose --directory peano && cp docker-compose-qainit.yml docker-compose.yml'
2362
-
2363
- execute_command "deploy/build_qa_artifact"
2364
-
2365
- cleanup_containers
2366
-
2367
- artifact_path = Dir.glob("_build/qa/rel/peano/releases/*/peano.tar.gz").first
2368
- upload_artifact(artifact_path, "microservices/peano/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2369
-
2370
- Dir.chdir '../../'
2371
- end
2372
-
2373
- def create_prima_artifact(revision, branch_name, deploy_id)
2374
- output "Preparo l'artifact prima .zip\n".yellow
2375
-
2376
- git_checkout_version('prima', revision)
2377
-
2378
- Dir.chdir 'projects/prima'
2379
-
2380
- ['vendor'].each do |dir|
2381
- unless File.directory?(dir)
2382
- if File.directory?("../../../prima/#{dir}")
2383
- exec_step "rsync -a ../../../prima/#{dir} ."
2384
- end
2385
- end
2386
- end
2387
-
2388
- exec_step 'mv docker-compose-ci.yml docker-compose.yml'
2389
- exec_step 'prepare-docker-compose --directory prima'
2390
- exec_step 'sed -i "s/\\/home\\/app/\\/root/g" docker-compose.yml'
2391
- `sed -i 's/"@prima-assicurazioni/pyxis-npm": ".*",/"@prima-assicurazioni/pyxis-npm": "#{@pyxis_version}",/' package.json` if deploy_pyxis?
2392
- [
2393
- "bin/qa_build_artifact.sh #{branch_name} #{'update' if @deploy_update}"
2394
- ].each do |cmd|
2395
- execute_command cmd
2396
- end
2397
-
2398
- cleanup_containers
2399
-
2400
- Dir.chdir "../../"
2401
- end
2402
-
2403
- def create_pyxis_artifact(revision, deploy_id)
2404
- if (deploy_pyxis?)
2405
- output "Preparo l'artifact pyxis\n".yellow
2406
-
2407
- git_checkout_version('pyxis-npm', revision)
2408
-
2409
- Dir.chdir 'projects/pyxis-npm'
2410
-
2411
- decrypt_secrets()
2412
-
2413
- exec_step 'mv .fakenpmrc .npmrc'
2414
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2415
- exec_step 'prepare-docker-compose --directory pyxis-npm && cp docker-compose-qainit.yml docker-compose.yml'
2416
- exec_step 'docker-compose build web'
2417
-
2418
- exec_step "docker-compose run -w $PWD -u root -e NPM_TOKEN=$NPM_TOKEN --entrypoint /bin/sh web \
2419
- '-c' 'npm view prima-assicurazioni/pyxis-npm versions --json > versions.json'" # posso recuperare le versioni pubblicate solo da dentro al container, scrivo su un file che leggo subito dopo
2420
- published_versions = `cat versions.json`
2421
- qa_versions = JSON.parse(published_versions).select{ |version| version.include? get_pyxis_version(deploy_id) }
2422
-
2423
- @pyxis_version = "0.#{get_pyxis_version(deploy_id)}.#{qa_versions.size}"
2424
-
2425
- `sed -i '3s/".*/"version": "#{@pyxis_version}",/' package.json`
2426
- [
2427
- "docker-compose run -w $PWD -u root -e NPM_TOKEN=$NPM_TOKEN --entrypoint /bin/sh web \
2428
- '-c' 'yarn install && \
2429
- yarn build:prod && \
2430
- npm publish'"
2431
- ].each do |cmd|
2432
- execute_command cmd
2433
- end
2434
-
2435
- cleanup_containers
2436
- Dir.chdir '../../'
2437
- end
2438
- end
2439
-
2440
- def create_rachele_artifact(revision)
2441
- output "Preparo l'artifact rachele .zip\n".yellow
2442
-
2443
- git_checkout_version('rachele', revision)
2444
-
2445
- Dir.chdir 'projects/rachele'
2446
-
2447
- decrypt_secrets()
2448
-
2449
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2450
- exec_step 'prepare-docker-compose --directory rachele && cp docker-compose-qainit.yml docker-compose.yml'
2451
-
2452
- execute_command "docker-compose build web"
2453
-
2454
- [ "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2455
- '-c' 'mix local.hex --force && mix hex.info && \
2456
- mix deps.get && mix compile && mix deps.compile && \
2457
- rm -rf _build/qa/rel/ && \
2458
- mix release --env=qa'"
2459
- ].each do |cmd|
2460
- execute_command cmd
2461
- end
2462
-
2463
- cleanup_containers
2464
-
2465
- artifact_path = Dir.glob("_build/qa/rel/rachele/releases/*/rachele.tar.gz").first
2466
- upload_artifact(artifact_path, "microservices/rachele/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2467
-
2468
- Dir.chdir '../../'
2469
- end
2470
-
2471
- def create_roger_artifact(revision)
2472
- output "Preparo l'artifact roger .zip\n".yellow
2473
-
2474
- git_checkout_version('roger', revision)
2475
-
2476
- Dir.chdir 'projects/roger'
2477
-
2478
- decrypt_secrets()
2479
-
2480
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2481
- exec_step 'prepare-docker-compose --directory roger && cp docker-compose-qainit.yml docker-compose.yml'
2482
- [
2483
- "docker-compose build web",
2484
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2485
- '-c' 'mix local.hex --force && mix hex.info && \
2486
- mix deps.get && mix compile && mix deps.compile && \
2487
- mix phx.digest && \
2488
- rm -rf _build/qa/rel/ && \
2489
- mix distillery.release --env=qa'"
2490
- ].each do |cmd|
2491
- execute_command cmd
2492
- end
2493
-
2494
- cleanup_containers
2495
-
2496
- artifact_path = Dir.glob("_build/qa/rel/roger/releases/*/roger.tar.gz").first
2497
- upload_artifact(artifact_path, "microservices/roger/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2498
-
2499
- Dir.chdir '../../'
2500
- end
2501
-
2502
- def create_rogoreport_artifact(revision)
2503
- output "Preparo l'artifact rogoreport .zip\n".yellow
2504
-
2505
- git_checkout_version('rogoreport', revision)
2506
-
2507
- Dir.chdir 'projects/rogoreport'
2508
-
2509
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2510
-
2511
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2512
- exec_step 'prepare-docker-compose --directory rogoreport && cp docker-compose-qainit.yml docker-compose.yml'
2513
- [
2514
- "docker-compose build web",
2515
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2516
- '-c' 'mix local.hex --force && mix hex.info && \
2517
- mix deps.get && mix compile && mix deps.compile && \
2518
- rm -rf _build/qa/rel/ && \
2519
- mix release --name=rogoreport --env=qa'"
2520
- ].each do |cmd|
2521
- execute_command cmd
2522
- end
2523
-
2524
- cleanup_containers
2525
-
2526
- artifact_path = Dir.glob("_build/qa/rel/rogoreport/releases/*/rogoreport.tar.gz").first
2527
- upload_artifact(artifact_path, "microservices/rogoreport/rogoreport-#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2528
-
2529
- Dir.chdir '../../'
2530
- end
2531
-
2532
- def create_skynet_artifact(revision)
2533
- output "Preparo l'artifact skynet\n".yellow
2534
-
2535
- git_checkout_version('skynet', revision)
2536
-
2537
- Dir.chdir 'projects/skynet'
2538
-
2539
- version = `git rev-parse HEAD`
2540
-
2541
- artifact_path = "/tmp/skynet-#{revision}-qa.tar.gz"
2542
-
2543
- exec_step "tar cfz #{artifact_path} core config oracles pickles web tests logstash application_log configuration.py wsgi.py requirements.txt requirements_training.txt"
2544
-
2545
- upload_artifact(artifact_path, "microservices/skynet/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2546
-
2547
- Dir.chdir '../../'
2548
- end
2549
-
2550
- def create_starsky_artifact(revision)
2551
- output "Preparo l'artifact starsky\n".yellow
2552
-
2553
- git_checkout_version('starsky', revision)
2554
-
2555
- Dir.chdir 'projects/starsky'
2556
-
2557
- version = `git rev-parse HEAD`
2558
-
2559
- #artifact_path = "/tmp/starsky-#{revision}-qa.tar.gz"
2560
-
2561
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2562
-
2563
- `mv docker-compose-ci.yml docker-compose.yml`
2564
- exec_step 'prepare-docker-compose --directory starsky && cp docker-compose-qainit.yml docker-compose.yml'
2565
- exec_step "sed s/qa_deploy_id/#{get_deploy_id}/ .env.dist.qa"
2566
- exec_step "cp .env.dist.qa .env"
2567
-
2568
- [
2569
- "sed -i 's/USER app/USER root/g' Dockerfile",
2570
- "if echo `docker network ls` | grep peano_default; \
2571
- then echo 'peano_default network already existing'; \
2572
- else docker network create peano_default; fi",
2573
- "docker-compose build web",
2574
- "docker-compose run -w $PWD -e BUILD_ENV=qa -u root --entrypoint /bin/sh web \
2575
- '-c' 'cargo build --release -vv --features=qa \
2576
- && cargo build --bin migrate --release --features=qa \
2577
- && cargo build --bin rabbit_worker --release --features=qa \
2578
- && cp -p target/release/starsky . \
2579
- && cp -p target/release/migrate . \
2580
- && cp -p target/release/rabbit_worker . \
2581
- && tar cfz #{revision}-qa.tar.gz config starsky migrate rabbit_worker .env.dist.*'"
2582
- ].each do |cmd|
2583
- execute_command cmd
2584
- end
2585
-
2586
- artifact_path = "./#{revision}-qa.tar.gz"
2587
-
2588
- upload_artifact(artifact_path, "microservices/starsky/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2589
-
2590
- Dir.chdir '../../'
2591
- end
2592
-
2593
- def create_urania_artifact(revision)
2594
- output "Preparo l'artifact urania .zip\n".yellow
2595
-
2596
- git_checkout_version('urania', revision)
2597
-
2598
- Dir.chdir 'projects/urania'
2599
-
2600
- decrypt_secrets()
2601
-
2602
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2603
- exec_step 'prepare-docker-compose --directory urania && cp docker-compose-qainit.yml docker-compose.yml'
2604
-
2605
- execute_command "docker-compose build web"
2606
-
2607
- [ "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2608
- '-c' 'mix local.hex --force && mix hex.info && \
2609
- mix deps.get && mix compile && mix deps.compile && \
2610
- rm -rf _build/qa/rel/ && \
2611
- mix release --env=qa'"
2612
- ].each do |cmd|
2613
- execute_command cmd
2614
- end
2615
-
2616
- cleanup_containers
2617
-
2618
- artifact_path = Dir.glob("_build/qa/rel/urania/releases/*/urania.tar.gz").first
2619
- upload_artifact(artifact_path, "microservices/urania/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2620
-
2621
- Dir.chdir '../../'
2622
- end
2623
-
2624
659
  def deploy_pyxis?
2625
660
  if defined? @deploy_pyxis
2626
661
  @deploy_pyxis
@@ -2634,146 +669,11 @@ class Release
2634
669
  end
2635
670
  end
2636
671
 
2637
- def deploy_crash?
2638
- true # fino a che non ci mettiamo d'accordo su come gestire il fatto che leftorium ha bisogno di comunicare con crash
2639
- # crash_present = !@projects['crash'].empty? && @projects['crash']['name'] != 'master' && !@projects['crash']['default_branch']
2640
- # leftorium_present = !@projects['leftorium'].empty? && @projects['leftorium']['name'] != 'master' && !@projects['leftorium']['default_branch']
2641
- # crash_present || leftorium_present
2642
- end
2643
-
2644
- def deploy_starsky_hutch?
2645
- true
2646
- #starsky_present = !@projects['starsky'].nil? && !@projects['starsky'].empty? && @projects['starsky']['name'] != 'master' && !@projects['starsky']['default_branch']
2647
- #hutch_present = !@projects['hutch'].nil? && !@projects['hutch'].empty? && @projects['hutch']['name'] != 'master' && !@projects['hutch']['default_branch']
2648
- #starsky_present || hutch_present
2649
- end
2650
-
2651
- def get_pyxis_version(deploy_id)
2652
- (deploy_id.delete '[a-z0]')[0..9]
2653
- end
2654
-
2655
- def cleanup_containers
2656
- `docker-compose kill && docker-compose down -v --remove-orphans`
2657
- `docker rm $(docker ps -q -f status=exited)`
2658
- end
2659
-
2660
- def git_checkout_version(project, revision)
2661
- Dir.chdir "projects/#{project}"
2662
- exec_step "git checkout -- . && git checkout #{revision}"
2663
- Dir.chdir "../../"
2664
- end
2665
-
2666
- def create_asg_stack(stack_name, tags = [])
2667
- stack_body = IO.read('cloudformation/stacks/asg/ecs-asg-allinone.yml')
2668
- parameters = [
2669
- {
2670
- parameter_key: "Environment",
2671
- parameter_value: "qa"
2672
- },
2673
- {
2674
- parameter_key: "InstanceType",
2675
- parameter_value: "t3.large"
2676
- },
2677
- {
2678
- parameter_key: "ECSClusterName",
2679
- parameter_value: @ecs_cluster_name
2680
- },
2681
- {
2682
- parameter_key: "AMIID",
2683
- parameter_value: @ami_id
2684
- }
2685
- ]
2686
- create_stack(stack_name, stack_body, parameters, tags, @cf_role)
2687
- end
2688
-
2689
- def create_cluster_stack(stack_name, tags = [])
2690
- stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
2691
- create_stack(stack_name, stack_body, [], tags)
2692
- end
2693
-
2694
672
  def update_cluster_stack(stack_name, tags = [])
2695
673
  stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
2696
674
  update_stack(stack_name, stack_body, [], tags)
2697
675
  end
2698
676
 
2699
- def create_alb_stack(stack_name, role, hash, environment = 'qa')
2700
- stack_body = IO.read('cloudformation/stacks/elb/alb-public-qa.yml')
2701
- parameters = [
2702
- {
2703
- parameter_key: "Environment",
2704
- parameter_value: environment
2705
- },
2706
- {
2707
- parameter_key: "Role",
2708
- parameter_value: role
2709
- },
2710
- {
2711
- parameter_key: "EnvHash",
2712
- parameter_value: hash
2713
- }
2714
- ]
2715
- create_stack(stack_name, stack_body, parameters, [], @cf_role)
2716
- end
2717
-
2718
- def import_redis_crash(qa_ip_address)
2719
- output "Importo chiavi di Redis da staging\n".yellow
2720
-
2721
- prefixes = ['CODICI', 'fun_with_flags']
2722
- redis_qa = Redis.new(:url => "redis://#{qa_ip_address}:6379/10")
2723
- redis_staging = Redis.new(:url => 'redis://staging.cache-1.prima.it:6379/10')
2724
-
2725
- prefixes.each do |prefix|
2726
- redis_staging.keys("#{prefix}*").each do |key|
2727
- next unless redis_qa.keys(key).empty?
2728
- output "Importo #{key} dal Redis di staging\n".yellow
2729
- dump_staging = redis_staging.dump key
2730
- redis_qa.restore key, 0, dump_staging
2731
- end
2732
- end
2733
- end
2734
-
2735
- def import_dbs(ip_address)
2736
- overrides = {
2737
- container_overrides: [
2738
- {
2739
- name: 'dbrestore',
2740
- environment: [
2741
- {
2742
- name: 'EC2_IP_ADDRESS',
2743
- value: ip_address
2744
- }
2745
- ]
2746
- }
2747
- ]
2748
- }
2749
- resp = run_ecs_task(@ecs_cluster_name, @import_db_task, overrides, 1)
2750
- return resp
2751
- end
2752
-
2753
- def wait_for_db_import(task)
2754
- output "Attendo che i DB vengano importati...\n".yellow
2755
- stopped_at = nil
2756
- sleep 15 # altrimenti non trova il task appena avviato...
2757
- while stopped_at.nil?
2758
- if task.tasks[0].nil?
2759
- pp @ecs_cluster_name
2760
- pp task
2761
- stop_if true, "Task di import DB lanciato, ma risposta vuota!".red
2762
- end
2763
- task = describe_ecs_tasks(task.tasks[0].cluster_arn, [task.tasks[0].task_arn])
2764
- stopped_at = task.tasks[0].stopped_at unless task.tasks[0].nil?
2765
- sleep_seconds = 10
2766
- seconds_elapsed = 0
2767
- while true && stopped_at.nil?
2768
- break if seconds_elapsed >= sleep_seconds
2769
- print '.'.yellow; STDOUT.flush
2770
- sleep 1
2771
- seconds_elapsed += 1
2772
- end
2773
- end
2774
- print "\n"
2775
- end
2776
-
2777
677
  def choose_branch_to_deploy(project_name, select_master = false)
2778
678
  Dir.chdir "projects/#{project_name}"
2779
679
  output "Recupero la lista dei branch del progetto #{project_name}..."
@@ -2861,74 +761,6 @@ class Release
2861
761
  (Time.now.to_i.to_s[-4..-1].to_i + Random.rand(40000)).to_s
2862
762
  end
2863
763
 
2864
- def launch_mimo(env_hash)
2865
- resp = describe_stack_resource('batch-job-mimo', 'JobDefinition')
2866
-
2867
- @batch.submit_job({
2868
- job_name: "mimo-#{@dns_record_identifier}", # required
2869
- job_queue: "tools-production", # required
2870
- job_definition: resp.stack_resource_detail.physical_resource_id, # required
2871
- container_overrides: {
2872
- environment: [
2873
- {
2874
- name: 'ENV_HASH',
2875
- value: env_hash
2876
- },
2877
- {
2878
- name: 'APP_ENV',
2879
- value: 'qa'
2880
- },
2881
- {
2882
- name: 'CYPRESS_BASE_URL',
2883
- value: "https://hutch-#{env_hash}.qa.colaster.com"
2884
- },
2885
- {
2886
- name: 'CYPRESS_PEANO_BASE_URL',
2887
- value: "http://peano-#{env_hash}.qa.colaster.com:10039/quotation"
2888
- },
2889
- {
2890
- name: 'QA_NAME',
2891
- value: @git_branch
2892
- }
2893
- ]
2894
- }
2895
- })
2896
-
2897
- output "Mimo lanciato con successo!\n".green
2898
- end
2899
-
2900
- def get_currently_deployed_version(stack_name)
2901
- parameters = get_stack_parameters(stack_name)
2902
- currently_deployed_version = nil
2903
- parameters.each do |parameter|
2904
- if parameter.parameter_key == "ReleaseVersion"
2905
- currently_deployed_version = parameter.parameter_value
2906
- end
2907
- end
2908
- currently_deployed_version
2909
- end
2910
-
2911
- def decrypt_secrets()
2912
- docker_image = "prima/biscuit_populate_configs"
2913
- [
2914
- "docker pull #{docker_image}",
2915
- "docker run -t --rm -v $HOME/.aws:/root/.aws -w $PWD --volumes-from #{get_host_container_name} #{docker_image}"
2916
- ].each do |cmd|
2917
- execute_command cmd
2918
- end
2919
- end
2920
-
2921
- def get_host_container_name()
2922
- if @host_container_name
2923
- @host_container_name
2924
- else
2925
- hostname = `cat /etc/hostname`.gsub("\n", '')
2926
- execute_command "docker ps | grep #{hostname} | awk '{print $NF}'"
2927
- @host_container_name = `docker ps | grep #{hostname} | awk '{print $NF}'`.gsub("\n", '')
2928
- # @host_container_name = `docker ps | grep #{hostname} | sed -r "s/.+ ([^\s].+)$/\1/p"`
2929
- end
2930
- end
2931
-
2932
764
  def select_branches(project_names = nil)
2933
765
  output "Deploy feature menu"
2934
766
  if project_names.nil?
@@ -2942,14 +774,6 @@ class Release
2942
774
  end
2943
775
  end
2944
776
  end
2945
-
2946
- def get_ami_id(stack_name)
2947
- get_stack_parameters(stack_name).each do |param|
2948
- if param.parameter_key == "AMIID"
2949
- return param.parameter_value
2950
- end
2951
- end
2952
- end
2953
777
  end
2954
778
 
2955
779
  def help_content