prima-twig 0.17.2 → 0.18.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 +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