prima-twig 0.17.2 → 0.18.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 +80 -53
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: ba2a8fb5f3de690159c097c17723fea4f379c28a
4
- data.tar.gz: 482063abfd0eee9b0ec751d23da3c1dec4ecede0
3
+ metadata.gz: 25e1f11eeb5f30f39a7f11e027c7392878720ba2
4
+ data.tar.gz: 081c6b077ec7ade4d35910fcb0cdb64155a7dc76
5
5
  SHA512:
6
- metadata.gz: 56761fb6fccf24e6a097a4e96b1b25fb0f4654a772af13dd520fa29d8e48937ae699695fa267a905fdf8a527ad9161d45505a272438d2995d969df7beb7c26d8
7
- data.tar.gz: 5c7d2f68f38119ab230eb767139da2eb6552cdc6671bb9667c6568200bd08c1d277b7cb5a41c7df2de26893a65a166a453dc18dbc78de4d6353f23c4e65e865a
6
+ metadata.gz: 44ba6cf9a6f4a6aa59d52f61c04672ca8b617a306e698bc6f999460cd798faac7deeeea5614e7fdbc957fa31669eb306cd8a392830f1103cbc7f656bbcbf501c
7
+ data.tar.gz: cd76ff598b2b6e3b9fa4b54158c4651acbaaae529c2141e3d5529d02f4906a36ca2cc7863df50be7af6179abdf414d3c68f062978ae1a709e262da2d34b4d03e
data/bin/twig-feature CHANGED
@@ -32,6 +32,7 @@ class Release
32
32
  @backoffice_built = false
33
33
  @dns_record_identifier = nil
34
34
  @ecs_cluster_name = nil
35
+ @projects = {"prima" => {}, "backoffice" => {}, "urania" => {}, "ermes" => {}, "bburago" => {}, "hal9000" => {}, "fidaty" => {}}
35
36
  end
36
37
 
37
38
  def execute! args
@@ -44,7 +45,11 @@ class Release
44
45
  if ['terminate', 'stop', 'shutdown', 'halt', 'destroy'].include? args[1]
45
46
  deploy_shutdown!
46
47
  else
47
- deploy_feature!
48
+ if args[1]
49
+ deploy_feature! args[1]
50
+ else
51
+ deploy_feature!
52
+ end
48
53
  end
49
54
  else
50
55
  stop_if true, [:wrong_args, ['start', 'finish', 'deploy', 'deploy stop']]
@@ -130,51 +135,44 @@ class Release
130
135
  output "Finito!".green
131
136
  end
132
137
 
133
- def deploy_feature!
138
+ def deploy_feature!(project_name = nil)
134
139
  output "Deploy feature menu"
135
140
  `sudo true` # cosi' non chiede la password dopo
136
141
  `git pull && git submodule init && git submodule update`
137
- prima_branch = choose_branch_to_deploy('prima')
138
- backoffice_branch = choose_branch_to_deploy('backoffice')
139
- urania_branch = choose_branch_to_deploy('urania')
140
- ermes_branch = choose_branch_to_deploy('ermes')
141
- bburago_branch = choose_branch_to_deploy('bburago')
142
- hal9000_branch = choose_branch_to_deploy('hal9000')
143
- fidaty_branch = choose_branch_to_deploy('fidaty')
144
- socket_branch = {name: "master"}
145
- pamela_branch = {name: "master"}
146
-
147
- deploy_id = Digest::MD5.hexdigest(prima_branch[:name] + backoffice_branch[:name] + urania_branch[:name] + socket_branch[:name] + pamela_branch[:name] + ermes_branch[:name] + bburago_branch[:name] + hal9000_branch[:name] + fidaty_branch[:name])
142
+
143
+ select_branches(project_name)
144
+
145
+ deploy_id = Digest::MD5.hexdigest(@projects["prima"][:name] + @projects["backoffice"][:name] + @projects["urania"][:name] + @projects["ermes"][:name] + @projects["bburago"][:name] + @projects["hal9000"][:name] + @projects["fidaty"][:name])
148
146
  @dns_record_identifier = deploy_id
