prima-twig 0.3.22 → 0.4.0

Sign up to get free protection for your applications and to get access to all the features.
Files changed (3) hide show
  1. checksums.yaml +4 -4
  2. data/bin/twig-feature +56 -6
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: 47fa4c11f6d6ed6161b42a47e2f3623007bb7d7f
4
- data.tar.gz: 09b60b8b7c9a48818b9494cafeaf41c31cd10c11
3
+ metadata.gz: c652a3d316df7d7d81f02368d3d400405c6140f7
4
+ data.tar.gz: 91d45d39afe69bad6c2886cd9990ba10417ab36f
5
5
  SHA512:
6
- metadata.gz: 4980b06e217b358301413e6fe44f935e522e4413bc598266dd328751ebb5e1dce04e2cbc0b3d25fb6216a2518ca69558b7365f6f98ff3e59fdd3d25df82a53da
7
- data.tar.gz: e8cc212b0316606e903250b85ddaa0cf1a3cb56d0b9caf3b08c0e3048a816e8464713e67cf0cae266cdcb59718a92efc91d9d6b6aff161fb86442ef19f88a81c
6
+ metadata.gz: 56688eca11472c2f522923b7859f6ae3e2d110d53dc13a5f5cec90ade5c162c3f24ef90188b0a922a75d654e8e0344d824a168a927bb980f3d46c0b81bc9adcc
7
+ data.tar.gz: 0d172af4a598b57064a3cce7a6ed96eb509ab81593ae5fca8d437f637091aece0e29811c0f19cd76426b20d66c17112a68a2fbd3c6f8b1d29a24dcdaad22f30e
data/bin/twig-feature CHANGED
@@ -19,12 +19,12 @@ class Release
19
19
  @asg = Aws::AutoScaling::Client.new
20
20
  @s3_bucket = 'prima-artifacts'
21
21
  @artifact_path = '/tmp/prima-artifact.zip'
22
- @qa_cluster = 'ecs-cluster-qa-ECSCluster-ROF3QJNLOXGG'
23
22
  @import_db_task = 'arn:aws:ecs:eu-west-1:001575623345:task-definition/ecs-task-db-restore-TaskDefinitionDbRestore-1ON8T3XFRV72W:1'
24
23
  @prima_built = false
25
24
  @urania_built = false
26
25
  @backoffice_built = false
27
26
  @dns_record_identifier = nil
27
+ @ecs_cluster_name = nil
28
28
  end
29
29
 
30
30
  def execute! args
@@ -99,9 +99,21 @@ class Release
99
99
  exit
100
100
  end
101
101
 
102
+ cluster_stack_name = nil
102
103
  stack_list.each do |stack|
103
- delete_stack(stack.stack_name) if stack.stack_name.match(/#{env_hash}$/)
104
+ if stack.stack_name.match(/#{env_hash}$/)
105
+ if stack.stack_name.match(/ecs-cluster/)
106
+ cluster_stack_name = stack.stack_name
107
+ else
108
+ delete_stack(stack.stack_name) if stack.stack_name.match(/#{env_hash}$/)
109
+ end
110
+ end
111
+ end
112
+
113
+ while stack_exists?("ecs-asg-allinone-qa-#{env_hash}") do
114
+ sleep 5
104
115
  end
116
+ delete_stack(cluster_stack_name)
105
117
  end
106
118
 
107
119
  def deploy_feature!
@@ -132,6 +144,13 @@ class Release
132
144
 
133
145
  deploy_id = Digest::MD5.hexdigest(prima_branch[:name] + backoffice_branch[:name] + urania_branch[:name] + socket_branch[:name] + pamela_branch[:name])
134
146
 
147
+ cluster_stack_name = "ecs-cluster-qa-#{deploy_id}"
148
+ create_cluster_stack(cluster_stack_name, tags) unless stack_exists?(cluster_stack_name)
149
+ wait_for_stack_ready(cluster_stack_name) unless stack_ready?(cluster_stack_name)
150
+
151
+ resp = @cf.describe_stack_resource({stack_name: cluster_stack_name, logical_resource_id: 'ECSCluster'})
152
+ @ecs_cluster_name = resp.stack_resource_detail.physical_resource_id
153
+
135
154
  asg_stack_name = "ecs-asg-allinone-qa-#{deploy_id}"
136
155
  create_asg_stack(asg_stack_name, tags) unless stack_exists?(asg_stack_name)
137
156
 
@@ -141,6 +160,10 @@ class Release
141
160
  {
142
161
  parameter_key: "Environment",
143
162
  parameter_value: "qa"
163
+ },
164
+ {
165
+ parameter_key: "ECSClusterName",
166
+ parameter_value: @ecs_cluster_name
144
167
  }
145
168
  ]
146
169
  create_stack(stack_name_db, stack_body, parameters, tags) unless stack_exists?(stack_name_db)
@@ -168,6 +191,10 @@ class Release
168
191
  {
169
192
  parameter_key: "TaskDesiredCount",
170
193
  parameter_value: "1"
194
+ },
195
+ {
196
+ parameter_key: "ECSClusterName",
197
+ parameter_value: @ecs_cluster_name
171
198
  }
172
199
  ]
173
200
  if stack_exists?(stack_name_web)
@@ -187,6 +214,10 @@ class Release
187
214
  {
188
215
  parameter_key: "ReleaseVersion",
189
216
  parameter_value: prima_branch[:revision]
217
+ },
218
+ {
219
+ parameter_key: "ECSClusterName",
220
+ parameter_value: @ecs_cluster_name
190
221
  }
191
222
  ]
