prima-twig 0.63.24 → 0.63.25

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