prima-twig 0.13.37 → 0.14.0

Sign up to get free protection for your applications and to get access to all the features.
@@ -1,73 +1,60 @@
1
1
  require 'colorize'
2
- require 'English'
3
2
  require 'optparse'
4
3
 
5
- module Command
6
- # executes command and exits if status != 0
7
- def exec_step(command, output = nil)
4
+ module Command
5
+ def exec_step command, output = nil
8
6
  if output
9
7
  puts output
10
8
  else
11
- puts 'exec > '.green + command.to_s.yellow
9
+ puts "exec > ".green + "#{command}".yellow
12
10
  end
13
11
  `#{command}`
14
- exit($CHILD_STATUS.exitstatus) unless $CHILD_STATUS.exitstatus.zero?
12
+ exit($?.exitstatus) unless 0 === $?.exitstatus
15
13
  end
16
14
 
17
- def output(msg)
18
- puts 'twig binaries > '.black + msg
15
+ def output msg
16
+ puts "twig binaries > ".black + msg
19
17
  end
20
18
 
21
- def stop_if(check, msg, command = '')
19
+ def stop_if check, msg
22
20
  if check
23
- output_msg =
24
- case msg
25
- when Symbol
26
- symbol_message msg
27
- when Array
28
- array_message msg
29
- else
30
- msg
31
- end
32
- command.empty? || exec(command)
33
- puts 'there was a problem > '.red + output_msg
21
+ output_msg = case msg
22
+ when Symbol
23
+ symbol_message msg
24
+ when Array
25
+ array_message msg
26
+ else
27
+ msg
28
+ end
29
+ puts "there was a problem > ".red + output_msg
34
30
  exit(1)
35
31
  end
36
32
  end
37
33
 
38
- def symbol_message(s)
34
+ def symbol_message s
39
35
  case s
40
36
  when :clean
41
- 'hai dei file non committati...non posso continuare'
37
+ "hai dei file non committati...non posso continuare'"
42
38
  when :detached_head
43
39
  "repo in stato 'head detached'"
44
40
  when :wrong_args
45
- 'argomento non corretto'
41
+ "argomento non corretto"
46
42
  end
47
43
  end
48
44
 
49
- def array_message(arr)
45
+ def array_message arr
50
46
  case arr[0]
51
47
  when :wrong_args
52
48
  msg = symbol_message arr[0]
53
49
  msg += "\n"
54
- msg += ' valore possibile: '
55
- values = '[ ' + arr[1].join(' | ').yellow + ' ]'
50
+ msg += " valore possibile: "
51
+ values = "[ " + arr[1].join(" | ").yellow + " ]"
56
52
  msg += values
57
53
  msg
58
54
  end
59
55
  end
60
56
 
61
- def stop_unless(check, msg, command = '')
62
- stop_if !check, msg, command
63
- end
64
-
65
- # executes command and returns properly colored output
66
- def execute_command(cmd)
67
- output "Eseguo #{cmd}".yellow
68
- res = `#{cmd}`
69
- color = $CHILD_STATUS.exitstatus.zero? ? 'green' : 'red'
70
- output res.send color
71
- stop_if (color == 'red'), "Errore durante la build dell'artifact".red
57
+ def stop_unless check, msg
58
+ stop_if (not check), msg
72
59
  end
73
60
  end
@@ -4,8 +4,7 @@ require 'octokit'
4
4
  require 'yaml'
5
5
  require 'rugged'
6
6
  require 'highline/import'
7
- require 'aws-sdk-core'
8
- require 'rubyflare'
7
+ require 'aws-sdk'
9
8
 
10
9
  class Prima
11
10
  LABEL_REVIEW='review'
@@ -13,16 +12,14 @@ class Prima
13
12
  LABEL_HOTFIX='hotfix'
14
13
  LABEL_NEXT_RELEASE='next release'
15
14
  LABEL_IN_STAGING='in staging'
16
- CONFIG_KEYS=['github', 'mandrill', 'sparkpost', 'cloudflare_email', 'cloudflare_apikey', 'aws_username', 'aws_password', 'prima_apikey']
15
+ CONFIG_KEYS=['github', 'mandrill']
17
16
  attr_reader :gh, :twig, :config, :rugged, :aws
18
17
 
19
18
  def initialize
20
19
  @twig = Twig.new(:read_options => true, :max_days_old => 30)
21
20
  unless has_config?
22
21
  if File.exist?('../prima/twig.yml')
23
- `cp ../prima/twig.yml .`
24
- elsif File.exist?('/tmp/twig.yml')
25
- `cp /tmp/twig.yml .`
22
+ `cp ../prima/twig.yml .`
26
23
  else
27
24
  generate_config
28
25
  end
@@ -214,12 +211,7 @@ class Prima
214
211
  end
215
212
 
216
213
  def assign_issue_to_me(issue)
217
- detailed_issue = get_issue issue
218
- assignees = [user_login]
219
- detailed_issue.assignees.each do |assignee|
220
- assignees << assignee.login
221
- end
222
- @gh.update_issue('primait/board', issue, :assignees => assignees)
214
+ @gh.update_issue('primait/board', issue, :assignee => user_login)
223
215
  end
224
216
 
225
217
  def assign_pull_request_to_me(pr_number)
metadata CHANGED
@@ -1,147 +1,46 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prima-twig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.13.37
4
+ version: 0.14.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
8
8
  - Antonio Murdaca
9
9
  - Alessandro Nuzzo
10
10
  - Andrea Usuelli
11
- - Simone Quaini
12
- - Eugenio Laghi
13
- - Giuseppe D'Anna
14
11
  autorequire:
15
12
  bindir: bin
16
13
  cert_chain: []
17
- date: 2020-06-26 00:00:00.000000000 Z
14
+ date: 2016-12-12 00:00:00.000000000 Z
18
15
  dependencies:
19
16
  - !ruby/object:Gem::Dependency
20
- name: aws-sdk-autoscaling
21
- requirement: !ruby/object:Gem::Requirement
22
- requirements:
23
- - - "~>"
24
- - !ruby/object:Gem::Version
25
- version: '1'
26
- type: :runtime
27
- prerelease: false
28
- version_requirements: !ruby/object:Gem::Requirement
29
- requirements:
30
- - - "~>"
31
- - !ruby/object:Gem::Version
32
- version: '1'
33
- - !ruby/object:Gem::Dependency
34
- name: aws-sdk-batch
35
- requirement: !ruby/object:Gem::Requirement
36
- requirements:
37
- - - "~>"
38
- - !ruby/object:Gem::Version
39
- version: '1'
40
- type: :runtime
41
- prerelease: false
42
- version_requirements: !ruby/object:Gem::Requirement
43
- requirements:
44
- - - "~>"
45
- - !ruby/object:Gem::Version
46
- version: '1'
47
- - !ruby/object:Gem::Dependency
48
- name: aws-sdk-cloudformation
49
- requirement: !ruby/object:Gem::Requirement
50
- requirements:
51
- - - "~>"
52
- - !ruby/object:Gem::Version
53
- version: '1'
54
- type: :runtime
55
- prerelease: false
56
- version_requirements: !ruby/object:Gem::Requirement
57
- requirements:
58
- - - "~>"
59
- - !ruby/object:Gem::Version
60
- version: '1'
61
- - !ruby/object:Gem::Dependency
62
- name: aws-sdk-cloudfront
63
- requirement: !ruby/object:Gem::Requirement
64
- requirements:
65
- - - "~>"
66
- - !ruby/object:Gem::Version
67
- version: '1'
68
- type: :runtime
69
- prerelease: false
70
- version_requirements: !ruby/object:Gem::Requirement
71
- requirements:
72
- - - "~>"
73
- - !ruby/object:Gem::Version
74
- version: '1'
75
- - !ruby/object:Gem::Dependency
76
- name: aws-sdk-ec2
77
- requirement: !ruby/object:Gem::Requirement
78
- requirements:
79
- - - "~>"
80
- - !ruby/object:Gem::Version
81
- version: '1'
82
- type: :runtime
83
- prerelease: false
84
- version_requirements: !ruby/object:Gem::Requirement
85
- requirements:
86
- - - "~>"
87
- - !ruby/object:Gem::Version
88
- version: '1'
89
- - !ruby/object:Gem::Dependency
90
- name: aws-sdk-ecs
91
- requirement: !ruby/object:Gem::Requirement
92
- requirements:
93
- - - "~>"
94
- - !ruby/object:Gem::Version
95
- version: '1'
96
- type: :runtime
97
- prerelease: false
98
- version_requirements: !ruby/object:Gem::Requirement
99
- requirements:
100
- - - "~>"
101
- - !ruby/object:Gem::Version
102
- version: '1'
103
- - !ruby/object:Gem::Dependency
104
- name: aws-sdk-elasticloadbalancingv2
105
- requirement: !ruby/object:Gem::Requirement
106
- requirements:
107
- - - "~>"
108
- - !ruby/object:Gem::Version
109
- version: '1'
110
- type: :runtime
111
- prerelease: false
112
- version_requirements: !ruby/object:Gem::Requirement
113
- requirements:
114
- - - "~>"
115
- - !ruby/object:Gem::Version
116
- version: '1'
117
- - !ruby/object:Gem::Dependency
118
- name: aws-sdk-s3
17
+ name: twig
119
18
  requirement: !ruby/object:Gem::Requirement
120
19
  requirements:
121
20
  - - "~>"
122
21
  - !ruby/object:Gem::Version
123
- version: '1'
22
+ version: '1.7'
124
23
  type: :runtime
125
24
  prerelease: false
126
25
  version_requirements: !ruby/object:Gem::Requirement
127
26
  requirements:
128
27
  - - "~>"
129
28
  - !ruby/object:Gem::Version
130
- version: '1'
29
+ version: '1.7'
131
30
  - !ruby/object:Gem::Dependency
132
- name: aws-sdk-core
31
+ name: octokit
133
32
  requirement: !ruby/object:Gem::Requirement
134
33
  requirements:
135
34
  - - "~>"
136
35
  - !ruby/object:Gem::Version
137
- version: '3'
36
+ version: '3.0'
138
37
  type: :runtime
139
38
  prerelease: false
140
39
  version_requirements: !ruby/object:Gem::Requirement
141
40
  requirements:
142
41
  - - "~>"
143
42
  - !ruby/object:Gem::Version
144
- version: '3'
43
+ version: '3.0'
145
44
  - !ruby/object:Gem::Dependency
146
45
  name: colorize
147
46
  requirement: !ruby/object:Gem::Requirement
@@ -185,33 +84,19 @@ dependencies:
185
84
  - !ruby/object:Gem::Version
186
85
  version: '2.0'
187
86
  - !ruby/object:Gem::Dependency
188
- name: mail
189
- requirement: !ruby/object:Gem::Requirement
190
- requirements:
191
- - - "~>"
192
- - !ruby/object:Gem::Version
193
- version: '2.6'
194
- type: :runtime
195
- prerelease: false
196
- version_requirements: !ruby/object:Gem::Requirement
197
- requirements:
198
- - - "~>"
199
- - !ruby/object:Gem::Version
200
- version: '2.6'
201
- - !ruby/object:Gem::Dependency
202
- name: octokit
87
+ name: rugged
203
88
  requirement: !ruby/object:Gem::Requirement
204
89
  requirements:
205
90
  - - "~>"
206
91
  - !ruby/object:Gem::Version
207
- version: '3.0'
92
+ version: '0.22'
208
93
  type: :runtime
209
94
  prerelease: false
210
95
  version_requirements: !ruby/object:Gem::Requirement
211
96
  requirements:
212
97
  - - "~>"
213
98
  - !ruby/object:Gem::Version
214
- version: '3.0'
99
+ version: '0.22'
215
100
  - !ruby/object:Gem::Dependency
216
101
  name: redcarpet
217
102
  requirement: !ruby/object:Gem::Requirement
@@ -227,65 +112,36 @@ dependencies:
227
112
  - !ruby/object:Gem::Version
228
113
  version: '3.3'
229
114
  - !ruby/object:Gem::Dependency
230
- name: redis
231
- requirement: !ruby/object:Gem::Requirement
232
- requirements:
233
- - - "~>"
234
- - !ruby/object:Gem::Version
235
- version: '4.0'
236
- type: :runtime
237
- prerelease: false
238
- version_requirements: !ruby/object:Gem::Requirement
239
- requirements:
240
- - - "~>"
241
- - !ruby/object:Gem::Version
242
- version: '4.0'
243
- - !ruby/object:Gem::Dependency
244
- name: rubyflare
245
- requirement: !ruby/object:Gem::Requirement
246
- requirements:
247
- - - "~>"
248
- - !ruby/object:Gem::Version
249
- version: '0'
250
- type: :runtime
251
- prerelease: false
252
- version_requirements: !ruby/object:Gem::Requirement
253
- requirements:
254
- - - "~>"
255
- - !ruby/object:Gem::Version
256
- version: '0'
257
- - !ruby/object:Gem::Dependency
258
- name: rugged
115
+ name: mail
259
116
  requirement: !ruby/object:Gem::Requirement
260
117
  requirements:
261
118
  - - "~>"
262
119
  - !ruby/object:Gem::Version
263
- version: '0.22'
120
+ version: '2.6'
264
121
  type: :runtime
