prima-twig 0.3.22 → 0.4.0

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
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