prima-twig 0.62.13 → 0.62.100

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-P358L3UYOC6F: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,1261 +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.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
- parameter_key: "NginxHttpHost",
1597
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1598
- },
1599
- {
1600
- parameter_key: "AssangeHostname",
1601
- parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
1602
- },
1603
- {
1604
- parameter_key: "BackofficeHostname",
1605
- parameter_value: "backoffice-#{@dns_record_identifier}.qa.colaster.com"
1606
- },
1607
- {
1608
- parameter_key: "WebHostname",
1609
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1610
- },
1611
- {
1612
- parameter_key: "FePrimaDomain",
1613
- parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
1614
- },
1615
- {
1616
- parameter_key: "HostnamePattern",
1617
- parameter_value: "consumer-#{@dns_record_identifier}.qa.colaster.com"
1618
- }
1619
- ]
1620
- if stack_exists?(stack_name_consumer)
1621
- cur_version = get_currently_deployed_version(stack_name_consumer)
1622
- update_stack(stack_name_consumer, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
1623
- else
1624
- create_stack(stack_name_consumer, stack_body, parameters, tags, @cf_role)
1625
- end
1626
-
1627
- stack_name_roger = "ecs-task-roger-qa-#{deploy_id}"
1628
- git_checkout_version('roger', @projects["roger"]['revision'])
1629
- stack_body = File.read('projects/roger/deploy/task.yml')
1630
- parameters = [
1631
- {
1632
- parameter_key: "Environment",
1633
- parameter_value: "qa"
1634
- },
1635
- {
1636
- parameter_key: "ReleaseVersion",
1637
- parameter_value: @projects["roger"]['revision']
1638
- },
1639
- {
1640
- parameter_key: "TaskDesiredCount",
1641
- parameter_value: "1"
1642
- },
1643
- {
1644
- parameter_key: "ECSClusterName",
1645
- parameter_value: @ecs_cluster_name
1646
- },
1647
- {
1648
- parameter_key: "HostnamePattern",
1649
- parameter_value: "roger-#{@dns_record_identifier}.qa.colaster.com"
1650
- },
1651
- {
1652
- parameter_key: "HostnamePatternPriority",
1653
- parameter_value: hostname_pattern_priority
1654
- }
1655
- ]
1656
- if stack_exists?(stack_name_roger)
1657
- cur_version = get_currently_deployed_version(stack_name_roger)
1658
- update_stack(stack_name_roger, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["roger"]['revision'])
1659
- else
1660
- create_stack(stack_name_roger, stack_body, parameters, tags, @cf_role)
1661
- end
1662
-
1663
-
1664
- if deploy_starsky_hutch?
1665
- wait_for_stack_ready(stack_name_starsky) unless stack_ready?(stack_name_starsky) unless !deploy_starsky_hutch?
1666
-
1667
- stack_name_hutch = "ecs-task-hutch-qa-#{deploy_id}"
1668
- git_checkout_version('hutch', @projects["hutch"]['revision'])
1669
- stack_body = File.read('projects/hutch/deploy/task.yml')
1670
- parameters = [
1671
- {
1672
- parameter_key: "Environment",
1673
- parameter_value: "qa"
1674
- },
1675
- {
1676
- parameter_key: "ReleaseVersion",
1677
- parameter_value: "#{@projects["hutch"]['revision']}-#{@dns_record_identifier[0..7]}"
1678
- },
1679
- {
1680
- parameter_key: "ALBShortName",
1681
- parameter_value: "hutch-qa-#{deploy_id}"[0..27]
1682
- },
1683
- {
1684
- parameter_key: "ECSClusterName",
1685
- parameter_value: @ecs_cluster_name
1686
- },
1687
- {
1688
- parameter_key: "EnvHash",
1689
- parameter_value: deploy_id
1690
- },
1691
- {
1692
- parameter_key: "HostnamePattern",
1693
- parameter_value: "hutch-#{@dns_record_identifier}.qa.colaster.com"
1694
- },
1695
- {
1696
- parameter_key: "HostnamePatternPriority",
1697
- parameter_value: (hostname_pattern_priority.to_i + 254).to_s
1698
- },
1699
- {
1700
- parameter_key: "ApiUrl",
1701
- parameter_value: "https://#{get_route53_hostname('maia-intermediari')}"
1702
- }
1703
- ]
1704
- if stack_exists?(stack_name_hutch)
1705
- cur_version = get_currently_deployed_version(stack_name_hutch)
1706
- update_stack(stack_name_hutch, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["hutch"]['revision'])
1707
- else
1708
- create_stack(stack_name_hutch, stack_body, parameters, tags, @cf_role)
1709
- end
1710
- end
1711
-
1712
- stack_name_maia = "ecs-task-maia-qa-#{deploy_id}"
1713
- git_checkout_version('maia', @projects["maia"]['revision'])
1714
- stack_body = File.read('projects/maia/deploy/task.yml')
1715
- parameters = [
1716
- {
1717
- parameter_key: "Environment",
1718
- parameter_value: "qa"
1719
- },
1720
- {
1721
- parameter_key: "ReleaseVersion",
1722
- parameter_value: "#{@projects["maia"]['revision']}"
1723
- },
1724
- {
1725
- parameter_key: "ALBShortName",
1726
- parameter_value: "maia-qa-#{deploy_id}"[0..15]
1727
- },
1728
- {
1729
- parameter_key: "ECSClusterName",
1730
- parameter_value: @ecs_cluster_name
1731
- },
1732
- {
1733
- parameter_key: "EnvHash",
1734
- parameter_value: deploy_id
1735
- },
1736
- {
1737
- parameter_key: "HostnamePatternPublic",
1738
- parameter_value: "api*-#{@dns_record_identifier}.qa.colaster.com"
1739
- },
1740
- {
1741
- parameter_key: "HostnamePatternPriority",
1742
- parameter_value: (hostname_pattern_priority.to_i + 128).to_s
1743
- },
1744
- {
1745
- parameter_key: "ProxyHostnameIntermediari",
1746
- parameter_value: "api-intermediari-#{@dns_record_identifier}.qa.colaster.com"
1747
- },
1748
- {
1749
- parameter_key: "ProxyHostnameApp",
1750
- parameter_value: "api-#{@dns_record_identifier}.qa.colaster.com"
1751
- }
1752
- ]
1753
- if stack_exists?(stack_name_maia)
1754
- cur_version = get_currently_deployed_version(stack_name_maia)
1755
- update_stack(stack_name_maia, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["maia"]['revision'])
1756
- else
1757
- create_stack(stack_name_maia, stack_body, parameters, tags, @cf_role)
1758
- end
1759
-
1760
- wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
1761
- wait_for_stack_ready(stack_name_consumer) unless stack_ready?(stack_name_consumer)
1762
- wait_for_stack_ready(stack_name_ermes) unless stack_ready?(stack_name_ermes)
1763
- wait_for_stack_ready(stack_name_fidaty) unless stack_ready?(stack_name_fidaty)
1764
- wait_for_stack_ready(stack_name_peano) unless stack_ready?(stack_name_peano)
1765
- wait_for_stack_ready(stack_name_rogoreport) unless stack_ready?(stack_name_rogoreport)
1766
- wait_for_stack_ready(stack_name_borat) unless stack_ready?(stack_name_borat)
1767
- wait_for_stack_ready(stack_name_activia) unless stack_ready?(stack_name_activia)
1768
- wait_for_stack_ready(stack_name_maia) unless stack_ready?(stack_name_maia)
1769
- wait_for_stack_ready(stack_name_crash) unless stack_ready?(stack_name_crash) unless !deploy_crash?
1770
- wait_for_stack_ready(stack_name_hutch) unless stack_ready?(stack_name_hutch) unless !deploy_starsky_hutch?
1771
-
1772
-
1773
- update_service_defaults(stack_name_web)
1774
- update_service_defaults(stack_name_consumer)
1775
- update_service_defaults(stack_name_urania)
1776
- update_service_defaults(stack_name_ermes)
1777
- update_service_defaults(stack_name_bburago)
1778
- update_service_defaults(stack_name_hal9000)
1779
- update_service_defaults(stack_name_fidaty)
1780
- update_service_defaults(stack_name_peano)
1781
- update_service_defaults(stack_name_rogoreport)
1782
- update_service_defaults(stack_name_assange)
1783
- update_service_defaults(stack_name_borat)
1784
- update_service_defaults(stack_name_activia)
1785
- update_service_defaults(stack_name_skynet)
1786
- update_service_defaults(stack_name_leftorium)
1787
- update_service_defaults(stack_name_rachele)
1788
- update_service_defaults(stack_name_maia)
1789
- update_service_defaults(stack_name_starsky) unless !deploy_starsky_hutch?
1790
- update_service_defaults(stack_name_hutch) unless !deploy_starsky_hutch?
1791
- update_service_defaults(stack_name_crash) unless !deploy_crash?
1792
-
1793
- activia_hostname = get_route53_hostname("activia")
1794
- assange_hostname = get_route53_hostname("assange")
1795
- bburago_hostname = get_route53_hostname("bburago")
1796
- borat_hostname = get_route53_hostname("borat")
1797
- ermes_hostname = get_route53_hostname("ermes")
1798
- fidaty_hostname = get_route53_hostname("fidaty")
1799
- hal9000_hostname = get_route53_hostname("hal9000")
1800
- prima_hostname = get_route53_hostname("web")
1801
- peano_hostname = get_route53_hostname("peano")
1802
- skynet_hostname = get_route53_hostname("skynet")
1803
- urania_hostname = get_route53_hostname("urania")
1804
- roger_hostname = get_route53_hostname("roger")
1805
- leftorium_hostname = get_route53_hostname("leftorium")
1806
- rachele_hostname = get_route53_hostname("rachele")
1807
- maia_app_hostname = get_route53_hostname("maia-app")
1808
- maia_intermediari_hostname = get_route53_hostname("maia-intermediari")
1809
- crash_hostname = get_route53_hostname("crash") unless !deploy_crash?
1810
- starsky_hostname = get_route53_hostname("starsky") unless !deploy_starsky_hutch?
1811
- hutch_hostname = get_route53_hostname("hutch") unless !deploy_starsky_hutch?
1812
-
1813
-
1814
- # launch_marley ec2_ip_address(asg_stack_name), prima_hostname, borat_hostname
1815
-
1816
- projects_text = "
1817
- > Prima url: https://#{prima_hostname}
1818
- > Backoffice (Borat) url: https://#{borat_hostname}
1819
- > Urania url: http://#{urania_hostname}:81
1820
- > Bburago url: http://#{bburago_hostname}:83
1821
- > Ermes url: http://#{ermes_hostname}:10002
1822
- > Hal9000 url: http://#{hal9000_hostname}:10031
1823
- > Fidaty url: http://#{fidaty_hostname}:10021
1824
- > Peano url: http://#{peano_hostname}:10039
1825
- > Assange url: https://#{assange_hostname}
1826
- > Activia url: http://#{activia_hostname}:10041
1827
- > Skynet url: http://#{skynet_hostname}:8050
1828
- > Roger url: http://#{roger_hostname}:10051
1829
- > Leftorium url: http://#{leftorium_hostname}:10061
1830
- > Rachele url: http://#{rachele_hostname}:10040
1831
- > Maia App url: https://#{maia_app_hostname}
1832
- > Maia Intermediari url: https://#{maia_intermediari_hostname}"
1833
- projects_text.concat "
1834
- > Crash url: https://#{crash_hostname}" if deploy_crash?
1835
- projects_text.concat "
1836
- > Starsky url: https://#{starsky_hostname}
1837
- > Hutch url: https://#{hutch_hostname}" if deploy_starsky_hutch?
1838
- projects_text.concat "
1839
- > RabbitMQ url: http://#{ec2_ip_address(asg_stack_name)}:15672
1840
- > Supervisor url: http://#{ec2_ip_address(asg_stack_name)}:9001
1841
- > Elasticsearch url: http://#{ec2_ip_address(asg_stack_name)}:9200
1842
- > SSH connection: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no githubUsername@#{ec2_ip_address(asg_stack_name)}\n"
1843
- output projects_text.cyan
1844
- output "Deploy effettuato, everything is awesome!\n".green
1845
-
1846
- if @projects['prima']['name'] != 'master' then
1847
- output "Lancio il batch job per la visual regression..."
1848
- launch_bocelli_test(prima_hostname)
1849
- output "Visual regression lanciata con successo!"
1850
-
1851
- output "Lancio i test con Lighthouse..."
1852
- launch_lighthouse_test(prima_hostname, "mobile")
1853
- launch_lighthouse_test(prima_hostname, "desktop")
1854
- output "Test con Lighthouse lanciati con successo..."
1855
- end
1856
-
1857
- qainit_write_output(projects_text, 'Indirizzi scritti su ')
1858
- end
1859
-
1860
- def get_route53_hostname(project)
1861
- case
1862
- when project.include?('web')
1863
- host = "www-#{@dns_record_identifier}.qa.colaster.com"
1864
- when project.include?('urania')
1865
- host = "urania-#{@dns_record_identifier}.qa.colaster.com"
1866
- when project.include?('bburago')
1867
- host = "bburago-#{@dns_record_identifier}.qa.colaster.com"
1868
- when project.include?('hal9000')
1869
- host = "hal9000-#{@dns_record_identifier}.qa.colaster.com"
1870
- when project.include?('fidaty')
1871
- host = "fidaty-#{@dns_record_identifier}.qa.colaster.com"
1872
- when project.include?('peano')
1873
- host = "peano-#{@dns_record_identifier}.qa.colaster.com"
1874
- when project.include?('assange')
1875
- host = "assange-#{@dns_record_identifier}.qa.colaster.com"
1876
- when project.include?('borat')
1877
- host = "backoffice-#{@dns_record_identifier}.qa.colaster.com"
1878
- when project.include?('crash')
1879
- host = "crash-#{@dns_record_identifier}.qa.colaster.com"
1880
- when project.include?('ermes')
1881
- host = "ermes-#{@dns_record_identifier}.qa.colaster.com"
1882
- when project.include?('activia')
1883
- host = "activia-#{@dns_record_identifier}.qa.colaster.com"
1884
- when project.include?('skynet')
1885
- host = "skynet-#{@dns_record_identifier}.qa.colaster.com"
1886
- when project.include?('roger')
1887
- host = "roger-#{@dns_record_identifier}.qa.colaster.com"
1888
- when project.include?('leftorium')
1889
- host = "leftorium-#{@dns_record_identifier}.qa.colaster.com"
1890
- when project.include?('rachele')
1891
- host = "rachele-#{@dns_record_identifier}.qa.colaster.com"
1892
- when project.include?('starsky')
1893
- host = "starsky-#{@dns_record_identifier}.qa.colaster.com"
1894
- when project.include?('hutch')
1895
- host = "hutch-#{@dns_record_identifier}.qa.colaster.com"
1896
- when project.include?('maia-app')
1897
- host = "api-#{@dns_record_identifier}.qa.colaster.com"
1898
- when project.include?('maia-intermediari')
1899
- host = "api-intermediari-#{@dns_record_identifier}.qa.colaster.com"
1900
- end
1901
- host
1902
- end
1903
-
1904
- def ec2_ip_address(asg_stack_name)
1905
- resp = describe_stack_resource(asg_stack_name, 'ECSAutoScalingGroup')
1906
- resp = describe_auto_scaling_groups([resp.stack_resource_detail.physical_resource_id], 1)
1907
- instance_id = resp.auto_scaling_groups[0].instances[0].instance_id
1908
- resp = describe_instances([instance_id])
1909
- resp.reservations[0].instances[0].private_ip_address
1910
- end
1911
-
1912
611
  def get_alb_host(stack_name)
1913
612
  case
1914
613
  when stack_name.include?('web')
@@ -1957,735 +656,6 @@ class Release
1957
656
  resp.load_balancers[0].dns_name
1958
657
  end
1959
658
 
1960
- def update_service_defaults(stack_name)
1961
- case
1962
- when stack_name.include?('web')
1963
- logical_resource_id = 'ECSServiceWebQA'
1964
- when stack_name.include?('consumer')
1965
- logical_resource_id = 'ECSServiceConsumerQa'
1966
- when stack_name.include?('urania')
1967
- logical_resource_id = 'ECSServiceUraniaQA'
1968
- when stack_name.include?('backoffice')
1969
- logical_resource_id = 'ECSServiceBackoffice'
1970
- when stack_name.include?('ermes')
1971
- logical_resource_id = 'ECSServiceErmesQA'
1972
- when stack_name.include?('bburago')
1973
- logical_resource_id = 'ECSServiceBburagoQA'
1974
- when stack_name.include?('hal9000')
1975
- logical_resource_id = 'ECSServiceHal9000QA'
1976
- when stack_name.include?('fidaty')
1977
- logical_resource_id = 'ECSServiceFidatyQA'
1978
- when stack_name.include?('skynet')
1979
- logical_resource_id = 'ECSServiceSkynetQA'
1980
- when stack_name.include?('roger')
1981
- logical_resource_id = 'ECSServiceRogerQA'
1982
- when stack_name.include?('activia')
1983
- logical_resource_id = 'ECSServiceActiviaQA'
1984
- when stack_name.include?('peano')
1985
- logical_resource_id = 'ECSServicePeanoQA'
1986
- when stack_name.include?('rogoreport')
1987
- logical_resource_id = 'ECSServiceRogoreport'
1988
- when stack_name.include?('assange')
1989
- logical_resource_id = 'ECSServiceAssangeQA'
1990
- when stack_name.include?('borat')
1991
- logical_resource_id = 'ECSServiceBorat'
1992
- when stack_name.include?('leftorium')
1993
- logical_resource_id = 'ECSServiceLeftoriumQA'
1994
- when stack_name.include?('rachele')
1995
- logical_resource_id = 'ECSServiceRacheleQA'
1996
- when stack_name.include?('crash')
1997
- logical_resource_id = 'ECSServiceCrashQA'
1998
- when stack_name.include?('starsky')
1999
- logical_resource_id = 'ECSServiceStarskyQA'
2000
- when stack_name.include?('hutch')
2001
- logical_resource_id = 'ECSServiceHutch'
2002
- when stack_name.include?('maia')
2003
- logical_resource_id = 'ECSServiceMaia'
2004
- else
2005
- raise "Service name non gestito per lo stack #{stack_name}"
2006
- end
2007
- resp = describe_stack_resource(stack_name, logical_resource_id)
2008
- update_ecs_service(@ecs_cluster_name, resp.stack_resource_detail.physical_resource_id, {minimum_healthy_percent: 0, maximum_percent: 100})
2009
- end
2010
-
2011
- def launch_lighthouse_test(url, device)
2012
- @cloudflare.post("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {type: 'CNAME', name: "www-#{@dns_record_identifier}", content: url, proxied: true, ttl: 1}) unless get_lighthouse_dns()
2013
-
2014
- @batch.submit_job({
2015
- job_name: "lighthouse-#{device}-#{@dns_record_identifier}",
2016
- job_queue: "tools-production",
2017
- job_definition: describe_stack_resource('batch-job-lighthouse-production', 'JobDefinition').stack_resource_detail.physical_resource_id,
2018
- container_overrides: {
2019
- environment: [
2020
- {
2021
- name: "URL_TO_TEST",
2022
- value: "https://www-#{@dns_record_identifier}.prima.it/?superprima"
2023
- },
2024
- {
2025
- name: "DEVICE",
2026
- value: device
2027
- },
2028
- {
2029
- name: "BRANCH_NAME",
2030
- value: @projects['prima']['name']
2031
- },
2032
- {
2033
- name: "COMMITTER_EMAIL",
2034
- value: @projects['prima']['committer']
2035
- }
2036
- ]
2037
- }
2038
- })
2039
- end
2040
-
2041
- def get_lighthouse_dns()
2042
- dns_records = @cloudflare.get("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {per_page: 100, type: 'CNAME', name: "www-#{@dns_record_identifier}.prima.it"})
2043
- if dns_records.body[:result_info][:count] > 0
2044
- return dns_records.body[:result][0][:id]
2045
- end
2046
- false
2047
- end
2048
-
2049
- def delete_lighthouse_dns()
2050
- dns_id = get_lighthouse_dns()
2051
- @cloudflare.delete("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records/#{dns_id}") if dns_id
2052
- end
2053
-
2054
- def launch_bocelli_test(url)
2055
- @batch.submit_job({
2056
- job_name: "bocelli-test-#{@dns_record_identifier}",
2057
- job_queue: "tools-production",
2058
- job_definition: describe_stack_resource('batch-job-bocelli-production', 'JobDefinition').stack_resource_detail.physical_resource_id,
2059
- container_overrides: {
2060
- environment: [
2061
- {
2062
- name: "BATCH_COMMAND",
2063
- value: "test"
2064
- },
2065
- {
2066
- name: "QA_HOSTNAME",
2067
- value: url
2068
- },
2069
- {
2070
- name: "BRANCH_NAME",
2071
- value: @projects['prima']['name']
2072
- },
2073
- {
2074
- name: "COMMITTER_EMAIL",
2075
- value: @projects['prima']['committer']
2076
- }
2077
- ]
2078
- }
2079
- })
2080
- end
2081
-
2082
- def create_activia_artifact(revision)
2083
- output "Preparo l'artifact activia .zip\n".yellow
2084
-
2085
- git_checkout_version('activia', revision)
2086
-
2087
- Dir.chdir 'projects/activia'
2088
-
2089
- decrypt_secrets()
2090
-
2091
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2092
- exec_step 'prepare-docker-compose --directory activia && cp docker-compose-qainit.yml docker-compose.yml'
2093
-
2094
- if File.exists? 'deploy/build_qa_artifact'
2095
- execute_command "deploy/build_qa_artifact"
2096
- else
2097
- [
2098
- "docker-compose build web",
2099
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2100
- '-c' 'mix local.hex --force && mix hex.info && \
2101
- mix deps.get && mix compile && mix deps.compile && \
2102
- cd assets && \
2103
- rm -rf node_modules && \
2104
- yarn --cache-folder ~/.cache/yarn && \
2105
- sysconfcpus -n 2 ./node_modules/.bin/webpack --mode production && \
2106
- cd .. && \
2107
- mix phx.digest && \
2108
- rm -rf _build/qa/rel/ && \
2109
- mix release --env=qa'"
2110
- ].each do |cmd|
2111
- execute_command cmd
2112
- end
2113
- end
2114
-
2115
- cleanup_containers
2116
-
2117
- artifact_path = Dir.glob("_build/qa/rel/activia/releases/*/activia.tar.gz").first
2118
-
2119
- upload_artifact(artifact_path, "microservices/activia/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2120
-
2121
- Dir.chdir '../../'
2122
- end
2123
-
2124
- def create_assange_artifact(revision)
2125
- output "Preparo l'artifact assange .zip\n".yellow
2126
-
2127
- git_checkout_version('assange', revision)
2128
-
2129
- Dir.chdir 'projects/assange'
2130
-
2131
- decrypt_secrets()
2132
-
2133
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2134
- exec_step 'prepare-docker-compose --directory assange && cp docker-compose-qainit.yml docker-compose.yml'
2135
- exec_step 'deploy/build_qa_artifact'
2136
-
2137
- cleanup_containers
2138
-
2139
- artifact_path = Dir.glob("_build/qa/rel/assange/releases/*/assange.tar.gz").first
2140
- upload_artifact(artifact_path, "microservices/assange/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2141
-
2142
- Dir.chdir '../../'
2143
- end
2144
-
2145
- def create_bburago_artifact(revision)
2146
- output "Preparo l'artifact bburago .zip\n".yellow
2147
-
2148
- git_checkout_version('bburago', revision)
2149
-
2150
- Dir.chdir 'projects/bburago'
2151
-
2152
- decrypt_secrets()
2153
-
2154
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2155
- exec_step 'prepare-docker-compose --directory bburago && cp docker-compose-qainit.yml docker-compose.yml'
2156
- [
2157
- "docker-compose build web",
2158
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint deploy/create_qa_artifact web"
2159
- ].each do |cmd|
2160
- execute_command cmd
2161
- end
2162
-
2163
- cleanup_containers
2164
-
2165
- artifact_path = Dir.glob('_build/qa/rel/bburago/releases/*/bburago.tar.gz').first
2166
- upload_artifact(artifact_path, "microservices/bburago/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2167
-
2168
- Dir.chdir '../../'
2169
- end
2170
-
2171
- def create_borat_artifact(revision)
2172
- output "Preparo l'artifact borat .zip\n".yellow
2173
-
2174
- git_checkout_version('borat', revision)
2175
-
2176
- Dir.chdir 'projects/borat'
2177
-
2178
- decrypt_secrets()
2179
-
2180
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2181
- exec_step 'prepare-docker-compose --directory borat && cp docker-compose-qainit.yml docker-compose.yml'
2182
-
2183
- if File.exists? 'deploy/build_qa_artifact'
2184
- execute_command "deploy/build_qa_artifact"
2185
- else
2186
- [
2187
- "docker network create borat_network || true",
2188
- "docker-compose build web",
2189
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2190
- '-c' 'mix local.hex --force && mix hex.info && \
2191
- mix deps.get && \
2192
- cd assets && \
2193
- yarn --cache-folder ~/.cache/yarn && \
2194
- sysconfcpus -n 2 ./node_modules/.bin/webpack -p --config config/webpack.config.prod.js && \
2195
- cd ../ && \
2196
- mix phx.digest && \
2197
- mix compile && mix deps.compile && \
2198
- rm -rf _build/qa/rel/ && \
2199
- mix distillery.release --env=qa'"
2200
- ].each do |cmd|
2201
- execute_command cmd
2202
- end
2203
- end
2204
-
2205
- cleanup_containers
2206
-
2207
- artifact_path = Dir.glob("_build/qa/rel/borat/releases/*/borat.tar.gz").first
2208
- upload_artifact(artifact_path, "microservices/borat/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2209
-
2210
- Dir.chdir '../../'
2211
- end
2212
-
2213
- def create_crash_artifact(revision, deploy_id)
2214
- output "Preparo l'artifact crash .zip\n".yellow
2215
-
2216
- git_checkout_version('crash', revision)
2217
-
2218
- Dir.chdir 'projects/crash'
2219
-
2220
- crash_qa_host = get_route53_hostname('ecs-task-crash-qa-notneeded')
2221
-
2222
- decrypt_secrets()
2223
-
2224
- `mv docker-compose-ci.yml docker-compose.yml`
2225
- exec_step 'prepare-docker-compose --directory crash && cp docker-compose-qainit.yml docker-compose.yml'
2226
-
2227
- execute_command "deploy/build_qa_artifact #{deploy_id}"
2228
-
2229
- cleanup_containers
2230
-
2231
- artifact_path = Dir.glob('_build/qa/rel/crash/releases/*/crash.tar.gz').first
2232
- upload_artifact(artifact_path, "microservices/crash/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2233
-
2234
- Dir.chdir '../../'
2235
- end
2236
-
2237
- def create_ermes_artifact(revision)
2238
- output "Preparo l'artifact ermes .zip\n".yellow
2239
-
2240
- git_checkout_version('ermes', revision)
2241
-
2242
- Dir.chdir 'projects/ermes'
2243
-
2244
- decrypt_secrets()
2245
-
2246
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2247
- exec_step 'prepare-docker-compose --directory ermes && cp docker-compose-qainit.yml docker-compose.yml'
2248
-
2249
- [
2250
- "if echo `docker network ls` | grep crash_default; \
2251
- then echo 'crash_default network already existing'; \
2252
- else docker network create crash_default; fi",
2253
- 'docker-compose build web'
2254
- ].each do |cmd|
2255
- execute_command cmd
2256
- end
2257
-
2258
- [ "docker-compose run --rm -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2259
- '-c' 'mix local.hex --force && mix hex.info && \
2260
- mix deps.get && mix compile && mix deps.compile && \
2261
- mix phx.digest && \
2262
- MIX_ENV=dev mix compile.sms && \
2263
- MIX_ENV=dev mix compile.html && \
2264
- MIX_ENV=dev mix compile.heml && \
2265
- MIX_ENV=dev mix compile.app_notification && \
2266
- rm -rf _build/qa/rel/ && \
2267
- mix release --env=qa'"
2268
- ].each do |cmd|
2269
- execute_command cmd
2270
- end
2271
-
2272
- cleanup_containers
2273
-
2274
- artifact_path = Dir.glob("_build/qa/rel/ermes/releases/*/ermes.tar.gz").first
2275
- upload_artifact(artifact_path, "microservices/ermes/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2276
-
2277
- Dir.chdir '../../'
2278
- end
2279
-
2280
- def create_fidaty_artifact(revision)
2281
- output "Preparo l'artifact fidaty .zip\n".yellow
2282
-
2283
- git_checkout_version('fidaty', revision)
2284
-
2285
- Dir.chdir 'projects/fidaty'
2286
-
2287
- decrypt_secrets()
2288
-
2289
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2290
- exec_step 'prepare-docker-compose --directory fidaty && cp docker-compose-qainit.yml docker-compose.yml'
2291
- [
2292
- "docker-compose build web",
2293
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2294
- '-c' 'mix local.hex --force && mix hex.info && \
2295
- mix deps.get && mix compile && mix deps.compile && \
2296
- mix phx.digest && \
2297
- rm -rf _build/qa/rel/ && \
2298
- mix release --env=qa'"
2299
- ].each do |cmd|
2300
- execute_command cmd
2301
- end
2302
-
2303
- cleanup_containers
2304
-
2305
- artifact_path = Dir.glob("_build/qa/rel/fidaty/releases/*/fidaty.tar.gz").first
2306
- upload_artifact(artifact_path, "microservices/fidaty/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2307
-
2308
- Dir.chdir '../../'
2309
- end
2310
-
2311
- def create_hal9000_artifact(revision)
2312
- output "Preparo l'artifact hal9000 .zip\n".yellow
2313
-
2314
- git_checkout_version('hal9000', revision)
2315
-
2316
- Dir.chdir 'projects/hal9000'
2317
-
2318
- decrypt_secrets()
2319
-
2320
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2321
- exec_step 'prepare-docker-compose --directory hal9000 && cp docker-compose-qainit.yml docker-compose.yml'
2322
- [
2323
- "docker-compose build web",
2324
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2325
- '-c' 'mix local.hex --force && mix hex.info && \
2326
- mix deps.get && mix compile && mix deps.compile && \
2327
- mix phx.digest assets -o priv/static && \
2328
- rm -rf _build/qa/rel/ && \
2329
- mix release --env=qa'"
2330
- ].each do |cmd|
2331
- execute_command cmd
2332
- end
2333
-
2334
- cleanup_containers
2335
-
2336
- artifact_path = Dir.glob("_build/qa/rel/hal9000/releases/*/hal9000.tar.gz").first
2337
- upload_artifact(artifact_path, "microservices/hal9000/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2338
-
2339
- Dir.chdir '../../'
2340
- end
2341
-
2342
- def create_hutch_artifact(revision)
2343
- output "Preparo l'artifact hutch\n".yellow
2344
-
2345
- git_checkout_version('hutch', revision)
2346
-
2347
- Dir.chdir 'projects/hutch'
2348
-
2349
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2350
-
2351
- exec_step 'cp docker-compose-ci.yml docker-compose.yml'
2352
- exec_step 'prepare-docker-compose --directory hutch && cp docker-compose-qainit.yml docker-compose.yml'
2353
-
2354
- execute_command "deploy/build_qa_artifact #{get_route53_hostname("maia-intermediari")}"
2355
-
2356
- cleanup_containers
2357
-
2358
- artifact_path = "./hutch.tar.gz"
2359
- upload_artifact(artifact_path, "microservices/hutch/#{revision}-#{@dns_record_identifier[0..7]}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2360
-
2361
- Dir.chdir '../../'
2362
- end
2363
-
2364
- def create_leftorium_artifact(revision)
2365
- output "Preparo l'artifact leftorium .zip\n".yellow
2366
-
2367
- git_checkout_version('leftorium', revision)
2368
-
2369
- Dir.chdir 'projects/leftorium'
2370
-
2371
- decrypt_secrets()
2372
-
2373
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2374
- exec_step 'prepare-docker-compose --directory leftorium && cp docker-compose-qainit.yml docker-compose.yml'
2375
- [
2376
- "docker-compose build web",
2377
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2378
- '-c' 'mix local.hex --force && mix hex.info && \
2379
- mix deps.get && mix compile && mix deps.compile && \
2380
- rm -rf _build/qa/rel/ && \
2381
- mix release --env=qa'"
2382
- ].each do |cmd|
2383
- execute_command cmd
2384
- end
2385
-
2386
- cleanup_containers
2387
-
2388
- artifact_path = Dir.glob('_build/qa/rel/leftorium/releases/*/leftorium.tar.gz').first
2389
- upload_artifact(artifact_path, "microservices/leftorium/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2390
-
2391
- Dir.chdir '../../'
2392
- end
2393
-
2394
- def create_maia_artifact(revision)
2395
- output "Preparo l'artifact maia .zip\n".yellow
2396
-
2397
- git_checkout_version('maia', revision)
2398
-
2399
- Dir.chdir 'projects/maia'
2400
-
2401
- decrypt_secrets()
2402
-
2403
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2404
- exec_step 'prepare-docker-compose --directory maia && cp docker-compose-qainit.yml docker-compose.yml'
2405
-
2406
- execute_command 'deploy/build_qa_artifact'
2407
-
2408
- cleanup_containers
2409
-
2410
- artifact_path = Dir.glob('_build/qa/rel/maia/releases/*/maia.tar.gz').first
2411
- upload_artifact(artifact_path, "microservices/maia/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2412
-
2413
- Dir.chdir '../../'
2414
- end
2415
-
2416
- def create_peano_artifact(revision)
2417
- output "Preparo l'artifact peano .zip\n".yellow
2418
-
2419
- git_checkout_version('peano', revision)
2420
-
2421
- Dir.chdir 'projects/peano'
2422
-
2423
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2424
-
2425
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2426
- exec_step 'prepare-docker-compose --directory peano && cp docker-compose-qainit.yml docker-compose.yml'
2427
-
2428
- execute_command "deploy/build_qa_artifact"
2429
-
2430
- cleanup_containers
2431
-
2432
- artifact_path = Dir.glob("_build/qa/rel/peano/releases/*/peano.tar.gz").first
2433
- upload_artifact(artifact_path, "microservices/peano/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2434
-
2435
- Dir.chdir '../../'
2436
- end
2437
-
2438
- def create_prima_artifact(revision, branch_name, deploy_id)
2439
- output "Preparo l'artifact prima .zip\n".yellow
2440
-
2441
- git_checkout_version('prima', revision)
2442
-
2443
- Dir.chdir 'projects/prima'
2444
-
2445
- ['vendor'].each do |dir|
2446
- unless File.directory?(dir)
2447
- if File.directory?("../../../prima/#{dir}")
2448
- exec_step "rsync -a ../../../prima/#{dir} ."
2449
- end
2450
- end
2451
- end
2452
-
2453
- exec_step 'mv docker-compose-ci.yml docker-compose.yml'
2454
- exec_step 'prepare-docker-compose --directory prima'
2455
- exec_step 'sed -i "s/\\/home\\/app/\\/root/g" docker-compose.yml'
2456
- `sed -i 's/"@prima-assicurazioni/pyxis-npm": ".*",/"@prima-assicurazioni/pyxis-npm": "#{@pyxis_version}",/' package.json` if deploy_pyxis?
2457
- [
2458
- "bin/qa_build_artifact.sh #{branch_name} #{'update' if @deploy_update}"
2459
- ].each do |cmd|
2460
- execute_command cmd
2461
- end
2462
-
2463
- cleanup_containers
2464
-
2465
- Dir.chdir "../../"
2466
- end
2467
-
2468
- def create_pyxis_artifact(revision, deploy_id)
2469
- if (deploy_pyxis?)
2470
- output "Preparo l'artifact pyxis\n".yellow
2471
-
2472
- git_checkout_version('pyxis-npm', revision)
2473
-
2474
- Dir.chdir 'projects/pyxis-npm'
2475
-
2476
- decrypt_secrets()
2477
-
2478
- exec_step 'mv .fakenpmrc .npmrc'
2479
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2480
- exec_step 'prepare-docker-compose --directory pyxis-npm && cp docker-compose-qainit.yml docker-compose.yml'
2481
- exec_step 'docker-compose build web'
2482
-
2483
- exec_step "docker-compose run -w $PWD -u root -e NPM_TOKEN=$NPM_TOKEN --entrypoint /bin/sh web \
2484
- '-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
2485
- published_versions = `cat versions.json`
2486
- qa_versions = JSON.parse(published_versions).select{ |version| version.include? get_pyxis_version(deploy_id) }
2487
-
2488
- @pyxis_version = "0.#{get_pyxis_version(deploy_id)}.#{qa_versions.size}"
2489
-
2490
- `sed -i '3s/".*/"version": "#{@pyxis_version}",/' package.json`
2491
- [
2492
- "docker-compose run -w $PWD -u root -e NPM_TOKEN=$NPM_TOKEN --entrypoint /bin/sh web \
2493
- '-c' 'yarn install && \
2494
- yarn build:prod && \
2495
- npm publish'"
2496
- ].each do |cmd|
2497
- execute_command cmd
2498
- end
2499
-
2500
- cleanup_containers
2501
- Dir.chdir '../../'
2502
- end
2503
- end
2504
-
2505
- def create_rachele_artifact(revision)
2506
- output "Preparo l'artifact rachele .zip\n".yellow
2507
-
2508
- git_checkout_version('rachele', revision)
2509
-
2510
- Dir.chdir 'projects/rachele'
2511
-
2512
- decrypt_secrets()
2513
-
2514
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2515
- exec_step 'prepare-docker-compose --directory rachele && cp docker-compose-qainit.yml docker-compose.yml'
2516
-
2517
- execute_command "docker-compose build web"
2518
-
2519
- [ "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2520
- '-c' 'mix local.hex --force && mix hex.info && \
2521
- mix deps.get && mix compile && mix deps.compile && \
2522
- rm -rf _build/qa/rel/ && \
2523
- mix release --env=qa'"
2524
- ].each do |cmd|
2525
- execute_command cmd
2526
- end
2527
-
2528
- cleanup_containers
2529
-
2530
- artifact_path = Dir.glob("_build/qa/rel/rachele/releases/*/rachele.tar.gz").first
2531
- upload_artifact(artifact_path, "microservices/rachele/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2532
-
2533
- Dir.chdir '../../'
2534
- end
2535
-
2536
- def create_roger_artifact(revision)
2537
- output "Preparo l'artifact roger .zip\n".yellow
2538
-
2539
- git_checkout_version('roger', revision)
2540
-
2541
- Dir.chdir 'projects/roger'
2542
-
2543
- decrypt_secrets()
2544
-
2545
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2546
- exec_step 'prepare-docker-compose --directory roger && cp docker-compose-qainit.yml docker-compose.yml'
2547
- [
2548
- "docker-compose build web",
2549
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2550
- '-c' 'mix local.hex --force && mix hex.info && \
2551
- mix deps.get && mix compile && mix deps.compile && \
2552
- mix phx.digest && \
2553
- rm -rf _build/qa/rel/ && \
2554
- mix distillery.release --env=qa'"
2555
- ].each do |cmd|
2556
- execute_command cmd
2557
- end
2558
-
2559
- cleanup_containers
2560
-
2561
- artifact_path = Dir.glob("_build/qa/rel/roger/releases/*/roger.tar.gz").first
2562
- upload_artifact(artifact_path, "microservices/roger/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2563
-
2564
- Dir.chdir '../../'
2565
- end
2566
-
2567
- def create_rogoreport_artifact(revision)
2568
- output "Preparo l'artifact rogoreport .zip\n".yellow
2569
-
2570
- git_checkout_version('rogoreport', revision)
2571
-
2572
- Dir.chdir 'projects/rogoreport'
2573
-
2574
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2575
-
2576
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2577
- exec_step 'prepare-docker-compose --directory rogoreport && cp docker-compose-qainit.yml docker-compose.yml'
2578
- [
2579
- "docker-compose build web",
2580
- "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2581
- '-c' 'mix local.hex --force && mix hex.info && \
2582
- mix deps.get && mix compile && mix deps.compile && \
2583
- rm -rf _build/qa/rel/ && \
2584
- mix release --name=rogoreport --env=qa'"
2585
- ].each do |cmd|
2586
- execute_command cmd
2587
- end
2588
-
2589
- cleanup_containers
2590
-
2591
- artifact_path = Dir.glob("_build/qa/rel/rogoreport/releases/*/rogoreport.tar.gz").first
2592
- upload_artifact(artifact_path, "microservices/rogoreport/rogoreport-#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2593
-
2594
- Dir.chdir '../../'
2595
- end
2596
-
2597
- def create_skynet_artifact(revision)
2598
- output "Preparo l'artifact skynet\n".yellow
2599
-
2600
- git_checkout_version('skynet', revision)
2601
-
2602
- Dir.chdir 'projects/skynet'
2603
-
2604
- version = `git rev-parse HEAD`
2605
-
2606
- artifact_path = "/tmp/skynet-#{revision}-qa.tar.gz"
2607
-
2608
- exec_step "tar cfz #{artifact_path} core config oracles pickles web tests logstash application_log configuration.py wsgi.py requirements.txt requirements_training.txt"
2609
-
2610
- upload_artifact(artifact_path, "microservices/skynet/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2611
-
2612
- Dir.chdir '../../'
2613
- end
2614
-
2615
- def create_starsky_artifact(revision)
2616
- output "Preparo l'artifact starsky\n".yellow
2617
-
2618
- git_checkout_version('starsky', revision)
2619
-
2620
- Dir.chdir 'projects/starsky'
2621
-
2622
- version = `git rev-parse HEAD`
2623
-
2624
- #artifact_path = "/tmp/starsky-#{revision}-qa.tar.gz"
2625
-
2626
- decrypt_secrets() unless File.exist?('config/secrets.yml')
2627
-
2628
- `mv docker-compose-ci.yml docker-compose.yml`
2629
- exec_step 'prepare-docker-compose --directory starsky && cp docker-compose-qainit.yml docker-compose.yml'
2630
- exec_step "sed s/qa_deploy_id/#{get_deploy_id}/ .env.dist.qa"
2631
- exec_step "cp .env.dist.qa .env"
2632
-
2633
- [
2634
- "sed -i 's/USER app/USER root/g' Dockerfile",
2635
- "if echo `docker network ls` | grep peano_default; \
2636
- then echo 'peano_default network already existing'; \
2637
- else docker network create peano_default; fi",
2638
- "docker-compose build web",
2639
- "docker-compose run -w $PWD -e BUILD_ENV=qa -u root --entrypoint /bin/sh web \
2640
- '-c' 'cargo build --release -vv --features=qa \
2641
- && cargo build --bin migrate --release --features=qa \
2642
- && cargo build --bin rabbit_worker --release --features=qa \
2643
- && cp -p target/release/starsky . \
2644
- && cp -p target/release/migrate . \
2645
- && cp -p target/release/rabbit_worker . \
2646
- && tar cfz #{revision}-qa.tar.gz config starsky migrate rabbit_worker .env.dist.*'"
2647
- ].each do |cmd|
2648
- execute_command cmd
2649
- end
2650
-
2651
- artifact_path = "./#{revision}-qa.tar.gz"
2652
-
2653
- upload_artifact(artifact_path, "microservices/starsky/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2654
-
2655
- Dir.chdir '../../'
2656
- end
2657
-
2658
- def create_urania_artifact(revision)
2659
- output "Preparo l'artifact urania .zip\n".yellow
2660
-
2661
- git_checkout_version('urania', revision)
2662
-
2663
- Dir.chdir 'projects/urania'
2664
-
2665
- decrypt_secrets()
2666
-
2667
- exec_step 'cp docker-compose.yml docker-compose-ci.yml'
2668
- exec_step 'prepare-docker-compose --directory urania && cp docker-compose-qainit.yml docker-compose.yml'
2669
-
2670
- execute_command "docker-compose build web"
2671
-
2672
- [ "docker-compose run -w $PWD -u root -e MIX_ENV=qa --entrypoint /bin/sh web \
2673
- '-c' 'mix local.hex --force && mix hex.info && \
2674
- mix deps.get && mix compile && mix deps.compile && \
2675
- rm -rf _build/qa/rel/ && \
2676
- mix release --env=qa'"
2677
- ].each do |cmd|
2678
- execute_command cmd
2679
- end
2680
-
2681
- cleanup_containers
2682
-
2683
- artifact_path = Dir.glob("_build/qa/rel/urania/releases/*/urania.tar.gz").first
2684
- upload_artifact(artifact_path, "microservices/urania/#{revision}-qa.tar.gz", "#{@s3_bucket}-encrypted")
2685
-
2686
- Dir.chdir '../../'
2687
- end
2688
-
2689
659
  def deploy_pyxis?
2690
660
  if defined? @deploy_pyxis
2691
661
  @deploy_pyxis
@@ -2699,147 +669,12 @@ class Release
2699
669
  end
2700
670
  end
2701
671
 
2702
- def deploy_crash?
2703
- true # fino a che non ci mettiamo d'accordo su come gestire il fatto che leftorium ha bisogno di comunicare con crash
2704
- # crash_present = !@projects['crash'].empty? && @projects['crash']['name'] != 'master' && !@projects['crash']['default_branch']
2705
- # leftorium_present = !@projects['leftorium'].empty? && @projects['leftorium']['name'] != 'master' && !@projects['leftorium']['default_branch']
2706
- # crash_present || leftorium_present
2707
- end
2708
-
2709
- def deploy_starsky_hutch?
2710
- starsky_present = !@projects['starsky'].nil? && !@projects['starsky'].empty? && @projects['starsky']['name'] != 'master' && !@projects['starsky']['default_branch']
2711
- hutch_present = !@projects['hutch'].nil? && !@projects['hutch'].empty? && @projects['hutch']['name'] != 'master' && !@projects['hutch']['default_branch']
2712
- starsky_present || hutch_present
2713
- end
2714
-
2715
- def get_pyxis_version(deploy_id)
2716
- (deploy_id.delete '[a-z0]')[0..9]
2717
- end
2718
-
2719
- def cleanup_containers
2720
- `docker-compose kill && docker-compose down -v --remove-orphans`
2721
- `docker rm $(docker ps -q -f status=exited)`
2722
- end
2723
-
2724
- def git_checkout_version(project, revision)
2725
- Dir.chdir "projects/#{project}"
2726
- exec_step "git checkout -- . && git checkout #{revision}"
2727
- Dir.chdir "../../"
2728
- end
2729
-
2730
- def create_asg_stack(stack_name, tags = [])
2731
- stack_body = IO.read('cloudformation/stacks/asg/ecs-asg-allinone.yml')
2732
- parameters = [
2733
- {
2734
- parameter_key: "Environment",
2735
- parameter_value: "qa"
2736
- },
2737
- {
2738
- parameter_key: "InstanceType",
2739
- parameter_value: "t3.large"
2740
- },
2741
- {
2742
- parameter_key: "ECSClusterName",
2743
- parameter_value: @ecs_cluster_name
2744
- },
2745
- {
2746
- parameter_key: "AMIID",
2747
- parameter_value: @ami_id
2748
- }
2749
- ]
2750
- create_stack(stack_name, stack_body, parameters, tags, @cf_role)
2751
- end
2752
-
2753
- def create_cluster_stack(stack_name, tags = [])
2754
- stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
2755
- create_stack(stack_name, stack_body, [], tags)
2756
- end
2757
-
2758
672
  def update_cluster_stack(stack_name, tags = [])
2759
673
  stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
2760
674
  update_stack(stack_name, stack_body, [], tags)
2761
675
  end
2762
676
 
2763
- def create_alb_stack(stack_name, role, hash, environment = 'qa')
2764
- stack_body = IO.read('cloudformation/stacks/elb/alb-public-qa.yml')
2765
- parameters = [
2766
- {
2767
- parameter_key: "Environment",
2768
- parameter_value: environment
2769
- },
2770
- {
2771
- parameter_key: "Role",
2772
- parameter_value: role
2773
- },
2774
- {
2775
- parameter_key: "EnvHash",
2776
- parameter_value: hash
2777
- }
2778
- ]
2779
- create_stack(stack_name, stack_body, parameters, [], @cf_role)
2780
- end
2781
-
2782
- def import_redis_crash(qa_ip_address)
2783
- output "Importo chiavi di Redis da staging\n".yellow
2784
-
2785
- prefixes = ['CODICI', 'fun_with_flags']
2786
- redis_qa = Redis.new(:url => "redis://#{qa_ip_address}:6379/10")
2787
- redis_staging = Redis.new(:url => 'redis://staging.cache-1.prima.it:6379/10')
2788
-
2789
- prefixes.each do |prefix|
2790
- redis_staging.keys("#{prefix}*").each do |key|
2791
- next unless redis_qa.keys(key).empty?
2792
- output "Importo #{key} dal Redis di staging\n".yellow
2793
- dump_staging = redis_staging.dump key
2794
- redis_qa.restore key, 0, dump_staging
2795
- end
2796
- end
2797
- end
2798
-
2799
- def import_dbs(ip_address)
2800
- overrides = {
2801
- container_overrides: [
2802
- {
2803
- name: 'dbrestore',
2804
- environment: [
2805
- {
2806
- name: 'EC2_IP_ADDRESS',
2807
- value: ip_address
2808
- }
2809
- ]
2810
- }
2811
- ]
2812
- }
2813
- resp = run_ecs_task(@ecs_cluster_name, @import_db_task, overrides, 1)
2814
- return resp
2815
- end
2816
-
2817
- def wait_for_db_import(task)
2818
- output "Attendo che i DB vengano importati...\n".yellow
2819
- stopped_at = nil
2820
- sleep 15 # altrimenti non trova il task appena avviato...
2821
- while stopped_at.nil?
2822
- if task.tasks[0].nil?
2823
- pp @ecs_cluster_name
2824
- pp task
2825
- stop_if true, "Task di import DB lanciato, ma risposta vuota!".red
2826
- end
2827
- task = describe_ecs_tasks(task.tasks[0].cluster_arn, [task.tasks[0].task_arn])
2828
- stopped_at = task.tasks[0].stopped_at unless task.tasks[0].nil?
2829
- sleep_seconds = 10
2830
- seconds_elapsed = 0
2831
- while true && stopped_at.nil?
2832
- break if seconds_elapsed >= sleep_seconds
2833
- print '.'.yellow; STDOUT.flush
2834
- sleep 1
2835
- seconds_elapsed += 1
2836
- end
2837
- end
2838
- print "\n"
2839
- end
2840
-
2841
677
  def choose_branch_to_deploy(project_name, select_master = false)
2842
- return {'name' => 'master', 'revision' => '399653d555b8864', 'committer' => 'crash@prima.it', 'default_branch' => true} if project_name == 'crash' && select_master
2843
678
  Dir.chdir "projects/#{project_name}"
2844
679
  output "Recupero la lista dei branch del progetto #{project_name}..."
2845
680
  `git remote prune origin`
@@ -2926,70 +761,6 @@ class Release
2926
761
  (Time.now.to_i.to_s[-4..-1].to_i + Random.rand(40000)).to_s
2927
762
  end
2928
763
 
2929
- def launch_marley(ip_address, prima_hostname, borat_hostname)
2930
- resp = describe_stack_resource('batch-job-marley', 'JobDefinition')
2931
-
2932
- @batch.submit_job({
2933
- job_name: "marley-#{@dns_record_identifier}", # required
2934
- job_queue: "tools-production", # required
2935
- job_definition: resp.stack_resource_detail.physical_resource_id, # required
2936
- container_overrides: {
2937
- environment: [
2938
- {
2939
- name: 'PRIMA_URL',
2940
- value: "https://#{prima_hostname}/?superprima"
2941
- },
2942
- {
2943
- name: 'PRIMA_IP',
2944
- value: ip_address
2945
- },
2946
- {
2947
- name: 'PROJECTS_JSON',
2948
- value: @projects.to_json
2949
- },
2950
- {
2951
- name: 'BACKOFFICE_URL',
2952
- value: "https://#{borat_hostname}"
2953
- }
2954
- ]
2955
- }
2956
- })
2957
-
2958
- output "Marley lanciato con successo!\n".green
2959
- end
2960
-
2961
- def get_currently_deployed_version(stack_name)
2962
- parameters = get_stack_parameters(stack_name)
2963
- currently_deployed_version = nil
2964
- parameters.each do |parameter|
2965
- if parameter.parameter_key == "ReleaseVersion"
2966
- currently_deployed_version = parameter.parameter_value
2967
- end
2968
- end
2969
- currently_deployed_version
2970
- end
2971
-
2972
- def decrypt_secrets()
2973
- docker_image = "prima/biscuit_populate_configs"
2974
- [
2975
- "docker pull #{docker_image}",
2976
- "docker run -t --rm -v $HOME/.aws:/root/.aws -w $PWD --volumes-from #{get_host_container_name} #{docker_image}"
2977
- ].each do |cmd|
2978
- execute_command cmd
2979
- end
2980
- end
2981
-
2982
- def get_host_container_name()
2983
- if @host_container_name
2984
- @host_container_name
2985
- else
2986
- hostname = `cat /etc/hostname`.gsub("\n", '')
2987
- execute_command "docker ps | grep #{hostname} | awk '{print $NF}'"
2988
- @host_container_name = `docker ps | grep #{hostname} | awk '{print $NF}'`.gsub("\n", '')
2989
- # @host_container_name = `docker ps | grep #{hostname} | sed -r "s/.+ ([^\s].+)$/\1/p"`
2990
- end
2991
- end
2992
-
2993
764
  def select_branches(project_names = nil)
2994
765
  output "Deploy feature menu"
2995
766
  if project_names.nil?
@@ -3003,14 +774,6 @@ class Release
3003
774
  end
3004
775
  end
3005
776
  end
3006
-
3007
- def get_ami_id(stack_name)
3008
- get_stack_parameters(stack_name).each do |param|
3009
- if param.parameter_key == "AMIID"
3010
- return param.parameter_value
3011
- end
3012
- end
3013
- end
3014
777
  end
3015
778
 
3016
779
  def help_content