192
223
  if stack_exists?(stack_name_consumer)
@@ -210,6 +241,10 @@ class Release
210
241
  {
211
242
  parameter_key: "TaskDesiredCount",
212
243
  parameter_value: "1"
244
+ },
245
+ {
246
+ parameter_key: "ECSClusterName",
247
+ parameter_value: @ecs_cluster_name
213
248
  }
214
249
  ]
215
250
  if stack_exists?(stack_name_urania)
@@ -233,6 +268,10 @@ class Release
233
268
  {
234
269
  parameter_key: "TaskDesiredCount",
235
270
  parameter_value: "1"
271
+ },
272
+ {
273
+ parameter_key: "ECSClusterName",
274
+ parameter_value: @ecs_cluster_name
236
275
  }
237
276
  ]
238
277
  if stack_exists?(stack_name_backoffice)
@@ -350,7 +389,7 @@ class Release
350
389
  logical_resource_id: logical_resource_id
351
390
  })
352
391
  resp = @ecs.update_service({
353
- cluster: @qa_cluster,
392
+ cluster: @ecs_cluster_name,
354
393
  service: resp.stack_resource_detail.physical_resource_id,
355
394
  deployment_configuration: {
356
395
  minimum_healthy_percent: 0,
@@ -413,7 +452,7 @@ class Release
413
452
  [
414
453
  "docker-compose build workers",
415
454
  "cd ../../ && docker run -e GIT_DIR=$PWD -v $PWD:/usr/app/src -w /usr/app/src/projects/backoffice blinkmobile/bower install --allow-root",
416
- "docker run -v $PWD:/code -w /code -e PHANTOMJS_BIN=/code/node_modules/grunt-selenium-webdriver/node_modules/phantomjs/lib/phantom/bin/phantomjs --entrypoint /bin/bash backoffice_workers '-c' 'sed -i \"s/web-qa-url/#{web_qa_host}/g\" Gruntfile.js && npm install && grunt qa'",
455
+ "docker run -v $PWD:/code -w /code -e PHANTOMJS_BIN=/code/node_modules/phantomjs/lib/phantom/bin/phantomjs --entrypoint /bin/bash backoffice_workers '-c' 'sed -i \"s/web-qa-url/#{web_qa_host}/g\" Gruntfile.js && npm install && grunt qa'",
417
456
  "sudo chown -R `whoami` ."
418
457
  ].each do |cmd|
419
458
  output "Eseguo #{cmd}".yellow
@@ -524,6 +563,8 @@ class Release
524
563
  end
525
564
 
526
565
  def create_asg_stack(stack_name, tags = [])
566
+ pp @ecs_cluster_name
567
+
527
568
  stack_body = IO.read('cloudformation/stacks/asg/ecs-asg-allinone.json')
528
569
  parameters = [
529
570
  {
@@ -533,14 +574,23 @@ class Release
533
574
  {
534
575
  parameter_key: "InstanceType",
535
576
  parameter_value: "t2.large"
577
+ },
578
+ {
579
+ parameter_key: "ECSClusterName",
580
+ parameter_value: @ecs_cluster_name
536
581
  }
537
582
  ]
538
583
  create_stack(stack_name, stack_body, parameters, tags)
539
584
  end
540
585
 
586
+ def create_cluster_stack(stack_name, tags = [])
587
+ stack_body = IO.read('cloudformation/stacks/ecs-cluster.json')
588
+ create_stack(stack_name, stack_body, [], tags)
589
+ end
590
+
541
591
  def import_dbs(ip_address)
542
592
  resp = @ecs.run_task({
543
- cluster: @qa_cluster,
593
+ cluster: @ecs_cluster_name,
544
594
  task_definition: @import_db_task,
545
595
  overrides: {
546
596
  container_overrides: [
@@ -561,7 +611,7 @@ class Release
561
611
  stopped_at = nil
562
612
  while stopped_at.nil?
563
613
  resp = @ecs.describe_tasks({
564
- cluster: @qa_cluster,
614
+ cluster: @ecs_cluster_name,
565
615
  tasks: [resp.tasks[0].task_arn]
566
616
  })
567
617
  stopped_at = resp.tasks[0].stopped_at
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: prima-twig
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.3.22
4
+ version: 0.4.0
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matteo Giachino
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-04-29 00:00:00.000000000 Z
14
+ date: 2016-05-02 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: twig