prima-twig 0.2.18 → 0.2.19

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 +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