149
147
 
150
148
  tags = [
151
149
  {
152
150
  key: "prima",
153
- value: prima_branch[:name]
151
+ value: @projects["prima"][:name]
154
152
  },
155
153
  {
156
154
  key: "urania",
157
- value: urania_branch[:name]
155
+ value: @projects["urania"][:name]
158
156
  },
159
157
  {
160
158
  key: "backoffice",
161
- value: backoffice_branch[:name]
159
+ value: @projects["backoffice"][:name]
162
160
  },
163
161
  {
164
162
  key: "ermes",
165
- value: ermes_branch[:name]
163
+ value: @projects["ermes"][:name]
166
164
  },
167
165
  {
168
166
  key: "bburago",
169
- value: bburago_branch[:name]
167
+ value: @projects["bburago"][:name]
170
168
  },
171
169
  {
172
170
  key: "hal9000",
173
- value: hal9000_branch[:name]
171
+ value: @projects["hal9000"][:name]
174
172
  },
175
173
  {
176
174
  key: "fidaty",
177
- value: fidaty_branch[:name]
175
+ value: @projects["fidaty"][:name]
178
176
  }
179
177
  ]
180
178
 
@@ -202,19 +200,19 @@ class Release
202
200
  ]
203
201
  create_stack(stack_name_db, stack_body, parameters, tags) unless stack_exists?(stack_name_db)
204
202
 