265
122
  prerelease: false
266
123
  version_requirements: !ruby/object:Gem::Requirement
267
124
  requirements:
268
125
  - - "~>"
269
126
  - !ruby/object:Gem::Version
270
- version: '0.22'
127
+ version: '2.6'
271
128
  - !ruby/object:Gem::Dependency
272
- name: twig
129
+ name: aws-sdk
273
130
  requirement: !ruby/object:Gem::Requirement
274
131
  requirements:
275
132
  - - "~>"
276
133
  - !ruby/object:Gem::Version
277
- version: '1.7'
134
+ version: '2.6'
278
135
  type: :runtime
279
136
  prerelease: false
280
137
  version_requirements: !ruby/object:Gem::Requirement
281
138
  requirements:
282
139
  - - "~>"
283
140
  - !ruby/object:Gem::Version
284
- version: '1.7'
141
+ version: '2.6'
285
142
  description: Our tools to manage git and github
286
143
  email: matteo.giachino@prima.it
287
144
  executables:
288
- - twig-build
289
145
  - twig-circle
290
146
  - twig-deploy
291
147
  - twig-feature
@@ -293,11 +149,9 @@ executables:
293
149
  - twig-open-pr
294
150
  - twig-pick-issue
295
151
  - twig-review
296
- - twig-update-ami
297
152
  extensions: []
298
153
  extra_rdoc_files: []
299
154
  files:
300
- - bin/twig-build
301
155
  - bin/twig-circle
302
156
  - bin/twig-deploy
303
157
  - bin/twig-feature
@@ -305,9 +159,7 @@ files:
305
159
  - bin/twig-open-pr
306
160
  - bin/twig-pick-issue
307
161
  - bin/twig-review
308
- - bin/twig-update-ami
309
162
  - lib/command.rb
310
- - lib/prima_aws_client.rb
311
163
  - lib/prima_twig.rb
312
164
  homepage: http://rubygems.org/gems/prima-twig
313
165
  licenses:
@@ -328,7 +180,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
328
180
  - !ruby/object:Gem::Version
329
181
  version: '0'
330
182
  requirements: []
331
- rubygems_version: 3.0.1
183
+ rubyforge_project:
184
+ rubygems_version: 2.5.1
332
185
  signing_key:
333
186
  specification_version: 4
334
187
  summary: The Prima twig toolbelt
