prima-twig 0.57.80 → 0.58.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- checksums.yaml +4 -4
- data/bin/twig-feature +211 -2
- metadata +1 -1
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: ff28b1b9486c4cbde341d5bc91f554d24b9e72cf228190e51936c26d36204631
|
4
|
+
data.tar.gz: e4f36a3dced5f22aefcc98d9209ae1cb9f27a8a99399f0b5b8c85fb7e3220aaa
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: cf51127d025c07a5f29161cd42e9d4a1c36df62061459d7ba63a846a69fb48b50219a2ed36fd944c88f37088372ebf79646f8fb0a997b82c946656d71f770b89
|
7
|
+
data.tar.gz: 9b707ff30d54b6c0535165cb69190460192e7e6a3a4df99830aa41e0242c6f7bda0ed0feba19bd0e3617195e314b9f8309ec11000b1df78017d1b2dd4561b1a7
|
data/bin/twig-feature
CHANGED
@@ -74,6 +74,8 @@ class Release
|
|
74
74
|
qainit_deploy_update!
|
75
75
|
elsif 'read' == args[1]
|
76
76
|
qainit_read_config! args[2]
|
77
|
+
elsif 'minimal' == args[1]
|
78
|
+
qainit_minimal_deploy! args[2]
|
77
79
|
else
|
78
80
|
if args[1]
|
79
81
|
select_branches(args[1..-1])
|
@@ -98,6 +100,8 @@ class Release
|
|
98
100
|
deploy_update!
|
99
101
|
elsif 'lock' == args[1]
|
100
102
|
deploy_lock!
|
103
|
+
elsif 'minimal' == args[1]
|
104
|
+
qainit_drone_minimal_deploy!
|
101
105
|
else
|
102
106
|
if args[1]
|
103
107
|
select_branches(args[1])
|
@@ -490,6 +494,35 @@ class Release
|
|
490
494
|
git checkout master`
|
491
495
|
end
|
492
496
|
|
497
|
+
def qainit_minimal_deploy!(project)
|
498
|
+
abort('L\'unico progetto permesso è prima') unless ['prima'].include? project
|
499
|
+
project_definition = choose_branch_to_deploy(project)
|
500
|
+
|
501
|
+
`git checkout master && git pull && git remote prune origin`
|
502
|
+
|
503
|
+
default_name = project_definition[:name]
|
504
|
+
output "Inserisci la feature a cui si riferisce il QA: [#{default_name}]".cyan
|
505
|
+
feature_number = String(STDIN.gets.chomp)
|
506
|
+
feature_number = default_name if feature_number.empty?
|
507
|
+
|
508
|
+
if `git branch -l | grep #{feature_number}`.size > 0
|
509
|
+
`git checkout #{feature_number} && git pull`
|
510
|
+
else
|
511
|
+
`git checkout -b #{feature_number}`
|
512
|
+
end
|
513
|
+
|
514
|
+
# così recupero le informazioni sul branch, poi vado a scrivere il file branch_names con una sola riga
|
515
|
+
branch = {'project' => { 'name' => project_definition[:name], 'revision' => project_definition[:revision], 'default_branch' => project_definition[:default_branch]}}
|
516
|
+
|
517
|
+
File.open('branch_names', 'w') { |file| file.write(JSON.generate(branch)) }
|
518
|
+
|
519
|
+
`git add projects && \
|
520
|
+
git add branch_names && \
|
521
|
+
git commit -m 'minimal_#{feature_number}' && \
|
522
|
+
git push --set-upstream origin #{feature_number} && \
|
523
|
+
git checkout master`
|
524
|
+
end
|
525
|
+
|
493
526
|
def qainit_deploy_update!
|
494
527
|
`git checkout master && git pull`
|
495
528
|
# cancelliamo tutti i branch che non sono più sul repo remoto
|
@@ -528,7 +561,11 @@ class Release
|
|
528
561
|
|
529
562
|
File.open('branch_names', 'w') { |file| file.write(JSON.generate(@projects)) }
|
530
563
|
|
531
|
-
`git
|
564
|
+
if `git log -1` =~ /minimal_/
|
565
|
+
`git commit -am 'minimal_update'`
|
566
|
+
else
|
567
|
+
`git commit -am 'update'`
|
568
|
+
end
|
532
569
|
`git push && git checkout master`
|
533
570
|
end
|
534
571
|
|
@@ -636,6 +673,9 @@ class Release
|
|
636
673
|
when 'shutdown'
|
637
674
|
output 'Shutting down'.green
|
638
675
|
qainit_drone_shutdown!
|
676
|
+
when 'minimal'
|
677
|
+
output 'Starting minimal deploy'.green
|
678
|
+
qainit_drone_minimal_deploy!
|
639
679
|
else
|
640
680
|
output 'Starting standard deploy'.green
|
641
681
|
deploy_feature!
|
@@ -647,6 +687,7 @@ class Release
|
|
647
687
|
`mkdir -p cloudformation/stacks/task cloudformation/stacks/route53 cloudformation/stacks/asg cloudformation/stacks/elb`
|
648
688
|
@s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/task/db.yml', response_target: 'cloudformation/stacks/task/db.yml'})
|
649
689
|
@s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/route53/qa.yml', response_target: 'cloudformation/stacks/route53/qa.yml'})
|
690
|
+
@s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/route53/minimal_qa.yml', response_target: 'cloudformation/stacks/route53/minimal_qa.yml'})
|
650
691
|
@s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/asg/ecs-asg-allinone.yml', response_target: 'cloudformation/stacks/asg/ecs-asg-allinone.yml'})
|
651
692
|
@s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/ecs-cluster.yml', response_target: 'cloudformation/stacks/ecs-cluster.yml'})
|
652
693
|
@s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/elb/alb-public-qa.yml', response_target: 'cloudformation/stacks/elb/alb-public-qa.yml'})
|
@@ -661,6 +702,173 @@ class Release
|
|
661
702
|
end
|
662
703
|
end
|
663
704
|
|
705
|
+
def qainit_drone_minimal_deploy!
|
706
|
+
# tenere solo il project da deployare (l'unico project è prima)
|
707
|
+
@ami_id = get_ami_id("ecs-fleet-allinone-staging")
|
708
|
+
project = ''
|
709
|
+
@projects.each_key do |project_key|
|
710
|
+
if @projects[project_key]['revision']
|
711
|
+
project = project_key
|
712
|
+
git_checkout_version(project_key, @projects[project_key]['revision'])
|
713
|
+
end
|
714
|
+
end
|
715
|
+
deploy_id = get_deploy_id
|
716
|
+
|
717
|
+
@git_branch = ENV['DRONE_BRANCH']
|
718
|
+
@dns_record_identifier = deploy_id
|
719
|
+
hostname_pattern_priority = hostname_pattern_priority()
|
720
|
+
tags = [
|
721
|
+
{
|
722
|
+
key: "qainit",
|
723
|
+
value: @git_branch
|
724
|
+
},
|
725
|
+
{
|
726
|
+
key: project,
|
727
|
+
value: @projects[project]['name']
|
728
|
+
},
|
729
|
+
{
|
730
|
+
key: "hostname_pattern_priority",
|
731
|
+
value: hostname_pattern_priority
|
732
|
+
}
|
733
|
+
]
|
734
|
+
|
735
|
+
cluster_stack_name = "ecs-cluster-qa-#{deploy_id}"
|
736
|
+
|
737
|
+
if stack_exists?(cluster_stack_name)
|
738
|
+
tags = get_stack_tags(cluster_stack_name)
|
739
|
+
hostname_pattern_priority = tags.detect do |tag|
|
740
|
+
tag.key == 'hostname_pattern_priority'
|
741
|
+
end.value
|
742
|
+
end
|
743
|
+
|
744
|
+
stack_name_alb = @base_stack_name_alb + deploy_id[0..5]
|
745
|
+
stack_name_alb_ws = @base_stack_name_alb_ws + deploy_id[0..5]
|
746
|
+
|
747
|
+
create_cluster_stack(cluster_stack_name, tags) unless stack_exists?(cluster_stack_name)
|
748
|
+
wait_for_stack_ready(cluster_stack_name) unless stack_ready?(cluster_stack_name)
|
749
|
+
|
750
|
+
create_alb_stack(stack_name_alb, "http", deploy_id, 'qa-minimal') unless stack_exists?(stack_name_alb)
|
751
|
+
create_alb_stack(stack_name_alb_ws, "websocket", deploy_id, 'qa-minimal') unless stack_exists?(stack_name_alb_ws)
|
752
|
+
|
753
|
+
resp = describe_stack_resource(cluster_stack_name, 'ECSCluster')
|
754
|
+
@ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
|
755
|
+
|
756
|
+
asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
|
757
|
+
create_asg_stack(asg_stack_name, tags) unless stack_exists?(asg_stack_name)
|
758
|
+
|
759
|
+
deploy_id = get_deploy_id
|
760
|
+
create_pyxis_artifact(@projects["pyxis-npm"]['revision'], deploy_id)
|
761
|
+
create_prima_artifact(@projects["prima"]['revision'], @projects["prima"]['name'], deploy_id, true) unless artifact_exists?('prima-artifacts-encrypted', "prima/#{@projects["prima"]['revision']}.tar.gz")
|
762
|
+
|
763
|
+
wait_for_stack_ready(stack_name_alb) unless stack_ready?(stack_name_alb)
|
764
|
+
wait_for_stack_ready(stack_name_alb_ws) unless stack_ready?(stack_name_alb_ws)
|
765
|
+
|
766
|
+
stack_name_route53 = "ecs-route53-qa-#{deploy_id}"
|
767
|
+
stack_body = IO.read('cloudformation/stacks/route53/minimal_qa.yml')
|
768
|
+
parameters = [
|
769
|
+
{
|
770
|
+
parameter_key: "DnsRecordIdentifier",
|
771
|
+
parameter_value: @dns_record_identifier
|
772
|
+
},
|
773
|
+
{
|
774
|
+
parameter_key: "PrimaElbHostname",
|
775
|
+
parameter_value: get_alb_host(stack_name_alb)
|
776
|
+
},
|
777
|
+
{
|
778
|
+
parameter_key: 'CrashElbHostname',
|
779
|
+
parameter_value: get_alb_host(stack_name_alb_ws)
|
780
|
+
}
|
781
|
+
]
|
782
|
+
|
783
|
+
create_stack(stack_name_route53, stack_body, parameters, tags, @cf_role) unless stack_exists?(stack_name_route53)
|
784
|
+
wait_for_stack_ready(stack_name_route53) unless stack_ready?(stack_name_route53)
|
785
|
+
|
786
|
+
stack_name_web = "ecs-task-web-qa-#{deploy_id}"
|
787
|
+
git_checkout_version('prima', @projects["prima"]['revision'])
|
788
|
+
stack_body = IO.read('projects/prima/app/cloudformation/tasks/web.yml')
|
789
|
+
parameters = [
|
790
|
+
{
|
791
|
+
parameter_key: "Environment",
|
792
|
+
parameter_value: "qa-minimal"
|
793
|
+
},
|
794
|
+
{
|
795
|
+
parameter_key: "ReleaseVersion",
|
796
|
+
parameter_value: "#{@projects["prima"]['revision']}"
|
797
|
+
},
|
798
|
+
{
|
799
|
+
parameter_key: "TaskDesiredCount",
|
800
|
+
parameter_value: "1"
|
801
|
+
},
|
802
|
+
{
|
803
|
+
parameter_key: "ECSClusterName",
|
804
|
+
parameter_value: @ecs_cluster_name
|
805
|
+
},
|
806
|
+
{
|
807
|
+
parameter_key: "ALBShortName",
|
808
|
+
parameter_value: "web-qa-#{deploy_id}"[0..27]
|
809
|
+
},
|
810
|
+
{
|
811
|
+
parameter_key: "WebQaBaseHostname",
|
812
|
+
parameter_value: "#{@dns_record_identifier}.qa.colaster.com"
|
813
|
+
},
|
814
|
+
{
|
815
|
+
parameter_key: "HostnamePattern",
|
816
|
+
parameter_value: "ww*-#{@dns_record_identifier}.qa.colaster.com"
|
817
|
+
},
|
818
|
+
{
|
819
|
+
parameter_key: "HostnamePatternPriority",
|
820
|
+
parameter_value: hostname_pattern_priority
|
821
|
+
},
|
822
|
+
{
|
823
|
+
parameter_key: "HostnamePatternAggregatorPriority",
|
824
|
+
parameter_value: (hostname_pattern_priority.to_i + 1).to_s
|
825
|
+
},
|
826
|
+
{
|
827
|
+
parameter_key: "EnvHash",
|
828
|
+
parameter_value: deploy_id
|
829
|
+
},
|
830
|
+
{
|
831
|
+
parameter_key: "AssangeHostname",
|
832
|
+
parameter_value: "assange-#{@dns_record_identifier}.qa.colaster.com"
|
833
|
+
},
|
834
|
+
{
|
835
|
+
parameter_key: "BackofficeHostname",
|
836
|
+
parameter_value: "backoffice-#{@dns_record_identifier}.qa.colaster.com"
|
837
|
+
},
|
838
|
+
{
|
839
|
+
parameter_key: "WebHostname",
|
840
|
+
parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
|
841
|
+
},
|
842
|
+
{
|
843
|
+
parameter_key: "FePrimaDomain",
|
844
|
+
parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
|
845
|
+
},
|
846
|
+
{
|
847
|
+
parameter_key: "HostnamePattern",
|
848
|
+
parameter_value: "www-#{@dns_record_identifier}.qa.colaster.com"
|
849
|
+
}
|
850
|
+
]
|
851
|
+
if stack_exists?(stack_name_web)
|
852
|
+
cur_version = get_currently_deployed_version(stack_name_web)
|
853
|
+
update_stack(stack_name_web, stack_body, parameters, tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
|
854
|
+
else
|
855
|
+
create_stack(stack_name_web, stack_body, parameters, tags, @cf_role)
|
856
|
+
end
|
857
|
+
wait_for_stack_ready(stack_name_web) unless stack_ready?(stack_name_web)
|
858
|
+
update_service_defaults(stack_name_web)
|
859
|
+
prima_hostname = get_route53_hostname(stack_name_web)
|
860
|
+
|
861
|
+
projects_text = "
|
862
|
+
> Prima url: https://#{prima_hostname}
|
863
|
+
> SSH connection: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no githubUsername@#{ec2_ip_address(asg_stack_name)}\n"
|
864
|
+
|
865
|
+
output projects_text.cyan
|
866
|
+
output "Deploy effettuato, everything is awesome!\n".green
|
867
|
+
if @qainit
|
868
|
+
qainit_write_output(projects_text, 'Indirizzi scritti su ')
|
869
|
+
end
|
870
|
+
end
|
871
|
+
|
664
872
|
def deploy_feature!
|
665
873
|
`git pull && git submodule init && git submodule update`
|
666
874
|
@ami_id = get_ami_id("ecs-fleet-allinone-staging")
|
@@ -2297,7 +2505,7 @@ class Release
|
|
2297
2505
|
Dir.chdir '../../'
|
2298
2506
|
end
|
2299
2507
|
|
2300
|
-
def create_prima_artifact(revision, branch_name, deploy_id)
|
2508
|
+
def create_prima_artifact(revision, branch_name, deploy_id, minimal = false)
|
2301
2509
|
output "Preparo l'artifact prima .zip\n".yellow
|
2302
2510
|
|
2303
2511
|
git_checkout_version('prima', revision)
|
@@ -2898,6 +3106,7 @@ Description
|
|
2898
3106
|
finish finishes the feature by merging to dev and master
|
2899
3107
|
qainit deploys a new environment with selected branches from every project
|
2900
3108
|
qainit $PROJECT_NAME deploys a new environment allowing to selected a branch from the input project (everything else is master)
|
3109
|
+
qainit minimal prima deploys a new copy of prima project, using staging microservices and database
|
2901
3110
|
qainit shutdown deletes a specific qa environment
|
2902
3111
|
|
2903
3112
|
Available only to devops (from artemide)
|