prima-twig 0.2.18 → 0.2.19

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 +53 -29
  3. metadata +2 -2
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: dffbbac34b300e8659a961e10bac097878b1a172
4
- data.tar.gz: 116b185e03b8d1580b68b2b14f875b20919b79b7
3
+ metadata.gz: 9f76d6be32c5245924b220372482cf52dd85b613
4
+ data.tar.gz: b79aa0cd8fc006dbeb4d1d515bbf4b44c699510e
5
5
  SHA512:
6
- metadata.gz: f736dd5d8c567f2d4610da7dab519e86ffe5dd685c1901b249a8db228e63035a9ecadbb677c289960adb3f9d1f4a9d93a10e15b4d83a924ac7da5725fb153bbd
7
- data.tar.gz: 62a1ea4af43f55a189411f25ad156c16234010f569212e6f3021327b1dfbe8a03f62ec947334e8b4627e44f7347c2ee33b8c829b3b019b11c834ca66cf2c83e7
6
+ metadata.gz: c5b6085fd381a06173796a10e47238c5afec6d43d6af6f48ed62cc53ce84096b1cd60c931333ddc84cf1b2c405ca9c1c5d199a053dc180bf42fea1b9db7aceed
7
+ data.tar.gz: 8725627465a374d55c400edfaa60a453acca8357c184bda4ad35303a024788c205c2e76d3780663756b61f7523d01c2b22b8b9c073ea0c89735888ced83d81fa
@@ -20,12 +20,15 @@ class Release
20
20
  @version_label = @environment_name + '-' + @git_rev[0,5]
21
21
  @user = `git config user.name`.downcase
22
22
  @user = @user[0,1] + @user.split(' ').last
23
+ @artifact_path = '/tmp/prima-artifact.zip'
24
+ @ec2_key_name = "eb_#{@user}"
25
+ @ssh_key_path = "#{ENV['HOME']}/.ssh/eb_#{@user}"
23
26
  end
24
27
 
25
28
  def execute! args
26
29
  possible_args = ["start", "finish", "deploy"]
27
30
  stop_if args.empty?, [:wrong_args, possible_args]
28
- stop_if args.length > 2, [:wrong_args, possible_args]
31
+ stop_if args.length > 3, [:wrong_args, possible_args]
29
32
 
30
33
  stop_if @prima.head_detached?, :detached_head
31
34
 
@@ -38,7 +41,8 @@ class Release
38
41
  if ['terminate', 'stop', 'shutdown', 'halt', 'destroy'].include? args[1]
39
42
  deploy_shutdown!
40
43
  else
41
- deploy_feature!
44
+ ignoranza = args[1] == 'ignorante' ? true : false
45
+ deploy_feature! ignoranza
42
46
  end
43
47
  else
44
48
  stop_if true, [:wrong_args, possible_args]
@@ -51,26 +55,42 @@ class Release
51
55
  def finish_feature!
52
56
  end
53
57
 
54
- def deploy_feature!
55
- app_name = 'prima-qa'
58
+ def deploy_feature!(ignoranza=false)
56
59
 
57
- ssh_key_path = "~/.ssh/eb_#{@user}"
58
- ec2_key_name = "eb_#{@user}"
59
- artifact_path = '/tmp/prima-artifact.zip'
60
+ stop_if application_version_exists?(@application_name, @version_label), "La versione #{@version_label} esiste gia', ti sei ricordato di committare?".red unless ignoranza
60
61
 
61
- stop_if application_version_exists?(@application_name, @version_label), "La versione #{@version_label} esiste gia', ti sei ricordato di committare?".red
62
-
63
- manage_ec2_keypair(ec2_key_name, ssh_key_path)
62
+ manage_ec2_keypair(@ec2_key_name, @ssh_key_path)
64
63
 
65
64
  build_release!
66
65
 
67
66
  exec_step 'rsync -avd --exclude-from app/deploy/aws_docker/qa/.rsync-exclude-qa . /tmp/prima'
68
67
  exec_step 'cd /tmp/prima && cp app/deploy/aws_docker/qa/Dockerrun.aws.json .'
69
- exec_step "rm -f #{artifact_path}; cd /tmp/prima && zip -ryq #{artifact_path} ."
70
- output "Upload dell'artifact in corso (#{(File.size(artifact_path).to_f / 2**20).round(2)} MiB)\n".yellow
68
+
69
+ if ignoranza
70
+ deploy_ignorante
71
+ else
72
+ deploy_serio
73
+ end
74
+
75
+ endpoint_url = get_eb_endpoint_url(@application_name, @environment_name)
76
+ output "Endpoint url: #{endpoint_url}\n".cyan
77
+ Launchy.open(endpoint_url) if @prima.yesno 'Vuoi aprirlo nel browser?'.blue
78
+ output "Deploy effettuato, everything is awesome!\n".green
79
+ end
80
+
81
+ def deploy_shutdown!
82
+ stop_unless environment_exists?(@application_name, @environment_name), "L'environment #{@environment_name} non esiste!"
83
+ shutdown_environment(@environment_name) if @prima.yesno("Sei sicuro di voler spegnere l'env?".blue)
84
+ output "L'environment #{@environment_name} e' stato disrutto con successo!\n".green
85
+ output "Potrebbe comunque passare qualche minuto prima che l'operazione finisca\n".yellow
86
+ end
87
+
88
+ def deploy_serio
89
+ exec_step "rm -f #{@artifact_path}; cd /tmp/prima && zip -ryq #{@artifact_path} ."
90
+ output "Upload dell'artifact in corso (#{(File.size(@artifact_path).to_f / 2**20).round(2)} MiB)\n".yellow
71
91
  s3 = Aws::S3::Resource.new