205
- create_prima_artifact(prima_branch[:revision], prima_branch[:name], deploy_id) unless artifact_exists?('prima-artifacts', "prima/#{prima_branch[:revision]}-#{deploy_id}.tar.gz")
206
- create_urania_artifact(urania_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/urania/#{urania_branch[:revision]}-qa.tar.gz")
207
- create_ermes_artifact(ermes_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/ermes/#{ermes_branch[:revision]}-qa.tar.gz")
208
- create_bburago_artifact(bburago_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/bburago/#{bburago_branch[:revision]}-qa.tar.gz")
209
- create_hal9000_artifact(hal9000_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/hal9000/#{hal9000_branch[:revision]}-qa.tar.gz")
210
- create_fidaty_artifact(fidaty_branch[:revision]) unless artifact_exists?('prima-artifacts', "microservices/fidaty/#{fidaty_branch[:revision]}-qa.tar.gz")
211
- create_backoffice_artifact(backoffice_branch[:revision], deploy_id) unless artifact_exists?('prima-artifacts', "backoffice/#{backoffice_branch[:revision]}-#{deploy_id}.zip")
203
+ create_prima_artifact(@projects["prima"][:revision], @projects["prima"][:name], deploy_id) unless artifact_exists?('prima-artifacts', "prima/#{@projects["prima"][:revision]}-#{deploy_id}.tar.gz")
204
+ create_urania_artifact(@projects["urania"][:revision]) unless artifact_exists?('prima-artifacts', "microservices/urania/#{@projects["urania"][:revision]}-qa.tar.gz")
205
+ create_ermes_artifact(@projects["ermes"][:revision]) unless artifact_exists?('prima-artifacts', "microservices/ermes/#{@projects["ermes"][:revision]}-qa.tar.gz")
206
+ create_bburago_artifact(@projects["bburago"][:revision]) unless artifact_exists?('prima-artifacts', "microservices/bburago/#{@projects["bburago"][:revision]}-qa.tar.gz")
207
+ create_hal9000_artifact(@projects["hal9000"][:revision]) unless artifact_exists?('prima-artifacts', "microservices/hal9000/#{@projects["hal9000"][:revision]}-qa.tar.gz")
208
+ create_fidaty_artifact(@projects["fidaty"][:revision], deploy_id) unless artifact_exists?('prima-artifacts', "microservices/fidaty/#{@projects["fidaty"][:revision]}-#{deploy_id}-qa.tar.gz")
209
+ create_backoffice_artifact(@projects["backoffice"][:revision], deploy_id) unless artifact_exists?('prima-artifacts', "backoffice/#{@projects["backoffice"][:revision]}-#{deploy_id}.zip")
212
210
 
213
211
  wait_for_stack_ready(stack_name_db) unless stack_ready?(stack_name_db)
214
212
  import_dbs(ec2_ip_address(asg_stack_name)) unless stack_exists?("ecs-task-web-qa-#{deploy_id}")
215
213
 
216
214
  stack_name_web = "ecs-task-web-qa-#{deploy_id}"
217
- git_checkout_version('prima', prima_branch[:revision])
215
+ git_checkout_version('prima', @projects["prima"][:revision])
218
216
  stack_body = IO.read('projects/prima/app/cloudformation/tasks/web.yml')
219
217
  parameters = [
220
218
  {
@@ -223,7 +221,7 @@ class Release
223
221
  },
224
222
  {
225
223
  parameter_key: "ReleaseVersion",
226
- parameter_value: "#{prima_branch[:revision]}-#{deploy_id}"
224
+ parameter_value: "#{@projects["prima"][:revision]}-#{deploy_id}"
227
225
  },
228
226
  {
229
227
  parameter_key: "TaskDesiredCount",
@@ -249,7 +247,7 @@ class Release
249
247
  end
250
248
 
251
249
  stack_name_consumer = "ecs-task-consumer-qa-#{deploy_id}"
252
- git_checkout_version('prima', prima_branch[:revision])
250
+ git_checkout_version('prima', @projects["prima"][:revision])
253
251
  stack_body = IO.read('projects/prima/app/cloudformation/tasks/consumer.yml')
254
252
  parameters = [
255
253
  {
@@ -258,7 +256,7 @@ class Release
258
256
  },
259
257
  {
260
258
  parameter_key: "ReleaseVersion",
261
- parameter_value: "#{prima_branch[:revision]}-#{deploy_id}"
259
+ parameter_value: "#{@projects["prima"][:revision]}-#{deploy_id}"
262
260
  },
263
261
  {
264
262
  parameter_key: "ECSClusterName",
@@ -272,7 +270,7 @@ class Release
272
270
  end
273
271
 
274
272
  stack_name_urania = "ecs-task-urania-qa-#{deploy_id}"
275
- git_checkout_version('urania', urania_branch[:revision])
273
+ git_checkout_version('urania', @projects["urania"][:revision])
276
274
  stack_body = IO.read('projects/urania/deploy/task.yml')
277
275
  parameters = [
278
276
  {
@@ -281,7 +279,7 @@ class Release
281
279
  },
282
280
  {
283
281
  parameter_key: "ReleaseVersion",
284
- parameter_value: urania_branch[:revision]
282
+ parameter_value: @projects["urania"][:revision]
285
283
  },
286
284
  {
287
285
  parameter_key: "TaskDesiredCount",
@@ -303,7 +301,7 @@ class Release
303
301
  end
304
302
 
305
303
  stack_name_ermes = "ecs-task-ermes-qa-#{deploy_id}"
306
- git_checkout_version('ermes', ermes_branch[:revision])
304
+ git_checkout_version('ermes', @projects["ermes"][:revision])
307
305
  stack_body = IO.read('projects/ermes/deploy/task.yml')
308
306
  parameters = [
309
307
  {
@@ -312,7 +310,7 @@ class Release
312
310
  },
313
311
  {
314
312
  parameter_key: "ReleaseVersion",
315
- parameter_value: ermes_branch[:revision]
313
+ parameter_value: @projects["ermes"][:revision]
316
314
  },
317
315
  {
318
316
  parameter_key: "ECSClusterName",
@@ -326,7 +324,7 @@ class Release
326
324
  end
327
325
 
328
326
  stack_name_bburago = "ecs-task-bburago-qa-#{deploy_id}"
329
- git_checkout_version('bburago', bburago_branch[:revision])
327
+ git_checkout_version('bburago', @projects["bburago"][:revision])
330
328
  stack_body = IO.read('projects/bburago/deploy/task.yml')
331
329
  parameters = [
332
330
  {
@@ -335,7 +333,7 @@ class Release
335
333
  },
336
334
  {
337
335
  parameter_key: "ReleaseVersion",
338
- parameter_value: bburago_branch[:revision]
336
+ parameter_value: @projects["bburago"][:revision]
339
337
  },
340
338
  {
341
339
  parameter_key: "ECSClusterName",
@@ -357,7 +355,7 @@ class Release
357
355
  end
358
356
 
359
357
  stack_name_hal9000 = "ecs-task-hal9000-qa-#{deploy_id}"
360
- git_checkout_version('hal9000', hal9000_branch[:revision])
358
+ git_checkout_version('hal9000', @projects["hal9000"][:revision])
361
359
  stack_body = IO.read('projects/hal9000/deploy/task.yml')
362
360
  parameters = [
363
361
  {
@@ -366,7 +364,7 @@ class Release
366
364
  },
367
365
  {
368
366
  parameter_key: "ReleaseVersion",
369
- parameter_value: hal9000_branch[:revision]
367
+ parameter_value: @projects["hal9000"][:revision]
370
368
  },
371
369
  {
372
370
  parameter_key: "ECSClusterName",
@@ -388,7 +386,7 @@ class Release
388
386
  end
389
387
 
390
388
  stack_name_fidaty = "ecs-task-fidaty-qa-#{deploy_id}"
391
- git_checkout_version('fidaty', fidaty_branch[:revision])
389
+ git_checkout_version('fidaty', @projects["fidaty"][:revision])
392
390
  stack_body = IO.read('projects/fidaty/deploy/task.yml')
393
391
  parameters = [
394
392
  {
@@ -397,7 +395,7 @@ class Release
397
395
  },
398
396
  {
399
397
  parameter_key: "ReleaseVersion",
400
- parameter_value: fidaty_branch[:revision]
398
+ parameter_value: @projects["fidaty"][:revision]
401
399
  },
402
400
  {
403
401
  parameter_key: "ECSClusterName",
@@ -418,7 +416,7 @@ class Release
418
416
  create_stack(stack_name_fidaty, stack_body, parameters, tags)
419
417
  end
420
418
 
421
- git_checkout_version('backoffice', backoffice_branch[:revision])
419
+ git_checkout_version('backoffice', @projects["backoffice"][:revision])
422
420
  stack_name_backoffice = "ecs-task-backoffice-qa-#{deploy_id}"
423
421
  stack_body = IO.read('projects/backoffice/deploy/task.yml')
424
422
  parameters = [
@@ -428,7 +426,7 @@ class Release
428
426
  },
429
427
  {
430
428
  parameter_key: "ReleaseVersion",
431
- parameter_value: "#{backoffice_branch[:revision]}-#{deploy_id}"
429
+ parameter_value: "#{@projects["backoffice"][:revision]}-#{deploy_id}"
432
430
  },
433
431
  {
434
432
  parameter_key: "TaskDesiredCount",
@@ -778,7 +776,7 @@ class Release
778
776
  Dir.chdir '../../'
779
777
  end
780
778
 
781
- def create_fidaty_artifact(revision)
779
+ def create_fidaty_artifact(revision, deploy_id)
782
780
  @fidaty_built = true
783
781
  output "Preparo l'artifact .zip\n".yellow
784
782
 
@@ -812,7 +810,7 @@ class Release
812
810
  end
813
811
 
814
812
  artifact_path = Dir.glob("_build/qa/rel/fidaty/releases/*/fidaty.tar.gz").first
815
- upload_artifact(artifact_path, "microservices/fidaty/#{revision}-qa.tar.gz")
813
+ upload_artifact(artifact_path, "microservices/fidaty/#{revision}-#{deploy_id}-qa.tar.gz")
816
814
 
817
815
  Dir.chdir '../../'
818
816
  end
@@ -1072,22 +1070,33 @@ class Release
1072
1070
  !resp.contents.empty?
1073
1071
  end
1074
1072
 
1075
- def choose_branch_to_deploy(project_name)
1073
+ def choose_branch_to_deploy(project_name, select_master = false)
1076
1074
  Dir.chdir "projects/#{project_name}"
1077
1075
  output "Recupero la lista dei branch del progetto #{project_name}..."
1078
1076
  out = %x[ git fetch ]
1079
1077
  branches = %x[ git for-each-ref --sort=-committerdate refs/remotes/ --format='%(refname) %(objectname)' | sed 's/refs\\/remotes\\/origin\\///g' ]
1080
1078
  .split("\n").delete_if { |b| b.include?('HEAD') || b.include?('dev') }[0..49]
1081
1079
 
1082
- branch_name = choose do |menu|
1083
- menu.prompt = "Scegli il branch di #{project_name} da deployare: ".cyan
1084
- menu.shell = true
1080
+ master_branch = nil
1085
1081
 
1086
- branches.each do |branch|
1082
+ branches.each do |branch|
1083
+ master_branch = branch if branch.match(/^master\s+/)
1084
+ break unless master_branch.nil?
1085
+ end
1086
+
1087
+ if select_master
1088
+ branch_name = master_branch
1089
+ else
1090
+ branch_name = choose do |menu|
1091
+ menu.prompt = "Scegli il branch di #{project_name} da deployare: ".cyan
1092
+ menu.shell = true
1087
1093
 
1088
- title = @prima.reduce_size(branch, 100)
1089
- msg = "#{title}".light_blue
1090
- menu.choice(msg) { branch }
1094
+ branches.each do |branch|
1095
+ title = @prima.reduce_size(branch, 100)
1096
+ msg = "#{title}".light_blue
1097
+ menu.choice(msg) { branch }
1098
+ menu.default = branch if branch == master_branch
1099
+ end
1091
1100
  end
1092
1101
  end
1093
1102
 
@@ -1102,6 +1111,24 @@ class Release
1102
1111
  File.readlines("bin/local_build_artifact.sh").grep(/DEPLOY_ID=\$4/).size > 0
1103
1112
  end
1104
1113
 
1114
+ def select_branches(project_name = nil)
1115
+ if project_name.nil?
1116
+ @projects["prima"] = choose_branch_to_deploy('prima')
1117
+ @projects["backoffice"] = choose_branch_to_deploy('backoffice')
1118
+ @projects["urania"] = choose_branch_to_deploy('urania')
1119
+ @projects["ermes"] = choose_branch_to_deploy('ermes')
1120
+ @projects["bburago"] = choose_branch_to_deploy('bburago')
1121
+ @projects["hal9000"] = choose_branch_to_deploy('hal9000')
1122
+ @projects["fidaty"] = choose_branch_to_deploy('fidaty')
1123
+ else
1124
+ stop_unless File.directory?("./projects/#{project_name}"), "progetto #{project_name} inesistente o non supportato"
1125
+ @projects[project_name] = choose_branch_to_deploy(project_name)
1126
+ @projects.each_key do |branch_project|
1127
+ @projects[branch_project] = choose_branch_to_deploy(branch_project, true) unless branch_project == project_name
1128
+ end
1129
+ end
1130
+ end
1131
+
1105
1132
  end
1106
1133
 
1107
1134
  def help_content
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.17.2
4
+ version: 0.18.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: 2017-02-06 00:00:00.000000000 Z
14
+ date: 2017-02-13 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: twig