@@ -1,2153 +0,0 @@
1
- #!/usr/bin/env ruby
2
-
3
- require 'rubygems'
4
- require_relative '../lib/prima_twig.rb'
5
- require_relative '../lib/prima_aws_client.rb'
6
- require 'digest'
7
- require 'json'
8
- require 'launchy'
9
- require 'pp'
10
- require 'redis'
11
-
12
- class Build
13
- include Command
14
- include PrimaAwsClient
15
-
16
- def initialize()
17
- @prima = Prima.new
18
- @batch = Aws::Batch::Client.new
19
- @s3 = Aws::S3::Client.new
20
- @s3_bucket = 'prima-artifacts'
21
- @artifact_path = '/tmp/prima-artifact.zip'
22
- @import_db_task = 'arn:aws:ecs:eu-west-1:001575623345:task-definition/ecs-task-db-restore2-TaskDefinitionDbRestore-XYF2QX2UJRXZ:1'
23
- @cf_role = 'arn:aws:iam::001575623345:role/qainit-service-role-cloudformat-CloudformationRole-18KBZQIS148R9'
24
- @ecs_cluster_name = nil
25
- @deploy_update = false
26
- @qainit = false
27
- @qainit_host_folder = "/var/ci/#{ENV['DRONE_REPO']}/#{ENV['DRONE_BRANCH']}/#{ENV['DRONE_BUILD_NUMBER']}"
28
- @qainit_folder = "/drone/src/github.com/project/primait/qainit"
29
- @projects = {
30
- 'prima' => {},
31
- 'urania' => {},
32
- 'ermes' => {},
33
- 'bburago' => {},
34
- 'hal9000' => {},
35
- 'fidaty' => {},
36
- 'peano' => {},
37
- 'assange' => {},
38
- 'borat' => {},
39
- 'crash' => {},
40
- 'activia' => {},
41
- 'skynet' => {},
42
- 'roger' => {},
43
- 'rachele' => {},
44
- 'leftorium' => {},
45
- 'pyxis-npm' => {},
46
- 'starsky' => {},
47
- 'hutch' => {},
48
- 'maia' => {},
49
- 'legion' => {},
50
- 'vianello' => {},
51
- 'domus' => {}
52
- # 'toretto' => {}
53
- }
54
- @base_stack_name_alb = 'ecs-alb-http-public-qa-'
55
- @base_stack_name_alb_ws = 'ecs-alb-ws-public-qa-'
56
- @git_branch = ENV['DRONE_BRANCH']
57
- @cloudflare = Rubyflare.connect_with(ENV['CLOUDFLARE_EMAIL'], ENV['CLOUDFLARE_APIKEY'])
58
- end
59
-
60
- def execute!(args)
61
- qainit_read_config!
62
- abort('Non sei nella cartella di qainit') unless Dir.pwd.match 'qainit$' or Dir.pwd.match '/drone/src'
63
- case args[0]
64
- when 'infrastructure'
65
- create_infrastructure_stacks! unless is_shutdown?
66
- when 'project'
67
- set_tags()
68
- proj_method = "create_#{args[1]}_stack"
69
- self.send(proj_method.to_sym) unless is_shutdown?
70
- when 'complete'
71
- if is_shutdown?
72
- output 'Shutting down'.green
73
- qainit_drone_shutdown!
74
- else
75
- complete_qa_setup!
76
- end
77
- end
78
- end
79
-
80
- def is_shutdown?
81
- return ENV['DRONE_COMMIT_MESSAGE'] == 'shutdown'
82
- end
83
-
84
- def qainit_drone_shutdown!
85
- output "Recupero le informazioni sui QA attivi..."
86
- stack_list, envs = get_stacks
87
-
88
- env_hash = "qa-" + get_deploy_id
89
-
90
- cluster_stack_name = nil
91
- stacks_to_delete = []
92
- stack_list.each do |stack|
93
- if stack.stack_name.match(/#{env_hash}$/)
94
- if stack.stack_name.match(/ecs-cluster/)
95
- cluster_stack_name = stack.stack_name
96
- else
97
- break unless stack.stack_name.match(/#{env_hash}$/)
98
- stacks_to_delete.push(stack.stack_name)
99
- delete_stack(stack.stack_name)
100
- end
101
- end
102
- end
103
-
104
- cluster_stack_name = "ecs-cluster-#{env_hash}"
105
- if stack_exists?(cluster_stack_name)
106
- aggregator_enabled = get_stack_tags(cluster_stack_name).detect do |tag|
107
- tag.key === "hostname_pattern_priority" and tag.value === "1"
108
- end.is_a?(Aws::CloudFormation::Types::Tag)
109
-
110
- if aggregator_enabled
111
- dns_to_staging(env_hash)
112
- end
113
- end
114
-
115
- # Se non ha finito di cancellare le altre non si puo' cancellare il cluster
116
- output "Attendo 10 secondi per poter eliminare il cluster ECS"
117
-
118
- while stacks_to_delete.length > 0
119
- sleep 13
120
- stacks_to_delete.each do |stack_name|
121
- stacks_to_delete = stacks_to_delete - [stack_name] unless stack_exists?(stack_name)
122
- end
123
- output "Stack ancora attivi: #{stacks_to_delete.length.to_s}. Attendo altri 10 secondi per eliminare il cluster ECS"
124
- end
125
-
126
- delete_stack(cluster_stack_name) if stack_exists?(cluster_stack_name)
127
- delete_stack(@base_stack_name_alb + env_hash[3..8]) if stack_exists?(@base_stack_name_alb + env_hash[3..8])
128
- delete_stack(@base_stack_name_alb_ws + env_hash[3..8]) if stack_exists?(@base_stack_name_alb_ws + env_hash[3..8])
129
- `git checkout master && git push origin --delete ${DRONE_BRANCH}`
130
- output "Cancello il record DNS utilizzato da Lighthouse"
131
- delete_lighthouse_dns()
132
- output "Finito!".green
133
-
134
- if @qainit
135
- qainit_write_output("QA #{ENV["DRONE_BRANCH"]} spento.", 'Indirizzi scritti su ')
136
- end
137
- end
138
-
139
- def qainit_write_output(file_message, output_message)
140
- `mkdir -p /etc/qainit-output`
141
- qa_file_name = "/etc/qainit-output/url_qa"
142
- File.open(qa_file_name + '.txt', 'w') { |file| file.write(file_message) }
143
- output "#{output_message} #{qa_file_name}".green
144
- end
145
-
146
- def qainit_read_config!()
147
- projects = ''
148
-
149
- File.open('branch_names', 'r') do |file|
150
- file.each_line do |line|
151
- projects = JSON.parse(line)
152
- end
153
- end
154
-
155
- projects.each do |key, project|
156
- @projects[key] = project
157
- end
158
-
159
- get_s3_config_files
160
- @qainit = true
161
- end
162
-
163
- def get_s3_config_files
164
- # manteniamo la struttura per lanciarlo facilmente anche da locale
165
- `mkdir -p cloudformation/stacks/task cloudformation/stacks/route53 cloudformation/stacks/asg cloudformation/stacks/elb`
166
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/task/db-rabbitmq385.yml', response_target: 'cloudformation/stacks/task/db-rabbitmq385.yml'})
167
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/task/otel-agent.yml', response_target: 'cloudformation/stacks/task/otel-agent.yml'})
168
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/route53/qa.yml', response_target: 'cloudformation/stacks/route53/qa.yml'})
169
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/asg/ecs-asg-allinone.yml', response_target: 'cloudformation/stacks/asg/ecs-asg-allinone.yml'})
170
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/ecs-cluster.yml', response_target: 'cloudformation/stacks/ecs-cluster.yml'})
171
- @s3.get_object({bucket: "prima-deploy", key: 'cloudformation/stacks/elb/alb-public-qa.yml', response_target: 'cloudformation/stacks/elb/alb-public-qa.yml'})
172
- end
173
-
174
- def get_deploy_id
175
- if @deploy_id
176
- @deploy_id
177
- else
178
- @deploy_id = Digest::MD5.hexdigest(ENV['DRONE_BRANCH'])
179
- @deploy_id
180
- end
181
- end
182
-
183
- def get_ecs_cluster_name
184
- if @ecs_cluster_name
185
- @ecs_cluster_name
186
- else
187
- cluster_stack_name = "ecs-cluster-qa-#{get_deploy_id}"
188
- resp = describe_stack_resource(cluster_stack_name, 'ECSCluster')
189
- @ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
190
- @ecs_cluster_name
191
- end
192
- end
193
-
194
- def get_asg_stack_name
195
- "ecs-asg-allinone-qa-#{get_deploy_id}"
196
- end
197
-
198
- def get_stack_name(service)
199
- "ecs-task-#{service}-qa-#{get_deploy_id}"
200
- end
201
-
202
- def set_tags()
203
- @tags = [
204
- {
205
- key: "qainit",
206
- value: @git_branch.gsub(/[^a-zA-Z0-9\-]/,"-")
207
- },
208
- {
209
- key: "hostname_pattern_priority",
210
- value: hostname_pattern_priority
211
- }
212
- ]
213
- @projects.each do |key, value|
214
- unless value['name'].to_s.strip.empty?
215
- @tags << { key: key, value: value['name'] }
216
- end
217
- end
218
- end
219
-
220
- def create_infrastructure_stacks!
221
- `git pull && git submodule init && git submodule update`
222
- @ami_id = get_ami_id("ecs-fleet-allinone-staging")
223
- deploy_id = get_deploy_id
224
- stack_name_alb = 'ecs-alb-http-public-qa-' + deploy_id[0..5]
225
- stack_name_alb_ws = 'ecs-alb-ws-public-qa-' + deploy_id[0..5]
226
- unless @qainit
227
- @projects.each_key do |project_key|
228
- if @projects[project_key]['revision']
229
- git_checkout_version(project_key, @projects[project_key]['revision'])
230
- end
231
- end
232
- end
233
- hostname_pattern_priority = hostname_pattern_priority()
234
-
235
- set_tags()
236
-
237
- cluster_stack_name = "ecs-cluster-qa-#{deploy_id}"
238
-
239
- if stack_exists?(cluster_stack_name)
240
- @tags = get_stack_tags(cluster_stack_name)
241
- hostname_pattern_priority = @tags.detect do |tag|
242
- tag.key == 'hostname_pattern_priority'
243
- end.value
244
- end
245
-
246
- create_cluster_stack(cluster_stack_name, @tags) unless stack_exists?(cluster_stack_name)
247
- wait_for_stack_ready(cluster_stack_name) unless stack_ready?(cluster_stack_name)
248
-
249
- create_alb_stack(stack_name_alb, "http", deploy_id) unless stack_exists?(stack_name_alb)
250
- create_alb_stack(stack_name_alb_ws, "websocket", deploy_id) unless stack_exists?(stack_name_alb_ws)
251
-
252
- create_asg_stack(get_asg_stack_name, @tags) unless stack_exists?(get_asg_stack_name)
253
-
254
- stack_name_db = "ecs-task-db-qa-#{deploy_id}"
255
- stack_body = IO.read('cloudformation/stacks/task/db-rabbitmq385.yml')
256
- parameters = [
257
- {
258
- parameter_key: "Environment",
259
- parameter_value: "qa"
260
- },
261
- {
262
- parameter_key: "ECSClusterName",
263
- parameter_value: get_ecs_cluster_name
264
- }
265
- ]
266
- create_stack(stack_name_db, stack_body, parameters, @tags, @cf_role) unless stack_exists?(stack_name_db) # creazione asincrona stack dei db (~4 min)
267
-
268
- output "check pyxis \n".yellow
269
-
270
- wait_for_stack_ready(stack_name_db) unless stack_ready?(stack_name_db) # dovrebbe essere istantaneo
271
- db_task = ''
272
- db_task = import_dbs(get_ec2_ip_address) unless stack_exists?("ecs-route53-qa-#{deploy_id}") # import asincrono dei dati
273
-
274
- wait_for_db_import(db_task) unless stack_exists?("ecs-route53-qa-#{deploy_id}") # dovrebbe essere istantaneo
275
-
276
- import_redis_crash(get_ec2_ip_address) if !stack_exists?("ecs-task-web-qa-#{deploy_id}")
277
-
278
- wait_for_stack_ready(stack_name_alb) unless stack_ready?(stack_name_alb)
279
- wait_for_stack_ready(stack_name_alb_ws) unless stack_ready?(stack_name_alb_ws)
280
-
281
- stack_name_route53 = "ecs-route53-qa-#{deploy_id}"
282
- stack_body = IO.read('cloudformation/stacks/route53/qa.yml')
283
- parameters = [
284
- {
285
- parameter_key: "DnsRecordIdentifier",
286
- parameter_value: get_deploy_id
287
- },
288
- {
289
- parameter_key: "PrimaElbHostname",
290
- parameter_value: get_alb_host(stack_name_alb)
291
- },
292
- {
293
- parameter_key: "UraniaIp",
294
- parameter_value: get_ec2_ip_address
295
- },
296
- {
297
- parameter_key: "BburagoIp",
298
- parameter_value: get_ec2_ip_address
299
- },
300
- {
301
- parameter_key: "Hal9000Ip",
302
- parameter_value: get_ec2_ip_address
303
- },
304
- {
305
- parameter_key: "FidatyIp",
306
- parameter_value: get_ec2_ip_address
307
- },
308
- {
309
- parameter_key: "PeanoIp",
310
- parameter_value: get_ec2_ip_address
311
- },
312
- {
313
- parameter_key: "ErmesIp",
314
- parameter_value: get_ec2_ip_address
315
- },
316
- {
317
- parameter_key: "ActiviaIp",
318
- parameter_value: get_ec2_ip_address
319
- },
320
- {
321
- parameter_key: "SkynetIp",
322
- parameter_value: get_ec2_ip_address
323
- },
324
- {
325
- parameter_key: "RogerIp",
326
- parameter_value: get_ec2_ip_address
327
- },
328
- {
329
- parameter_key: "LeftoriumIp",
330
- parameter_value: get_ec2_ip_address
331
- },
332
- {
333
- parameter_key: "RacheleIp",
334
- parameter_value: get_ec2_ip_address
335
- },
336
- {
337
- parameter_key: "RedisIp",
338
- parameter_value: get_ec2_ip_address
339
- },
340
- {
341
- parameter_key: "LegionIp",
342
- parameter_value: get_ec2_ip_address
343
- },
344
- {
345
- parameter_key: "AssangeElbHostname",
346
- parameter_value: get_alb_host(stack_name_alb)
347
- },
348
- {
349
- parameter_key: "BoratElbHostname",
350
- parameter_value: get_alb_host(stack_name_alb_ws)
351
- },
352
- {
353
- parameter_key: 'CrashElbHostname',
354
- parameter_value: get_alb_host(stack_name_alb_ws)
355
- },
356
- {
357
- parameter_key: 'StarskyElbHostname',
358
- parameter_value: get_alb_host(stack_name_alb)
359
- },
360
- {
361
- parameter_key: 'HutchElbHostname',
362
- parameter_value: get_alb_host(stack_name_alb)
363
- },
364
- {
365
- parameter_key: 'MaiaElbHostname',
366
- parameter_value: get_alb_host(stack_name_alb)
367
- },
368
- {
369
- parameter_key: 'VianelloElbHostname',
370
- parameter_value: get_alb_host(stack_name_alb)
371
- },
372
- {
373
- parameter_key: 'DomusElbHostname',
374
- parameter_value: get_alb_host(stack_name_alb)
375
- }
376
- ]
377
-
378
- create_stack(stack_name_route53, stack_body, parameters, @tags, @cf_role) unless stack_exists?(stack_name_route53)
379
- wait_for_stack_ready(stack_name_route53) unless stack_ready?(stack_name_route53)
380
-
381
- stack_name_otel_agent = "ecs-task-otel-agent-qa-#{deploy_id}"
382
- stack_body = IO.read('cloudformation/stacks/task/otel-agent.yml')
383
- parameters = [
384
- {
385
- parameter_key: "Environment",
386
- parameter_value: "qa"
387
- },
388
- {
389
- parameter_key: "ClusterId",
390
- parameter_value: get_ecs_cluster_name
391
- },
392
- {
393
- parameter_key: "ConfigVersion",
394
- parameter_value: "3.7.0"
395
- }
396
- ]
397
- create_stack(stack_name_otel_agent, stack_body, parameters, @tags, @cf_role) unless stack_exists?(stack_name_otel_agent)
398
- end
399
-
400
- def create_skynet_stack()
401
- wait_for_artifact('prima-artifacts-encrypted', "microservices/skynet/#{@projects["skynet"]['revision']}-qa.tar.gz")
402
- stack_name_skynet = get_stack_name("skynet")
403
- git_checkout_version('skynet', @projects["skynet"]['revision'])
404
- stack_body = File.read('projects/skynet/deploy/task.yml')
405
- parameters = [
406
- {
407
- parameter_key: "Environment",
408
- parameter_value: "qa"
409
- },
410
- {
411
- parameter_key: "ReleaseVersion",
412
- parameter_value: @projects["skynet"]['revision']
413
- },
414
- {
415
- parameter_key: "TaskDesiredCount",
416
- parameter_value: "1"
417
- },
418
- {
419
- parameter_key: "ECSClusterName",
420
- parameter_value: get_ecs_cluster_name
421
- },
422
- {
423
- parameter_key: "HostnamePattern",
424
- parameter_value: "skynet-#{get_deploy_id}.qa.colaster.com"
425
- },
426
- {
427
- parameter_key: "HostnamePatternPriority",
428
- parameter_value: hostname_pattern_priority
429
- }
430
- ]
431
- if stack_exists?(stack_name_skynet)
432
- cur_version = get_currently_deployed_version(stack_name_skynet)
433
- update_stack(stack_name_skynet, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["skynet"]['revision'])
434
- else
435
- create_stack(stack_name_skynet, stack_body, parameters, @tags, @cf_role)
436
- end
437
- end
438
-
439
- def create_legion_stack()
440
- wait_for_artifact('prima-artifacts-encrypted', "microservices/legion/#{@projects["legion"]['revision']}-qa.tar.gz")
441
- stack_name_legion = get_stack_name("legion")
442
- git_checkout_version('legion', @projects["legion"]['revision'])
443
- stack_body = File.read('projects/legion/deploy/task.yml')
444
- parameters = [
445
- {
446
- parameter_key: "Environment",
447
- parameter_value: "qa"
448
- },
449
- {
450
- parameter_key: "ReleaseVersion",
451
- parameter_value: @projects["legion"]['revision']
452
- },
453
- {
454
- parameter_key: "TaskDesiredCount",
455
- parameter_value: "1"
456
- },
457
- {
458
- parameter_key: "ECSClusterName",
459
- parameter_value: get_ecs_cluster_name
460
- },
461
- {
462
- parameter_key: "HostnamePattern",
463
- parameter_value: "legion-#{get_deploy_id}.qa.colaster.com"
464
- },
465
- {
466
- parameter_key: "HostnamePatternPriority",
467
- parameter_value: hostname_pattern_priority
468
- }
469
- ]
470
- if stack_exists?(stack_name_legion)
471
- cur_version = get_currently_deployed_version(stack_name_legion)
472
- update_stack(stack_name_legion, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["legion"]['revision'])
473
- else
474
- create_stack(stack_name_legion, stack_body, parameters, @tags, @cf_role)
475
- end
476
- end
477
-
478
- def create_urania_stack()
479
- wait_for_artifact('prima-artifacts-encrypted', "microservices/urania/#{@projects["urania"]['revision']}-qa.tar.gz")
480
- stack_name_urania = get_stack_name("urania")
481
- git_checkout_version('urania', @projects["urania"]['revision'])
482
- stack_body = File.read('projects/urania/deploy/task.yml')
483
- parameters = [
484
- {
485
- parameter_key: "Environment",
486
- parameter_value: "qa"
487
- },
488
- {
489
- parameter_key: "ReleaseVersion",
490
- parameter_value: @projects["urania"]['revision']
491
- },
492
- {
493
- parameter_key: "TaskDesiredCount",
494
- parameter_value: "1"
495
- },
496
- {
497
- parameter_key: "ECSClusterName",
498
- parameter_value: get_ecs_cluster_name
499
- },
500
- {
501
- parameter_key: "HostnamePattern",
502
- parameter_value: "urania-#{get_deploy_id}.qa.colaster.com"
503
- },
504
- {
505
- parameter_key: "HostnamePatternPriority",
506
- parameter_value: hostname_pattern_priority
507
- }
508
- ]
509
- if stack_exists?(stack_name_urania)
510
- cur_version = get_currently_deployed_version(stack_name_urania)
511
- update_stack(stack_name_urania, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["urania"]['revision'])
512
- else
513
- create_stack(stack_name_urania, stack_body, parameters, @tags, @cf_role)
514
- end
515
- end
516
-
517
- def create_ermes_stack()
518
- wait_for_artifact('prima-artifacts-encrypted', "microservices/ermes/#{@projects["ermes"]['revision']}-qa.tar.gz")
519
- stack_name_ermes = get_stack_name("ermes")
520
- git_checkout_version('ermes', @projects["ermes"]['revision'])
521
- stack_body = File.read('projects/ermes/deploy/task.yml')
522
- parameters = [
523
- {
524
- parameter_key: "Environment",
525
- parameter_value: "qa"
526
- },
527
- {
528
- parameter_key: "ReleaseVersion",
529
- parameter_value: "#{@projects['ermes']['revision']}"
530
- },
531
- {
532
- parameter_key: "TaskDesiredCount",
533
- parameter_value: "1"
534
- },
535
- {
536
- parameter_key: "ECSClusterName",
537
- parameter_value: get_ecs_cluster_name
538
- },
539
- {
540
- parameter_key: "HostnamePattern",
541
- parameter_value: "ermes-#{get_deploy_id}.qa.colaster.com"
542
- },
543
- {
544
- parameter_key: "HostnamePatternPriority",
545
- parameter_value: hostname_pattern_priority
546
- },
547
- {
548
- parameter_key: "WebHost",
549
- parameter_value: get_route53_hostname('ecs-task-web-qa-notneeded')
550
- },
551
- {
552
- parameter_key: "PeanoHost",
553
- parameter_value: get_route53_hostname('ecs-task-peano-qa-notneeded')
554
- }
555
- ]
556
- if stack_exists?(stack_name_ermes)
557
- cur_version = get_currently_deployed_version(stack_name_ermes)
558
- update_stack(stack_name_ermes, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["ermes"]['revision'])
559
- else
560
- create_stack(stack_name_ermes, stack_body, parameters, @tags, @cf_role)
561
- end
562
-
563
- stack_name_ermes = get_stack_name("worker-ermes")
564
- stack_body = File.read('projects/ermes/deploy/task-worker.yml')
565
- parameters = [
566
- {
567
- parameter_key: "Environment",
568
- parameter_value: "qa"
569
- },
570
- {
571
- parameter_key: "ReleaseVersion",
572
- parameter_value: "#{@projects['ermes']['revision']}"
573
- },
574
- {
575
- parameter_key: "TaskDesiredCount",
576
- parameter_value: "1"
577
- },
578
- {
579
- parameter_key: "ECSClusterName",
580
- parameter_value: get_ecs_cluster_name
581
- },
582
- {
583
- parameter_key: "WebHost",
584
- parameter_value: get_route53_hostname('ecs-task-web-qa-notneeded')
585
- },
586
- {
587
- parameter_key: "PeanoHost",
588
- parameter_value: get_route53_hostname('ecs-task-peano-qa-notneeded')
589
- }
590
- ]
591
- if stack_exists?(stack_name_ermes)
592
- cur_version = get_currently_deployed_version(stack_name_ermes)
593
- update_stack(stack_name_ermes, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["ermes"]['revision'])
594
- else
595
- create_stack(stack_name_ermes, stack_body, parameters, @tags, @cf_role)
596
- end
597
- end
598
-
599
- def create_bburago_stack()
600
- wait_for_artifact('prima-artifacts-encrypted', "microservices/bburago/#{@projects["bburago"]['revision']}-qa.tar.gz")
601
-
602
- stack_name_bburago = get_stack_name("bburago")
603
- git_checkout_version('bburago', @projects["bburago"]['revision'])
604
- stack_body = File.read('projects/bburago/deploy/task.yml')
605
- parameters = [
606
- {
607
- parameter_key: "Environment",
608
- parameter_value: "qa"
609
- },
610
- {
611
- parameter_key: "ReleaseVersion",
612
- parameter_value: @projects["bburago"]['revision']
613
- },
614
- {
615
- parameter_key: "ECSClusterName",
616
- parameter_value: get_ecs_cluster_name
617
- },
618
- {
619
- parameter_key: "TaskDesiredCount",
620
- parameter_value: "1"
621
- },
622
- {
623
- parameter_key: "HostnamePattern",
624
- parameter_value: "bburago-#{get_deploy_id}.qa.colaster.com"
625
- },
626
- {
627
- parameter_key: "HostnamePatternPriority",
628
- parameter_value: hostname_pattern_priority
629
- }
630
- ]
631
- if stack_exists?(stack_name_bburago)
632
- cur_version = get_currently_deployed_version(stack_name_bburago)
633
- update_stack(stack_name_bburago, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["bburago"]['revision'])
634
- else
635
- create_stack(stack_name_bburago, stack_body, parameters, @tags, @cf_role)
636
- end
637
- end
638
-
639
- def create_hal9000_stack()
640
- wait_for_artifact('prima-artifacts-encrypted', "microservices/hal9000/#{@projects["hal9000"]['revision']}-qa.tar.gz")
641
-
642
- stack_name_hal9000 = get_stack_name("hal9000")
643
- git_checkout_version('hal9000', @projects["hal9000"]['revision'])
644
- stack_body = File.read('projects/hal9000/deploy/task.yml')
645
- parameters = [
646
- {
647
- parameter_key: "Environment",
648
- parameter_value: "qa"
649
- },
650
- {
651
- parameter_key: "ReleaseVersion",
652
- parameter_value: @projects["hal9000"]['revision']
653
- },
654
- {
655
- parameter_key: "ECSClusterName",
656
- parameter_value: get_ecs_cluster_name
657
- },
658
- {
659
- parameter_key: "TaskDesiredCount",
660
- parameter_value: "1"
661
- },
662
- {
663
- parameter_key: "HostnamePattern",
664
- parameter_value: "hal9000-#{get_deploy_id}.qa.colaster.com"
665
- },
666
- {
667
- parameter_key: "HostnamePatternPriority",
668
- parameter_value: hostname_pattern_priority
669
- }
670
- ]
671
- if stack_exists?(stack_name_hal9000)
672
- cur_version = get_currently_deployed_version(stack_name_hal9000)
673
- update_stack(stack_name_hal9000, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["hal9000"]['revision'])
674
- else
675
- create_stack(stack_name_hal9000, stack_body, parameters, @tags, @cf_role)
676
- end
677
- end
678
-
679
- def create_fidaty_stack()
680
- wait_for_artifact('prima-artifacts-encrypted', "microservices/fidaty/#{@projects["fidaty"]['revision']}-qa.tar.gz")
681
-
682
- stack_name_fidaty = get_stack_name("fidaty")
683
- git_checkout_version('fidaty', @projects["fidaty"]['revision'])
684
- stack_body = File.read('projects/fidaty/deploy/task.yml')
685
- parameters = [
686
- {
687
- parameter_key: "Environment",
688
- parameter_value: "qa"
689
- },
690
- {
691
- parameter_key: "ReleaseVersion",
692
- parameter_value: "#{@projects["fidaty"]['revision']}"
693
- },
694
- {
695
- parameter_key: "ECSClusterName",
696
- parameter_value: get_ecs_cluster_name
697
- },
698
- {
699
- parameter_key: "TaskDesiredCount",
700
- parameter_value: "1"
701
- },
702
- {
703
- parameter_key: "HostnamePattern",
704
- parameter_value: "fidaty-#{get_deploy_id}.qa.colaster.com"
705
- },
706
- {
707
- parameter_key: "HostnamePatternPriority",
708
- parameter_value: hostname_pattern_priority
709
- },
710
- {
711
- parameter_key: "PeanoHost",
712
- parameter_value: get_route53_hostname("ecs-task-peano-qa-notneeded")
713
- }
714
- ]
715
- if stack_exists?(stack_name_fidaty)
716
- cur_version = get_currently_deployed_version(stack_name_fidaty)
717
- update_stack(stack_name_fidaty, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["fidaty"]['revision'])
718
- else
719
- create_stack(stack_name_fidaty, stack_body, parameters, @tags, @cf_role)
720
- end
721
- end
722
-
723
- def create_peano_stack()
724
- wait_for_artifact('prima-artifacts-encrypted', "microservices/peano/#{@projects["peano"]['revision']}-qa.tar.gz")
725
-
726
- stack_name_peano = get_stack_name("peano")
727
- git_checkout_version('peano', @projects["peano"]['revision'])
728
- stack_body = File.read('projects/peano/deploy/task.yml')
729
- parameters = [
730
- {
731
- parameter_key: "Environment",
732
- parameter_value: "qa"
733
- },
734
- {
735
- parameter_key: "ReleaseVersion",
736
- parameter_value: "#{@projects['peano']['revision']}"
737
- },
738
- {
739
- parameter_key: "ECSClusterName",
740
- parameter_value: get_ecs_cluster_name
741
- },
742
- {
743
- parameter_key: "TaskDesiredCount",
744
- parameter_value: "1"
745
- },
746
- {
747
- parameter_key: "HostnamePattern",
748
- parameter_value: "peano-#{get_deploy_id}.qa.colaster.com"
749
- },
750
- {
751
- parameter_key: "HostnamePatternPriority",
752
- parameter_value: hostname_pattern_priority
753
- },
754
- {
755
- parameter_key: "WebHost",
756
- parameter_value: "www-#{get_deploy_id}.qa.colaster.com"
757
- }
758
- ]
759
- if stack_exists?(stack_name_peano)
760
- cur_version = get_currently_deployed_version(stack_name_peano)
761
- update_stack(stack_name_peano, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["peano"]['revision'])
762
- else
763
- create_stack(stack_name_peano, stack_body, parameters, @tags, @cf_role)
764
- end
765
- end
766
-
767
- def create_assange_stack()
768
- wait_for_artifact('prima-artifacts-encrypted', "microservices/assange/#{@projects["assange"]['revision']}-qa.tar.gz")
769
-
770
- stack_name_assange = get_stack_name("assange")
771
- git_checkout_version('assange', @projects["assange"]['revision'])
772
- stack_body = IO.read('projects/assange/deploy/task.yml')
773
- parameters = [
774
- {
775
- parameter_key: "Environment",
776
- parameter_value: "qa"
777
- },
778
- {
779
- parameter_key: "ReleaseVersion",
780
- parameter_value: "#{@projects["assange"]['revision']}"
781
- },
782
- {
783
- parameter_key: "ECSClusterName",
784
- parameter_value: get_ecs_cluster_name
785
- },
786
- {
787
- parameter_key: "TaskDesiredCount",
788
- parameter_value: "1"
789
- },
790
- {
791
- parameter_key: "ALBShortName",
792
- parameter_value: "assange-qa-#{get_deploy_id}"[0..27]
793
- },
794
- {
795
- parameter_key: "HostnamePattern",
796
- parameter_value: "assange-#{get_deploy_id}.qa.colaster.com"
797
- },
798
- {
799
- parameter_key: "HostnamePatternPriority",
800
- parameter_value: (hostname_pattern_priority.to_i + 20).to_s
801
- },
802
- {
803
- parameter_key: "EnvHash",
804
- parameter_value: get_deploy_id
805
- },
806
- {
807
- parameter_key: "WebHost",
808
- parameter_value: "www-#{get_deploy_id}.qa.colaster.com"
809
- },
810
- {
811
- parameter_key: "AssangeHost",
812
- parameter_value: "assange-#{get_deploy_id}.qa.colaster.com"
813
- }
814
- ]
815
- if stack_exists?(stack_name_assange)
816
- cur_version = get_currently_deployed_version(stack_name_assange)
817
- update_stack(stack_name_assange, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["assange"]['revision'])
818
- else
819
- create_stack(stack_name_assange, stack_body, parameters, @tags, @cf_role)
820
- end
821
-
822
- stack_name_assange_worker = get_stack_name("assange-worker")
823
- git_checkout_version('assange', @projects["assange"]['revision'])
824
- stack_body = IO.read('projects/assange/deploy/task-worker.yml')
825
- parameters = [
826
- {
827
- parameter_key: "Environment",
828
- parameter_value: "qa"
829
- },
830
- {
831
- parameter_key: "ReleaseVersion",
832
- parameter_value: "#{@projects["assange"]['revision']}"
833
- },
834
- {
835
- parameter_key: "ECSClusterName",
836
- parameter_value: get_ecs_cluster_name
837
- },
838
- {
839
- parameter_key: "TaskDesiredCount",
840
- parameter_value: "1"
841
- },
842
- {
843
- parameter_key: "WebHost",
844
- parameter_value: "www-#{get_deploy_id}.qa.colaster.com"
845
- },
846
- {
847
- parameter_key: "AssangeHost",
848
- parameter_value: "assange-#{get_deploy_id}.qa.colaster.com"
849
- }
850
- ]
851
- if stack_exists?(stack_name_assange_worker)
852
- cur_version = get_currently_deployed_version(stack_name_assange_worker)
853
- update_stack(stack_name_assange_worker, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["assange"]['revision'])
854
- else
855
- create_stack(stack_name_assange_worker, stack_body, parameters, @tags, @cf_role)
856
- end
857
- end
858
-
859
- def create_leftorium_stack()
860
- wait_for_artifact('prima-artifacts-encrypted', "microservices/leftorium/#{@projects["leftorium"]['revision']}-qa.tar.gz")
861
-
862
- stack_name_leftorium = get_stack_name("leftorium")
863
- git_checkout_version('leftorium', @projects["leftorium"]['revision'])
864
- stack_body = File.read('projects/leftorium/deploy/task.yml')
865
- parameters = [
866
- {
867
- parameter_key: "Environment",
868
- parameter_value: "qa"
869
- },
870
- {
871
- parameter_key: "ReleaseVersion",
872
- parameter_value: "#{@projects["leftorium"]['revision']}"
873
- },
874
- {
875
- parameter_key: "ECSClusterName",
876
- parameter_value: get_ecs_cluster_name
877
- },
878
- {
879
- parameter_key: "TaskDesiredCount",
880
- parameter_value: "1"
881
- },
882
- {
883
- parameter_key: "HostnamePattern",
884
- parameter_value: "leftorium-#{get_deploy_id}.qa.colaster.com"
885
- },
886
- {
887
- parameter_key: "HostnamePatternPriority",
888
- parameter_value: hostname_pattern_priority
889
- }
890
- ]
891
- if stack_exists?(stack_name_leftorium)
892
- cur_version = get_currently_deployed_version(stack_name_leftorium)
893
- update_stack(stack_name_leftorium, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["leftorium"]['revision'])
894
- else
895
- create_stack(stack_name_leftorium, stack_body, parameters, @tags, @cf_role)
896
- end
897
- end
898
-
899
- def create_rachele_stack()
900
- wait_for_artifact('prima-artifacts-encrypted', "microservices/rachele/#{@projects["rachele"]['revision']}-qa.tar.gz")
901
-
902
- stack_name_rachele = get_stack_name("rachele")
903
- git_checkout_version('rachele', @projects["rachele"]['revision'])
904
- stack_body = File.read('projects/rachele/deploy/task.yml')
905
- parameters = [
906
- {
907
- parameter_key: "Environment",
908
- parameter_value: "qa"
909
- },
910
- {
911
- parameter_key: "ReleaseVersion",
912
- parameter_value: "#{@projects["rachele"]['revision']}"
913
- },
914
- {
915
- parameter_key: "ECSClusterName",
916
- parameter_value: get_ecs_cluster_name
917
- },
918
- {
919
- parameter_key: "TaskDesiredCount",
920
- parameter_value: "1"
921
- },
922
- {
923
- parameter_key: "EnvHash",
924
- parameter_value: get_deploy_id
925
- },
926
- {
927
- parameter_key: "WebHost",
928
- parameter_value: "www-#{get_deploy_id}.qa.colaster.com"
929
- },
930
- {
931
- parameter_key: "HostnamePattern",
932
- parameter_value: "rachele-#{get_deploy_id}.qa.colaster.com"
933
- },
934
- {
935
- parameter_key: "HostnamePatternPriority",
936
- parameter_value: hostname_pattern_priority
937
- }
938
- ]
939
- if stack_exists?(stack_name_rachele)
940
- cur_version = get_currently_deployed_version(stack_name_rachele)
941
- unless cur_version.include?(@projects["rachele"]['revision'])
942
- delete_stack(stack_name_rachele)
943
- wait_for_stack_removal(stack_name_rachele)
944
- create_stack(stack_name_rachele, stack_body, parameters, @tags, @cf_role)
945
- end
946
- else
947
- create_stack(stack_name_rachele, stack_body, parameters, @tags, @cf_role)
948
- end
949
- end
950
-
951
- def create_borat_stack()
952
- wait_for_artifact('prima-artifacts-encrypted', "microservices/borat/#{@projects["borat"]['revision']}-qa.tar.gz")
953
-
954
- stack_name_borat = get_stack_name("borat")
955
- git_checkout_version('borat', @projects["borat"]['revision'])
956
- stack_body = IO.read('projects/borat/deploy/task.yml')
957
- parameters = [
958
- {
959
- parameter_key: "Environment",
960
- parameter_value: "qa"
961
- },
962
- {
963
- parameter_key: "ReleaseVersion",
964
- parameter_value: "#{@projects["borat"]['revision']}"
965
- },
966
- {
967
- parameter_key: "ECSClusterName",
968
- parameter_value: get_ecs_cluster_name
969
- },
970
- {
971
- parameter_key: "TaskDesiredCount",
972
- parameter_value: "1"
973
- },
974
- {
975
- parameter_key: "ALBShortName",
976
- parameter_value: "borat-qa-#{get_deploy_id}"[0..27]
977
- },
978
- {
979
- parameter_key: "HostnamePattern",
980
- parameter_value: "backoffice-#{get_deploy_id}.qa.colaster.com"
981
- },
982
- {
983
- parameter_key: "HostnamePatternPriority",
984
- parameter_value: (hostname_pattern_priority.to_i + 30).to_s
985
- },
986
- {
987
- parameter_key: "EnvHash",
988
- parameter_value: get_deploy_id
989
- },
990
- {
991
- parameter_key: "WsEndpoint",
992
- parameter_value: "wss://backoffice-#{get_deploy_id}.qa.colaster.com/socket/websocket?vsn=1.0.0"
993
- },
994
- {
995
- parameter_key: "GraphqlEndpoint",
996
- parameter_value: "https://backoffice-#{get_deploy_id}.qa.colaster.com/graphql"
997
- },
998
- {
999
- parameter_key: "GraphqlInsuranceEndpoint",
1000
- parameter_value: "https://backoffice-#{get_deploy_id}.qa.colaster.com/graphql/insurance"
1001
- },
1002
- {
1003
- parameter_key: "AuthEndpoint",
1004
- parameter_value: "https://backoffice-#{get_deploy_id}.qa.colaster.com/auth"
1005
- },
1006
- {
1007
- parameter_key: "FrontendEndpoint",
1008
- parameter_value: "https://www-#{get_deploy_id}.qa.colaster.com/"
1009
- }
1010
- ]
1011
- if stack_exists?(stack_name_borat)
1012
- cur_version = get_currently_deployed_version(stack_name_borat)
1013
- update_stack(stack_name_borat, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["borat"]['revision'])
1014
- else
1015
- create_stack(stack_name_borat, stack_body, parameters, @tags, @cf_role)
1016
- end
1017
- end
1018
-
1019
- def create_crash_stack()
1020
- wait_for_artifact('prima-artifacts-encrypted', "microservices/crash/#{@projects['crash']['revision']}-qa.tar.gz")
1021
-
1022
- stack_name_crash = get_stack_name("crash")
1023
- git_checkout_version('crash', @projects['crash']['revision'])
1024
- stack_body = IO.read('projects/crash/deploy/task.yml')
1025
- parameters = [
1026
- {
1027
- parameter_key: 'Environment',
1028
- parameter_value: 'qa'
1029
- },
1030
- {
1031
- parameter_key: 'ReleaseVersion',
1032
- parameter_value: "#{@projects['crash']['revision']}"
1033
- },
1034
- {
1035
- parameter_key: 'TaskDesiredCount',
1036
- parameter_value: '1'
1037
- },
1038
- {
1039
- parameter_key: 'ECSClusterName',
1040
- parameter_value: get_ecs_cluster_name
1041
- },
1042
- {
1043
- parameter_key: 'ALBShortName',
1044
- parameter_value: "crash-qa-#{get_deploy_id}"[0..27]
1045
- },
1046
- {
1047
- parameter_key: 'HostnamePattern',
1048
- parameter_value: "crash-#{get_deploy_id}.qa.colaster.com"
1049
- },
1050
- {
1051
- parameter_key: 'HostnamePatternPriority',
1052
- parameter_value: (hostname_pattern_priority.to_i + 10).to_s
1053
- },
1054
- {
1055
- parameter_key: "EnvHash",
1056
- parameter_value: get_deploy_id
1057
- },
1058
- {
1059
- parameter_key: "WsEndpoint",
1060
- parameter_value: "wss://crash-#{get_deploy_id}.qa.colaster.com/socket/websocket?vsn=1.0.0"
1061
- },
1062
- {
1063
- parameter_key: "GraphqlEndpoint",
1064
- parameter_value: "https://crash-#{get_deploy_id}.qa.colaster.com/graphql"
1065
- },
1066
- {
1067
- parameter_key: "AuthDomain",
1068
- parameter_value: "https://www-#{get_deploy_id}.qa.colaster.com/"
1069
- },
1070
- ]
1071
- if stack_exists?(stack_name_crash)
1072
- cur_version = get_currently_deployed_version(stack_name_crash)
1073
- update_stack(stack_name_crash, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["crash"]['revision'])
1074
- else
1075
- create_stack(stack_name_crash, stack_body, parameters, @tags, @cf_role)
1076
- end
1077
- end
1078
-
1079
- def create_starsky_stack()
1080
- wait_for_artifact('prima-artifacts-encrypted', "microservices/starsky/#{@projects["starsky"]['revision']}-qa.tar.gz")
1081
-
1082
- git_checkout_version('starsky', @projects["starsky"]['revision'])
1083
- stack_name_starsky = get_stack_name("starsky")
1084
- stack_body = IO.read('projects/starsky/deploy/task.yml')
1085
- parameters = [
1086
- {
1087
- parameter_key: "Environment",
1088
- parameter_value: "qa"
1089
- },
1090
- {
1091
- parameter_key: "ReleaseVersion",
1092
- parameter_value: "#{@projects["starsky"]['revision']}"
1093
- },
1094
- {
1095
- parameter_key: "TaskDesiredCount",
1096
- parameter_value: "1"
1097
- },
1098
- {
1099
- parameter_key: "ECSClusterName",
1100
- parameter_value: get_ecs_cluster_name
1101
- },
1102
- {
1103
- parameter_key: "ALBShortName",
1104
- parameter_value: "starsky-qa-#{get_deploy_id}"[0..27]
1105
- },
1106
- {
1107
- parameter_key: "EnvHash",
1108
- parameter_value: get_deploy_id
1109
- },
1110
- {
1111
- parameter_key: "HostnamePattern",
1112
- parameter_value: "starsky-#{get_deploy_id}.qa.colaster.com"
1113
- },
1114
- {
1115
- parameter_key: "HostnamePatternPriority",
1116
- parameter_value: (hostname_pattern_priority.to_i + 74).to_s
1117
- }
1118
- ]
1119
- if stack_exists?(stack_name_starsky)
1120
- cur_version = get_currently_deployed_version(stack_name_starsky)
1121
- unless cur_version.include?(@projects["starsky"]['revision'])
1122
- delete_stack(stack_name_starsky)
1123
- wait_for_stack_removal(stack_name_starsky)
1124
- create_stack(stack_name_starsky, stack_body, parameters, @tags, @cf_role)
1125
- end
1126
- else
1127
- create_stack(stack_name_starsky, stack_body, parameters, @tags, @cf_role)
1128
- end
1129
- end
1130
-
1131
- def create_activia_stack()
1132
- wait_for_artifact('prima-artifacts-encrypted', "microservices/activia/#{@projects["activia"]['revision']}-qa.tar.gz")
1133
-
1134
- stack_name_activia = get_stack_name("activia")
1135
- git_checkout_version('activia', @projects["activia"]['revision'])
1136
- stack_body = File.read('projects/activia/deploy/task.yml')
1137
- parameters = [
1138
- {
1139
- parameter_key: "Environment",
1140
- parameter_value: "qa"
1141
- },
1142
- {
1143
- parameter_key: "ReleaseVersion",
1144
- parameter_value: "#{@projects["activia"]['revision']}"
1145
- },
1146
- {
1147
- parameter_key: "ECSClusterName",
1148
- parameter_value: get_ecs_cluster_name
1149
- },
1150
- {
1151
- parameter_key: "TaskDesiredCount",
1152
- parameter_value: "1"
1153
- },
1154
- {
1155
- parameter_key: "HostnamePattern",
1156
- parameter_value: "activia-#{get_deploy_id}.qa.colaster.com"
1157
- },
1158
- {
1159
- parameter_key: "HostnamePatternPriority",
1160
- parameter_value: hostname_pattern_priority
1161
- },
1162
- {
1163
- parameter_key: "WebHost",
1164
- parameter_value: get_route53_hostname('ecs-task-web-qa-notneeded')
1165
- },
1166
- {
1167
- parameter_key: "PeanoHost",
1168
- parameter_value: get_route53_hostname('ecs-task-peano-qa-notneeded')
1169
- }
1170
- ]
1171
- if stack_exists?(stack_name_activia)
1172
- cur_version = get_currently_deployed_version(stack_name_activia)
1173
- update_stack(stack_name_activia, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["activia"]['revision'])
1174
- else
1175
- create_stack(stack_name_activia, stack_body, parameters, @tags, @cf_role)
1176
- end
1177
- end
1178
-
1179
- def create_web_stack()
1180
- wait_for_artifact('prima-artifacts-encrypted', "prima/#{@projects["prima"]['revision']}.tar.gz")
1181
- # Waiting for prima healtcheck dependencies
1182
- wait_for_stack_ready(get_stack_name("skynet")) unless stack_ready?(get_stack_name("skynet"))
1183
- wait_for_stack_ready(get_stack_name("urania")) unless stack_ready?(get_stack_name("urania"))
1184
- wait_for_stack_ready(get_stack_name("bburago")) unless stack_ready?(get_stack_name("bburago"))
1185
- wait_for_stack_ready(get_stack_name("hal9000")) unless stack_ready?(get_stack_name("hal9000"))
1186
- wait_for_stack_ready(get_stack_name("assange")) unless stack_ready?(get_stack_name("assange"))
1187
- wait_for_stack_ready(get_stack_name("fidaty")) unless stack_ready?(get_stack_name("fidaty"))
1188
- wait_for_stack_ready(get_stack_name("leftorium")) unless stack_ready?(get_stack_name("leftorium"))
1189
- wait_for_stack_ready(get_stack_name("rachele")) unless stack_ready?(get_stack_name("rachele"))
1190
- stack_name_web = get_stack_name("web")
1191
- git_checkout_version('prima', @projects["prima"]['revision'])
1192
- stack_body = IO.read('projects/prima/app/cloudformation/tasks/web.yml')
1193
- parameters = [
1194
- {
1195
- parameter_key: "Environment",
1196
- parameter_value: "qa"
1197
- },
1198
- {
1199
- parameter_key: "ReleaseVersion",
1200
- parameter_value: "#{@projects["prima"]['revision']}"
1201
- },
1202
- {
1203
- parameter_key: "TaskDesiredCount",
1204
- parameter_value: "1"
1205
- },
1206
- {
1207
- parameter_key: "ECSClusterName",
1208
- parameter_value: get_ecs_cluster_name
1209
- },
1210
- {
1211
- parameter_key: "ALBShortName",
1212
- parameter_value: "web-qa-#{get_deploy_id}"[0..27]
1213
- },
1214
- {
1215
- parameter_key: "HostnamePatternPriority",
1216
- parameter_value: hostname_pattern_priority
1217
- },
1218
- {
1219
- parameter_key: "HostnamePatternAggregatorPriority",
1220
- parameter_value: (hostname_pattern_priority.to_i + 1).to_s
1221
- },
1222
- {
1223
- parameter_key: "EnvHash",
1224
- parameter_value: get_deploy_id
1225
- },
1226
- {
1227
- parameter_key: "HostnamePattern",
1228
- parameter_value: "www-#{get_deploy_id}.*"
1229
- }
1230
- ]
1231
- if stack_exists?(stack_name_web)
1232
- cur_version = get_currently_deployed_version(stack_name_web)
1233
- update_stack(stack_name_web, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
1234
- else
1235
- create_stack(stack_name_web, stack_body, parameters, @tags, @cf_role)
1236
- end
1237
- end
1238
-
1239
- def create_consumer_stack()
1240
- wait_for_artifact('prima-artifacts-encrypted', "prima/#{@projects["prima"]['revision']}.tar.gz")
1241
- # Waiting for prima healtcheck dependencies
1242
- wait_for_stack_ready(get_stack_name("skynet")) unless stack_ready?(get_stack_name("skynet"))
1243
- wait_for_stack_ready(get_stack_name("urania")) unless stack_ready?(get_stack_name("urania"))
1244
- wait_for_stack_ready(get_stack_name("bburago")) unless stack_ready?(get_stack_name("bburago"))
1245
- wait_for_stack_ready(get_stack_name("hal9000")) unless stack_ready?(get_stack_name("hal9000"))
1246
- wait_for_stack_ready(get_stack_name("assange")) unless stack_ready?(get_stack_name("assange"))
1247
- wait_for_stack_ready(get_stack_name("fidaty")) unless stack_ready?(get_stack_name("fidaty"))
1248
- wait_for_stack_ready(get_stack_name("leftorium")) unless stack_ready?(get_stack_name("leftorium"))
1249
- wait_for_stack_ready(get_stack_name("rachele")) unless stack_ready?(get_stack_name("rachele"))
1250
- stack_name_consumer = get_stack_name("consumer")
1251
- git_checkout_version('prima', @projects["prima"]['revision'])
1252
- stack_body = IO.read('projects/prima/app/cloudformation/tasks/consumer.yml')
1253
- parameters = [
1254
- {
1255
- parameter_key: "Environment",
1256
- parameter_value: "qa"
1257
- },
1258
- {
1259
- parameter_key: "ReleaseVersion",
1260
- parameter_value: "#{@projects["prima"]['revision']}"
1261
- },
1262
- {
1263
- parameter_key: "ECSClusterName",
1264
- parameter_value: get_ecs_cluster_name
1265
- },
1266
- {
1267
- parameter_key: "EnvHash",
1268
- parameter_value: get_deploy_id
1269
- }
1270
- ]
1271
- if stack_exists?(stack_name_consumer)
1272
- cur_version = get_currently_deployed_version(stack_name_consumer)
1273
- update_stack(stack_name_consumer, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
1274
- else
1275
- create_stack(stack_name_consumer, stack_body, parameters, @tags, @cf_role)
1276
- end
1277
-
1278
- stack_name_consumer_api = get_stack_name("consumer-api")
1279
- stack_body = IO.read('projects/prima/app/cloudformation/tasks/consumer-api.yml')
1280
- parameters = [
1281
- {
1282
- parameter_key: "Environment",
1283
- parameter_value: "qa"
1284
- },
1285
- {
1286
- parameter_key: "ReleaseVersion",
1287
- parameter_value: "#{@projects["prima"]['revision']}"
1288
- },
1289
- {
1290
- parameter_key: "ECSClusterName",
1291
- parameter_value: get_ecs_cluster_name
1292
- },
1293
- {
1294
- parameter_key: "EnvHash",
1295
- parameter_value: get_deploy_id
1296
- },
1297
- {
1298
- parameter_key: "HostnamePattern",
1299
- parameter_value: "consumer-#{get_deploy_id}.qa.colaster.com"
1300
- }
1301
- ]
1302
- if stack_exists?(stack_name_consumer_api)
1303
- cur_version = get_currently_deployed_version(stack_name_consumer_api)
1304
- update_stack(stack_name_consumer_api, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["prima"]['revision'])
1305
- else
1306
- create_stack(stack_name_consumer_api, stack_body, parameters, @tags, @cf_role)
1307
- end
1308
- end
1309
-
1310
- def create_roger_stack()
1311
- wait_for_artifact('prima-artifacts-encrypted', "microservices/roger/#{@projects["roger"]['revision']}-qa.tar.gz")
1312
- wait_for_stack_ready(get_stack_name("consumer")) unless stack_ready?(get_stack_name("consumer"))
1313
- stack_name_roger = "ecs-task-roger-qa-#{get_deploy_id}"
1314
- git_checkout_version('roger', @projects["roger"]['revision'])
1315
- stack_body = File.read('projects/roger/deploy/task.yml')
1316
- parameters = [
1317
- {
1318
- parameter_key: "Environment",
1319
- parameter_value: "qa"
1320
- },
1321
- {
1322
- parameter_key: "ReleaseVersion",
1323
- parameter_value: @projects["roger"]['revision']
1324
- },
1325
- {
1326
- parameter_key: "ECSClusterName",
1327
- parameter_value: get_ecs_cluster_name
1328
- },
1329
- {
1330
- parameter_key: "TaskDesiredCount",
1331
- parameter_value: '1'
1332
- }
1333
- ]
1334
- if stack_exists?(stack_name_roger)
1335
- cur_version = get_currently_deployed_version(stack_name_roger)
1336
- update_stack(stack_name_roger, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["roger"]['revision'])
1337
- else
1338
- create_stack(stack_name_roger, stack_body, parameters, @tags, @cf_role)
1339
- end
1340
- end
1341
-
1342
- def create_hutch_stack()
1343
- wait_for_artifact('prima-artifacts-encrypted', "microservices/hutch/#{@projects["hutch"]['revision']}-#{get_deploy_id[0..7]}-qa.tar.gz")
1344
- wait_for_stack_ready(get_stack_name("starsky")) unless stack_ready?(get_stack_name("starsky"))
1345
-
1346
- stack_name_hutch = get_stack_name("hutch")
1347
- git_checkout_version('hutch', @projects["hutch"]['revision'])
1348
- stack_body = File.read('projects/hutch/deploy/task.yml')
1349
- parameters = [
1350
- {
1351
- parameter_key: "Environment",
1352
- parameter_value: "qa"
1353
- },
1354
- {
1355
- parameter_key: "ReleaseVersion",
1356
- parameter_value: "#{@projects["hutch"]['revision']}-#{get_deploy_id[0..7]}"
1357
- },
1358
- {
1359
- parameter_key: "ALBShortName",
1360
- parameter_value: "hutch-qa-#{get_deploy_id}"[0..27]
1361
- },
1362
- {
1363
- parameter_key: "ECSClusterName",
1364
- parameter_value: get_ecs_cluster_name
1365
- },
1366
- {
1367
- parameter_key: "EnvHash",
1368
- parameter_value: get_deploy_id
1369
- },
1370
- {
1371
- parameter_key: "HostnamePattern",
1372
- parameter_value: "hutch-#{get_deploy_id}.qa.colaster.com"
1373
- },
1374
- {
1375
- parameter_key: "HostnamePatternPriority",
1376
- parameter_value: (hostname_pattern_priority.to_i + 254).to_s
1377
- },
1378
- {
1379
- parameter_key: "ApiUrl",
1380
- parameter_value: "https://#{get_route53_hostname('maia-intermediari')}"
1381
- }
1382
- ]
1383
- if stack_exists?(stack_name_hutch)
1384
- cur_version = get_currently_deployed_version(stack_name_hutch)
1385
- update_stack(stack_name_hutch, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["hutch"]['revision'])
1386
- else
1387
- create_stack(stack_name_hutch, stack_body, parameters, @tags, @cf_role)
1388
- end
1389
- end
1390
-
1391
- def create_maia_stack()
1392
- wait_for_artifact('prima-artifacts-encrypted', "microservices/maia/#{@projects["maia"]['revision']}-qa.tar.gz")
1393
- stack_name_maia = get_stack_name("maia")
1394
- git_checkout_version('maia', @projects["maia"]['revision'])
1395
- stack_body = File.read('projects/maia/deploy/task.yml')
1396
- parameters = [
1397
- {
1398
- parameter_key: "Environment",
1399
- parameter_value: "qa"
1400
- },
1401
- {
1402
- parameter_key: "ReleaseVersion",
1403
- parameter_value: "#{@projects["maia"]['revision']}"
1404
- },
1405
- {
1406
- parameter_key: "ALBShortName",
1407
- parameter_value: "maia-qa-#{get_deploy_id}"[0..15]
1408
- },
1409
- {
1410
- parameter_key: "ECSClusterName",
1411
- parameter_value: get_ecs_cluster_name
1412
- },
1413
- {
1414
- parameter_key: "EnvHash",
1415
- parameter_value: get_deploy_id
1416
- },
1417
- {
1418
- parameter_key: "HostnamePatternPublic",
1419
- parameter_value: "api*-#{get_deploy_id}.qa.colaster.com"
1420
- },
1421
- {
1422
- parameter_key: "HostnamePatternPriority",
1423
- parameter_value: (hostname_pattern_priority.to_i + 128).to_s
1424
- },
1425
- {
1426
- parameter_key: "ProxyHostnameIntermediari",
1427
- parameter_value: "api-intermediari-#{get_deploy_id}.qa.colaster.com"
1428
- },
1429
- {
1430
- parameter_key: "ProxyHostnameApp",
1431
- parameter_value: "api-#{get_deploy_id}.qa.colaster.com"
1432
- }
1433
- ]
1434
- if stack_exists?(stack_name_maia)
1435
- cur_version = get_currently_deployed_version(stack_name_maia)
1436
- update_stack(stack_name_maia, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["maia"]['revision'])
1437
- else
1438
- create_stack(stack_name_maia, stack_body, parameters, @tags, @cf_role)
1439
- end
1440
- end
1441
-
1442
- def create_vianello_stack()
1443
- if deploy_vianello_or_domus?
1444
- wait_for_artifact('prima-artifacts-encrypted', "microservices/vianello/#{@projects["vianello"]['revision']}-qa.tar.gz")
1445
- stack_name_vianello = "ecs-task-vianello-qa-#{get_deploy_id}"
1446
- git_checkout_version('vianello', @projects["vianello"]['revision'])
1447
- stack_body = File.read('projects/vianello/deploy/task.yml')
1448
- parameters = [
1449
- {
1450
- parameter_key: "Environment",
1451
- parameter_value: "qa"
1452
- },
1453
- {
1454
- parameter_key: "ReleaseVersion",
1455
- parameter_value: @projects["vianello"]['revision']
1456
- },
1457
- {
1458
- parameter_key: "ECSClusterName",
1459
- parameter_value: get_ecs_cluster_name
1460
- },
1461
- {
1462
- parameter_key: "TaskDesiredCount",
1463
- parameter_value: '1'
1464
- },
1465
- {
1466
- parameter_key: "HostnamePattern",
1467
- parameter_value: "vianello-#{get_deploy_id}.qa.colaster.com"
1468
- },
1469
- {
1470
- parameter_key: "HostnamePatternPriority",
1471
- parameter_value: (hostname_pattern_priority.to_i + 254).to_s
1472
- },
1473
- {
1474
- parameter_key: "ECSClusterName",
1475
- parameter_value: get_ecs_cluster_name
1476
- },
1477
- {
1478
- parameter_key: "ALBShortName",
1479
- parameter_value: "vianello-qa-#{get_deploy_id}"[0..27]
1480
- },
1481
- {
1482
- parameter_key: "EnvHash",
1483
- parameter_value: get_deploy_id
1484
- }
1485
- ]
1486
- if stack_exists?(stack_name_vianello)
1487
- cur_version = get_currently_deployed_version(stack_name_vianello)
1488
- update_stack(stack_name_vianello, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["vianello"]['revision'])
1489
- else
1490
- create_stack(stack_name_vianello, stack_body, parameters, @tags, @cf_role)
1491
- end
1492
- else
1493
- true
1494
- end
1495
- end
1496
-
1497
- def create_domus_stack()
1498
- if deploy_vianello_or_domus?
1499
- wait_for_artifact('prima-artifacts-encrypted', "microservices/domus/#{@projects["domus"]['revision']}-#{get_deploy_id[0..7]}-qa.tar.gz")
1500
- wait_for_stack_ready(get_stack_name("vianello")) unless stack_ready?(get_stack_name("vianello"))
1501
-
1502
- stack_name_domus = get_stack_name("domus")
1503
- git_checkout_version('domus', @projects["domus"]['revision'])
1504
- stack_body = File.read('projects/domus/deploy/task.yml')
1505
- parameters = [
1506
- {
1507
- parameter_key: "Environment",
1508
- parameter_value: "qa"
1509
- },
1510
- {
1511
- parameter_key: "ReleaseVersion",
1512
- parameter_value: "#{@projects["domus"]['revision']}-#{get_deploy_id[0..7]}"
1513
- },
1514
- {
1515
- parameter_key: "ALBShortName",
1516
- parameter_value: "domus-qa-#{get_deploy_id}"[0..27]
1517
- },
1518
- {
1519
- parameter_key: "ECSClusterName",
1520
- parameter_value: get_ecs_cluster_name
1521
- },
1522
- {
1523
- parameter_key: "EnvHash",
1524
- parameter_value: get_deploy_id
1525
- },
1526
- {
1527
- parameter_key: "HostnamePattern",
1528
- parameter_value: "domus-#{get_deploy_id}.qa.colaster.com"
1529
- },
1530
- {
1531
- parameter_key: "HostnamePatternPriority",
1532
- parameter_value: (hostname_pattern_priority.to_i + 254).to_s
1533
- },
1534
- {
1535
- parameter_key: "ApiUrl",
1536
- parameter_value: "https://#{get_route53_hostname('vianello')}"
1537
- }
1538
- ]
1539
- if stack_exists?(stack_name_domus)
1540
- cur_version = get_currently_deployed_version(stack_name_domus)
1541
- update_stack(stack_name_domus, stack_body, parameters, @tags, @cf_role) unless cur_version.include?(@projects["domus"]['revision'])
1542
- else
1543
- create_stack(stack_name_domus, stack_body, parameters, @tags, @cf_role)
1544
- end
1545
- else
1546
- true
1547
- end
1548
- end
1549
-
1550
- def create_rogoreport_stack()
1551
- true
1552
- end
1553
-
1554
- def complete_qa_setup!()
1555
- wait_for_stack_ready(get_stack_name("web")) unless stack_ready?(get_stack_name("web"))
1556
- wait_for_stack_ready(get_stack_name("consumer")) unless stack_ready?(get_stack_name("consumer"))
1557
- wait_for_stack_ready(get_stack_name("worker-ermes")) unless stack_ready?(get_stack_name("worker-ermes"))
1558
- wait_for_stack_ready(get_stack_name("ermes")) unless stack_ready?(get_stack_name("ermes"))
1559
- wait_for_stack_ready(get_stack_name("peano")) unless stack_ready?(get_stack_name("peano"))
1560
- wait_for_stack_ready(get_stack_name("legion")) unless stack_ready?(get_stack_name("legion"))
1561
- wait_for_stack_ready(get_stack_name("borat")) unless stack_ready?(get_stack_name("borat"))
1562
- wait_for_stack_ready(get_stack_name("activia")) unless stack_ready?(get_stack_name("activia"))
1563
- wait_for_stack_ready(get_stack_name("maia")) unless stack_ready?(get_stack_name("maia"))
1564
- wait_for_stack_ready(get_stack_name("crash")) unless stack_ready?(get_stack_name("crash"))
1565
- wait_for_stack_ready(get_stack_name("hutch")) unless stack_ready?(get_stack_name("hutch"))
1566
- if deploy_vianello_or_domus?
1567
- wait_for_stack_ready(get_stack_name("vianello")) unless stack_ready?(get_stack_name("vianello"))
1568
- wait_for_stack_ready(get_stack_name("domus")) unless stack_ready?(get_stack_name("domus"))
1569
- end
1570
-
1571
- update_service_defaults(get_stack_name("web"))
1572
- update_service_defaults(get_stack_name("consumer-api"))
1573
- update_service_defaults(get_stack_name("urania"))
1574
- update_service_defaults(get_stack_name("worker-ermes"))
1575
- update_service_defaults(get_stack_name("ermes"))
1576
- update_service_defaults(get_stack_name("bburago"))
1577
- update_service_defaults(get_stack_name("hal9000"))
1578
- update_service_defaults(get_stack_name("fidaty"))
1579
- update_service_defaults(get_stack_name("peano"))
1580
- # update_service_defaults(get_stack_name("legion")) TODO UNCOMMENT
1581
- update_service_defaults(get_stack_name("assange"))
1582
- update_service_defaults(get_stack_name("borat"))
1583
- update_service_defaults(get_stack_name("activia"))
1584
- update_service_defaults(get_stack_name("skynet"))
1585
- update_service_defaults(get_stack_name("leftorium"))
1586
- update_service_defaults(get_stack_name("rachele"))
1587
- update_service_defaults(get_stack_name("maia"))
1588
- update_service_defaults(get_stack_name("starsky"))
1589
- update_service_defaults(get_stack_name("hutch"))
1590
- update_service_defaults(get_stack_name("crash"))
1591
- if deploy_vianello_or_domus?
1592
- update_service_defaults(get_stack_name("vianello"))
1593
- update_service_defaults(get_stack_name("domus"))
1594
- end
1595
-
1596
- activia_hostname = get_route53_hostname("activia")
1597
- assange_hostname = get_route53_hostname("assange")
1598
- bburago_hostname = get_route53_hostname("bburago")
1599
- borat_hostname = get_route53_hostname("borat")
1600
- ermes_hostname = get_route53_hostname("ermes")
1601
- fidaty_hostname = get_route53_hostname("fidaty")
1602
- hal9000_hostname = get_route53_hostname("hal9000")
1603
- prima_hostname = get_route53_hostname("web")
1604
- peano_hostname = get_route53_hostname("peano")
1605
- skynet_hostname = get_route53_hostname("skynet")
1606
- urania_hostname = get_route53_hostname("urania")
1607
- roger_hostname = get_route53_hostname("roger")
1608
- leftorium_hostname = get_route53_hostname("leftorium")
1609
- rachele_hostname = get_route53_hostname("rachele")
1610
- maia_app_hostname = get_route53_hostname("maia-app")
1611
- maia_intermediari_hostname = get_route53_hostname("maia-intermediari")
1612
- crash_hostname = get_route53_hostname("crash")
1613
- starsky_hostname = get_route53_hostname("starsky")
1614
- hutch_hostname = get_route53_hostname("hutch")
1615
- legion_hostname = get_route53_hostname("legion")
1616
- vianello_hostname = get_route53_hostname("vianello")
1617
- domus_hostname = get_route53_hostname("domus")
1618
-
1619
- #launch_mimo(get_deploy_id)
1620
-
1621
- projects_text = "
1622
- > Prima url: https://#{prima_hostname}
1623
- > Backoffice (Borat) url: https://#{borat_hostname}
1624
- > Urania url: http://#{urania_hostname}:81
1625
- > Bburago url: http://#{bburago_hostname}:83
1626
- > Ermes url: http://#{ermes_hostname}:10002
1627
- > Hal9000 url: http://#{hal9000_hostname}:10031
1628
- > Fidaty url: http://#{fidaty_hostname}:10021
1629
- > Peano url: http://#{peano_hostname}:10039
1630
- > Assange url: https://#{assange_hostname}
1631
- > Activia url: http://#{activia_hostname}:10041
1632
- > Skynet url: http://#{skynet_hostname}:8050
1633
- > Roger url: http://#{roger_hostname}:10051
1634
- > Leftorium url: http://#{leftorium_hostname}:10061
1635
- > Rachele url: http://#{rachele_hostname}:10040
1636
- > Maia App url: https://#{maia_app_hostname}
1637
- > Maia Intermediari url: https://#{maia_intermediari_hostname}
1638
- > Legion url: http://#{legion_hostname}:8051
1639
- > Crash url: https://#{crash_hostname}
1640
- > Starsky url: https://#{starsky_hostname}
1641
- > Hutch url: https://#{hutch_hostname}"
1642
- projects_text.concat "
1643
- > Vianello url: https://#{vianello_hostname}
1644
- > Domus url: https://#{domus_hostname}" if deploy_vianello_or_domus?
1645
- projects_text.concat "
1646
- > RabbitMQ url: http://#{get_ec2_ip_address}:15672
1647
- > Elasticsearch url: http://#{get_ec2_ip_address}:9200
1648
- > Git branch: #{@git_branch}
1649
- > SSH connection: ssh -o UserKnownHostsFile=/dev/null -o StrictHostKeyChecking=no githubUsername@#{get_ec2_ip_address}\n"
1650
- output projects_text.cyan
1651
- output "Deploy effettuato, everything is awesome!\n".green
1652
-
1653
- if @projects['prima']['name'] != 'master' then
1654
- output "Lancio il batch job per la visual regression..."
1655
- launch_bocelli_test(prima_hostname)
1656
- output "Visual regression lanciata con successo!"
1657
-
1658
- output "Lancio i test con Lighthouse..."
1659
- launch_lighthouse_test(prima_hostname, "mobile")
1660
- launch_lighthouse_test(prima_hostname, "desktop")
1661
- output "Test con Lighthouse lanciati con successo..."
1662
- end
1663
-
1664
- qainit_write_output(projects_text, 'Indirizzi scritti su ')
1665
- end
1666
-
1667
- def get_route53_hostname(project)
1668
- case
1669
- when project.include?('web')
1670
- host = "www-#{get_deploy_id}.qa.colaster.com"
1671
- when project.include?('urania')
1672
- host = "urania-#{get_deploy_id}.qa.colaster.com"
1673
- when project.include?('bburago')
1674
- host = "bburago-#{get_deploy_id}.qa.colaster.com"
1675
- when project.include?('hal9000')
1676
- host = "hal9000-#{get_deploy_id}.qa.colaster.com"
1677
- when project.include?('fidaty')
1678
- host = "fidaty-#{get_deploy_id}.qa.colaster.com"
1679
- when project.include?('peano')
1680
- host = "peano-#{get_deploy_id}.qa.colaster.com"
1681
- when project.include?('assange')
1682
- host = "assange-#{get_deploy_id}.qa.colaster.com"
1683
- when project.include?('borat')
1684
- host = "backoffice-#{get_deploy_id}.qa.colaster.com"
1685
- when project.include?('crash')
1686
- host = "crash-#{get_deploy_id}.qa.colaster.com"
1687
- when project.include?('ermes')
1688
- host = "ermes-#{get_deploy_id}.qa.colaster.com"
1689
- when project.include?('activia')
1690
- host = "activia-#{get_deploy_id}.qa.colaster.com"
1691
- when project.include?('skynet')
1692
- host = "skynet-#{get_deploy_id}.qa.colaster.com"
1693
- when project.include?('roger')
1694
- host = "roger-#{get_deploy_id}.qa.colaster.com"
1695
- when project.include?('leftorium')
1696
- host = "leftorium-#{get_deploy_id}.qa.colaster.com"
1697
- when project.include?('rachele')
1698
- host = "rachele-#{get_deploy_id}.qa.colaster.com"
1699
- when project.include?('starsky')
1700
- host = "starsky-#{get_deploy_id}.qa.colaster.com"
1701
- when project.include?('hutch')
1702
- host = "hutch-#{get_deploy_id}.qa.colaster.com"
1703
- when project.include?('maia-app')
1704
- host = "api-#{get_deploy_id}.qa.colaster.com"
1705
- when project.include?('legion')
1706
- host = "legion-#{get_deploy_id}.qa.colaster.com"
1707
- when project.include?('maia-intermediari')
1708
- host = "api-intermediari-#{get_deploy_id}.qa.colaster.com"
1709
- when project.include?('vianello')
1710
- host = "vianello-#{get_deploy_id}.qa.colaster.com"
1711
- when project.include?('domus')
1712
- host = "domus-#{get_deploy_id}.qa.colaster.com"
1713
- end
1714
- host
1715
- end
1716
-
1717
- def get_ec2_ip_address()
1718
- if @ec2_ip_address
1719
- @ec2_ip_address
1720
- else
1721
- resp = describe_stack_resource(get_asg_stack_name, 'ECSAutoScalingGroup')
1722
- resp = describe_auto_scaling_groups([resp.stack_resource_detail.physical_resource_id], 1)
1723
- instance_id = resp.auto_scaling_groups[0].instances[0].instance_id
1724
- resp = describe_instances([instance_id])
1725
- @ec2_ip_address = resp.reservations[0].instances[0].private_ip_address
1726
- @ec2_ip_address
1727
- end
1728
- end
1729
-
1730
- def get_alb_host(stack_name)
1731
- case
1732
- when stack_name.include?('web')
1733
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1734
- when stack_name.include?('urania')
1735
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1736
- when stack_name.include?('backoffice')
1737
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1738
- when stack_name.include?('bburago')
1739
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1740
- when stack_name.include?('hal9000')
1741
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1742
- when stack_name.include?('fidaty')
1743
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1744
- when stack_name.include?('activia')
1745
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1746
- when stack_name.include?('skynet')
1747
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1748
- when stack_name.include?('roger')
1749
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1750
- when stack_name.include?('alb-http-public')
1751
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1752
- when stack_name.include?('alb-ws-public')
1753
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1754
- when stack_name.include?('peano')
1755
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1756
- when stack_name.include?('leftorium')
1757
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1758
- when stack_name.include?('assange')
1759
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1760
- when stack_name.include?('borat')
1761
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1762
- when stack_name.include?('crash')
1763
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1764
- when stack_name.include?('rachele')
1765
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1766
- when stack_name.include?('starsky')
1767
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1768
- when stack_name.include?('hutch')
1769
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1770
- when stack_name.include?('maia')
1771
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1772
- when stack_name.include?('legion')
1773
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1774
- when stack_name.include?('vianello')
1775
- logical_resource_id = 'EcsApplicationLoadBalancerInternal'
1776
- when stack_name.include?('domus')
1777
- logical_resource_id = 'EcsApplicationLoadBalancerPublic'
1778
- end
1779
- resp = describe_stack_resource(stack_name, logical_resource_id)
1780
- resp = describe_load_balancers([resp.stack_resource_detail.physical_resource_id])
1781
- resp.load_balancers[0].dns_name
1782
- end
1783
-
1784
- def update_service_defaults(stack_name)
1785
- case
1786
- when stack_name.include?('web')
1787
- logical_resource_id = 'ECSServiceWebQA'
1788
- when stack_name.include?('consumer')
1789
- logical_resource_id = 'ECSServiceConsumerApiQa'
1790
- when stack_name.include?('urania')
1791
- logical_resource_id = 'ECSServiceUraniaQA'
1792
- when stack_name.include?('backoffice')
1793
- logical_resource_id = 'ECSServiceBackoffice'
1794
- when stack_name.include?('worker-ermes')
1795
- logical_resource_id = 'ECSServiceErmesWorker'
1796
- when stack_name.include?('ermes')
1797
- logical_resource_id = 'ECSServiceErmesQA'
1798
- when stack_name.include?('bburago')
1799
- logical_resource_id = 'ECSServiceBburagoQA'
1800
- when stack_name.include?('hal9000')
1801
- logical_resource_id = 'ECSServiceHal9000QA'
1802
- when stack_name.include?('fidaty')
1803
- logical_resource_id = 'ECSServiceFidatyQA'
1804
- when stack_name.include?('skynet')
1805
- logical_resource_id = 'ECSServiceSkynetQA'
1806
- when stack_name.include?('roger')
1807
- logical_resource_id = 'ECSServiceRogerQA'
1808
- when stack_name.include?('activia')
1809
- logical_resource_id = 'ECSServiceActiviaQA'
1810
- when stack_name.include?('peano')
1811
- logical_resource_id = 'ECSServicePeanoQA'
1812
- when stack_name.include?('assange')
1813
- logical_resource_id = 'ECSServiceAssangeQA'
1814
- when stack_name.include?('borat')
1815
- logical_resource_id = 'ECSServiceBorat'
1816
- when stack_name.include?('leftorium')
1817
- logical_resource_id = 'ECSServiceLeftoriumQA'
1818
- when stack_name.include?('rachele')
1819
- logical_resource_id = 'ECSServiceRacheleQA'
1820
- when stack_name.include?('crash')
1821
- logical_resource_id = 'ECSServiceCrashQA'
1822
- when stack_name.include?('starsky')
1823
- logical_resource_id = 'ECSServiceStarskyQA'
1824
- when stack_name.include?('hutch')
1825
- logical_resource_id = 'ECSServiceHutch'
1826
- when stack_name.include?('maia')
1827
- logical_resource_id = 'ECSServiceMaia'
1828
- when stack_name.include?('legion')
1829
- logical_resource_id = 'ECSServiceLegionQA'
1830
- when stack_name.include?('vianello')
1831
- logical_resource_id = 'ECSServiceVianelloQA'
1832
- when stack_name.include?('domus')
1833
- logical_resource_id = 'ECSServiceDomus'
1834
- else
1835
- raise "Service name non gestito per lo stack #{stack_name}"
1836
- end
1837
- resp = describe_stack_resource(stack_name, logical_resource_id)
1838
- update_ecs_service(get_ecs_cluster_name, resp.stack_resource_detail.physical_resource_id, {minimum_healthy_percent: 0, maximum_percent: 100})
1839
- end
1840
-
1841
- def launch_lighthouse_test(url, device)
1842
- @cloudflare.post("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {type: 'CNAME', name: "www-#{get_deploy_id}", content: url, proxied: true, ttl: 1}) unless get_lighthouse_dns()
1843
-
1844
- @batch.submit_job({
1845
- job_name: "lighthouse-#{device}-#{get_deploy_id}",
1846
- job_queue: "tools-production",
1847
- job_definition: describe_stack_resource('batch-job-lighthouse-production', 'JobDefinition').stack_resource_detail.physical_resource_id,
1848
- container_overrides: {
1849
- environment: [
1850
- {
1851
- name: "URL_TO_TEST",
1852
- value: "https://www-#{get_deploy_id}.prima.it/?superprima"
1853
- },
1854
- {
1855
- name: "DEVICE",
1856
- value: device
1857
- },
1858
- {
1859
- name: "BRANCH_NAME",
1860
- value: @projects['prima']['name']
1861
- },
1862
- {
1863
- name: "COMMITTER_EMAIL",
1864
- value: @projects['prima']['committer']
1865
- }
1866
- ]
1867
- }
1868
- })
1869
- end
1870
-
1871
- def get_lighthouse_dns()
1872
- dns_records = @cloudflare.get("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records", {per_page: 100, type: 'CNAME', name: "www-#{get_deploy_id}.prima.it"})
1873
- if dns_records.body[:result_info][:count] > 0
1874
- return dns_records.body[:result][0][:id]
1875
- end
1876
- false
1877
- end
1878
-
1879
- def delete_lighthouse_dns()
1880
- dns_id = get_lighthouse_dns()
1881
- @cloudflare.delete("zones/1fb634f19c43dfb0162cc4cb91915da2/dns_records/#{dns_id}") if dns_id
1882
- end
1883
-
1884
- def launch_bocelli_test(url)
1885
- @batch.submit_job({
1886
- job_name: "bocelli-test-#{get_deploy_id}",
1887
- job_queue: "tools-production",
1888
- job_definition: describe_stack_resource('batch-job-bocelli-production', 'JobDefinition').stack_resource_detail.physical_resource_id,
1889
- container_overrides: {
1890
- environment: [
1891
- {
1892
- name: "BATCH_COMMAND",
1893
- value: "test"
1894
- },
1895
- {
1896
- name: "QA_HOSTNAME",
1897
- value: url
1898
- },
1899
- {
1900
- name: "BRANCH_NAME",
1901
- value: @projects['prima']['name']
1902
- },
1903
- {
1904
- name: "COMMITTER_EMAIL",
1905
- value: @projects['prima']['committer']
1906
- }
1907
- ]
1908
- }
1909
- })
1910
- end
1911
-
1912
- def deploy_vianello_or_domus?
1913
- vianello_present = !@projects['vianello'].empty? && @projects['vianello'][:name] != 'master' && !@projects['vianello'][:default_branch]
1914
- domus_present = !@projects['domus'].empty? && @projects['domus'][:name] != 'master' && !@projects['domus'][:default_branch]
1915
- vianello_present || domus_present
1916
- end
1917
-
1918
- def git_checkout_version(project, revision)
1919
- Dir.chdir "projects/#{project}"
1920
- exec_step "git checkout -- . && git checkout #{revision}"
1921
- Dir.chdir "../../"
1922
- end
1923
-
1924
- def create_asg_stack(stack_name, tags = [])
1925
- stack_body = IO.read('cloudformation/stacks/asg/ecs-asg-allinone.yml')
1926
- parameters = [
1927
- {
1928
- parameter_key: "Environment",
1929
- parameter_value: "qa"
1930
- },
1931
- {
1932
- parameter_key: "InstanceType",
1933
- parameter_value: "t3a.xlarge"
1934
- },
1935
- {
1936
- parameter_key: "ECSClusterName",
1937
- parameter_value: get_ecs_cluster_name
1938
- },
1939
- {
1940
- parameter_key: "AMIID",
1941
- parameter_value: @ami_id
1942
- }
1943
- ]
1944
- create_stack(stack_name, stack_body, parameters, tags, @cf_role)
1945
- end
1946
-
1947
- def create_cluster_stack(stack_name, tags = [])
1948
- stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
1949
- create_stack(stack_name, stack_body, [], tags)
1950
- end
1951
-
1952
- def update_cluster_stack(stack_name, tags = [])
1953
- stack_body = IO.read('cloudformation/stacks/ecs-cluster.yml')
1954
- update_stack(stack_name, stack_body, [], tags)
1955
- end
1956
-
1957
- def create_alb_stack(stack_name, role, hash, environment = 'qa')
1958
- stack_body = IO.read('cloudformation/stacks/elb/alb-public-qa.yml')
1959
- parameters = [
1960
- {
1961
- parameter_key: "Environment",
1962
- parameter_value: environment
1963
- },
1964
- {
1965
- parameter_key: "Role",
1966
- parameter_value: role
1967
- },
1968
- {
1969
- parameter_key: "EnvHash",
1970
- parameter_value: hash
1971
- }
1972
- ]
1973
- create_stack(stack_name, stack_body, parameters, [], @cf_role)
1974
- end
1975
-
1976
- def import_redis_crash(qa_ip_address)
1977
- output "Importo chiavi di Redis da staging\n".yellow
1978
-
1979
- prefixes = ['CODICI', 'fun_with_flags']
1980
- redis_qa = Redis.new(:url => "redis://#{qa_ip_address}:6379/10")
1981
- redis_staging = Redis.new(:url => 'redis://staging.cache-1.prima.it:6379/10')
1982
-
1983
- prefixes.each do |prefix|
1984
- redis_staging.keys("#{prefix}*").each do |key|
1985
- next unless redis_qa.keys(key).empty?
1986
- output "Importo #{key} dal Redis di staging\n".yellow
1987
- dump_staging = redis_staging.dump key
1988
- redis_qa.restore key, 0, dump_staging
1989
- end
1990
- end
1991
- end
1992
-
1993
- def import_dbs(ip_address)
1994
- overrides = {
1995
- container_overrides: [
1996
- {
1997
- name: 'dbrestore',
1998
- environment: [
1999
- {
2000
- name: 'EC2_IP_ADDRESS',
2001
- value: ip_address
2002
- }
2003
- ]
2004
- }
2005
- ]
2006
- }
2007
- resp = run_ecs_task(get_ecs_cluster_name, @import_db_task, overrides, 1)
2008
- return resp
2009
- end
2010
-
2011
- def wait_for_db_import(task)
2012
- output "Attendo che i DB vengano importati...\n".yellow
2013
- stopped_at = nil
2014
- sleep 15 # altrimenti non trova il task appena avviato...
2015
- while stopped_at.nil?
2016
- if task.tasks[0].nil?
2017
- pp get_ecs_cluster_name
2018
- pp task
2019
- stop_if true, "Task di import DB lanciato, ma risposta vuota!".red
2020
- end
2021
- task = describe_ecs_tasks(task.tasks[0].cluster_arn, [task.tasks[0].task_arn])
2022
- stopped_at = task.tasks[0].stopped_at unless task.tasks[0].nil?
2023
- sleep_seconds = 10
2024
- seconds_elapsed = 0
2025
- while true && stopped_at.nil?
2026
- break if seconds_elapsed >= sleep_seconds
2027
- print '.'.yellow; STDOUT.flush
2028
- sleep 1
2029
- seconds_elapsed += 1
2030
- end
2031
- end
2032
- print "\n"
2033
- end
2034
-
2035
- def get_stacks()
2036
- envs = {}
2037
- stack_list = stack_list()
2038
- stack_list.each do |stack|
2039
- unless stack.stack_name.match(/spotfleet-allinone-qa-(\w+)$/)
2040
- env_hash = stack.stack_name.match(/qa-(\w+)$/)[0]
2041
- envs[env_hash] = stack.tags unless envs.has_key?(env_hash) || stack.tags.empty?
2042
- end
2043
- end
2044
- return stack_list, envs
2045
- end
2046
-
2047
- def get_clusters()
2048
- envs = {}
2049
- cluster_list = cluster_list()
2050
- cluster_list.each do |stack|
2051
- unless stack.stack_name.match(/spotfleet-allinone-qa-(\w+)$/)
2052
- env_hash = stack.stack_name.match(/qa-(\w+)$/)[0]
2053
- envs[env_hash] = stack.tags unless envs.has_key?(env_hash) || stack.tags.empty?
2054
- end
2055
- end
2056
- return cluster_list, envs
2057
- end
2058
-
2059
- def hostname_pattern_priority()
2060
- (Time.now.to_i.to_s[-4..-1].to_i + Random.rand(40000)).to_s
2061
- end
2062
-
2063
- def launch_mimo(env_hash)
2064
- resp = describe_stack_resource('batch-job-mimo', 'JobDefinition')
2065
-
2066
- @batch.submit_job({
2067
- job_name: "mimo-#{get_deploy_id}", # required
2068
- job_queue: "tools-production", # required
2069
- job_definition: resp.stack_resource_detail.physical_resource_id, # required
2070
- container_overrides: {
2071
- environment: [
2072
- {
2073
- name: 'ENV_HASH',
2074
- value: env_hash
2075
- },
2076
- {
2077
- name: 'APP_ENV',
2078
- value: 'qa'
2079
- },
2080
- {
2081
- name: 'CYPRESS_BASE_URL',
2082
- value: "https://hutch-#{env_hash}.qa.colaster.com"
2083
- },
2084
- {
2085
- name: 'CYPRESS_PEANO_BASE_URL',
2086
- value: "http://peano-#{env_hash}.qa.colaster.com:10039/quotation"
2087
- },
2088
- {
2089
- name: 'CYPRESS_API_BASE_URL',
2090
- value: "https://#{get_route53_hostname("starsky")}/graphql"
2091
- },
2092
- {
2093
- name: 'QA_NAME',
2094
- value: @git_branch
2095
- }
2096
- ]
2097
- }
2098
- })
2099
-
2100
- output "Mimo lanciato con successo!\n".green
2101
- end
2102
-
2103
- def get_currently_deployed_version(stack_name)
2104
- parameters = get_stack_parameters(stack_name)
2105
- currently_deployed_version = nil
2106
- parameters.each do |parameter|
2107
- if parameter.parameter_key == "ReleaseVersion"
2108
- currently_deployed_version = parameter.parameter_value
2109
- end
2110
- end
2111
- currently_deployed_version
2112
- end
2113
-
2114
- def get_ami_id(stack_name)
2115
- get_stack_parameters(stack_name).each do |param|
2116
- if param.parameter_key == "AMIID"
2117
- return param.parameter_value
2118
- end
2119
- end
2120
- end
2121
- end
2122
-
2123
- def help_content
2124
- <<-HELP
2125
-
2126
- twig-buils
2127
- ===========
2128
-
2129
- Manage qa cloudformation stack creation
2130
-
2131
- Synopsis
2132
- --------
2133
-
2134
- twig build #command
2135
-
2136
- Description
2137
- -----------
2138
-
2139
- #command #command description
2140
-
2141
- HELP
2142
- end
2143
-
2144
- args = ARGV.dup
2145
-
2146
- if args.include?('--help')
2147
- puts help_content
2148
- exit
2149
- end
2150
-
2151
- args.delete('no-gem-update')
2152
-
2153
- Build.new().execute!(args)