72
92
  obj = s3.bucket(@s3_bucket).object(@s3_key)
73
- obj.upload_file(artifact_path)
93
+ obj.upload_file(@artifact_path)
74
94
 
75
95
  output "#{@s3_bucket}/#{@s3_key} uploadato con successo!\n".green
76
96
 
@@ -105,27 +125,27 @@ class Release
105
125
  sleep 1
106
126
  seconds_elapsed += 1
107
127
  end
108
- run_commands(@environment_name, ssh_key_path)
128
+ run_commands(@environment_name, @ssh_key_path)
109
129
  else
110
130
  output "Environment #{@environment_name} non presente, inizio la creazione...\n".yellow
111
- create_eb_environment(@application_name, @environment_name, @version_label, @git_rev, ec2_key_name)
131
+ create_eb_environment(@application_name, @environment_name, @version_label, @git_rev, @ec2_key_name)
112
132
  output "Environment #{@environment_name} creato!\n".green
113
133
  is_eb_ready = is_eb_ready?(@application_name, @environment_name)
114
134
  wait_for_eb_ready(@application_name, @environment_name) unless is_eb_ready
115
- run_commands(@environment_name, ssh_key_path)
135
+ run_commands(@environment_name, @ssh_key_path)
116
136
  end
117
-
118
- endpoint_url = get_eb_endpoint_url(@application_name, @environment_name)
119
- output "Endpoint url: #{endpoint_url}\n".cyan
120
- Launchy.open(endpoint_url) if @prima.yesno 'Vuoi aprirlo nel browser?'.blue
121
- output "Deploy effettuato, everything is awesome!\n".green
122
137
  end
123
138
 
124
- def deploy_shutdown!
125
- stop_unless environment_exists?(@application_name, @environment_name), "L'environment #{@environment_name} non esiste!"
126
- shutdown_environment(@environment_name) if @prima.yesno("Sei sicuro di voler spegnere l'env?".blue)
127
- output "L'environment #{@environment_name} e' stato disrutto con successo!\n".green
128
- output "Potrebbe comunque passare qualche minuto prima che l'operazione finisca\n".yellow
139
+ def deploy_ignorante
140
+ if environment_exists?(@application_name, @environment_name)
141
+ public_ip_address = get_ec2_public_ip_address @environment_name
142
+ is_eb_ready = is_eb_ready?(@application_name, @environment_name)
143
+ wait_for_eb_ready(@application_name, @environment_name) unless is_eb_ready
144
+ exec_step "cd /tmp/prima && rsync -azd -e 'ssh -o StrictHostKeyChecking=no -i #{@ssh_key_path}' --rsync-path='sudo rsync' --exclude-from app/deploy/aws_docker/qa/.rsync-exclude-qa . ec2-user@#{public_ip_address}:/var/app/current/"
145
+ output "Deploy ignorante effettuato!".green
146
+ else
147
+ output "Non puoi fare il deploy ignorante se l'environment non esiste".red
148
+ end
129
149
  end
130
150
 
131
151
  def build_release!
@@ -340,18 +360,22 @@ class Release
340
360
  output "Environment inizializzato!\n".green
341
361
  end
342
362
 
343
- def run_commands(environment_name, ssh_key_path)
363
+ def get_ec2_public_ip_address(environment_name)
344
364
  instance_id = @eb.describe_environment_resources({
345
365
  environment_name: environment_name,
346
366
  }).environment_resources.instances[0].id
347
367
 
348
368
  resp = @ec2.describe_instances({instance_ids: [instance_id]})
349
369
 
350
- public_ip_address = resp.reservations[0].instances[0].public_ip_address
370
+ resp.reservations[0].instances[0].public_ip_address
371
+ end
372
+
373
+ def run_commands(environment_name, ssh_key_path)
374
+ public_ip_address = get_ec2_public_ip_address environment_name
351
375
 
352
376
  output "L'IP pubblico della macchina e': #{public_ip_address}\n".cyan
353
377
 
354
- base_cmd = "ssh -q -tt -o StrictHostKeyChecking=no -i #{ssh_key_path} ec2-user@#{public_ip_address}"
378
+ base_cmd = "ssh -tt -o StrictHostKeyChecking=no -i #{ssh_key_path} ec2-user@#{public_ip_address}"
355
379
  cmd = "#{base_cmd} sudo -i docker ps --filter='name=-php-' | awk '{print $1 }' | grep -v CONTAINER"
356
380
  container_id = %x[ #{cmd} | grep -v 'Warning:' ].strip
357
381
 
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.2.18
4
+ version: 0.2.19
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: 2015-12-21 00:00:00.000000000 Z
14
+ date: 2015-12-22 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: twig