qops 1.2.0 → 1.3.1

Sign up to get free protection for your applications and to get access to all the features.
checksums.yaml CHANGED
@@ -1,7 +1,7 @@
1
1
  ---
2
2
  SHA1:
3
- metadata.gz: fb7dddedf2cf37abd85e3482860ea0ae77feb8df
4
- data.tar.gz: f932e9fbf9cd6bee85570151bb9a216b11947237
3
+ metadata.gz: 5ce6ec6898479b478e84f3f9b124daaa7f0b55fc
4
+ data.tar.gz: 5864daf206d6cb82473cd1cc74ce2a885b499108
5
5
  SHA512:
6
- metadata.gz: 501cc90d1ed27509c1f7402494d609a74482c73ee9f63cba6edd2d31dba2e4c953cab88615d6c629ac7f8367d17e36aab3d7ba08061f5b85d2d675161c422439
7
- data.tar.gz: 67fb96840fb03c74e569193e4e11bc0f0031216ce796b8a9a82637f4603226e01aa3039508dc1545bb787e9dd81f0a051e31a9befd0cf4114b0989cb795d27f2
6
+ metadata.gz: d753d119a25815cc5814b55fb678602e5d16853b8ae399b3b47a04d6251e097ec1eb56520741980b7a7cec72f38d90d896b5e4769a6721bbe644cc67fb768783
7
+ data.tar.gz: 5ff39709b94f8142fa0e80d6c3497a8fed9f5d9360777f3eb32692de575b2ad32c027b86031c806d5b064eb4ae57709f8f7435d967599ec1f42d5b5927205126
@@ -1,8 +1,6 @@
1
1
  class Qops::Deploy < Thor
2
2
  include Qops::DeployHelpers
3
3
 
4
- class_option :custom_json, type: :string, aliases: '-j', desc: 'A custom json that will be used during a deployment of the app. ex: \'{ "custom_attrs": "are awesome!"}\''
5
-
6
4
  desc 'app', 'Deploy the latest version of the app'
7
5
  def app
8
6
  initialize_run
@@ -19,7 +17,7 @@ class Qops::Deploy < Thor
19
17
  end
20
18
 
21
19
  if config.deploy_type == 'staging'
22
- puts "Preparing to deploy branch #{default_revision} to instance #{online_instances.first.hostname}"
20
+ puts "Preparing to deploy branch #{revision_used} to instance #{online_instances.first.hostname}"
23
21
  else
24
22
  puts "Preparing to deploy default branch to all (online) servers (#{online_instances.map(&:hostname).join(', ')})"
25
23
  end
@@ -104,7 +102,7 @@ class Qops::Deploy < Thor
104
102
  @_custom_json[:deploy] = {
105
103
  application_name => {
106
104
  scm: {
107
- revision: default_revision
105
+ revision: revision_used
108
106
  }
109
107
  }
110
108
  }
@@ -4,6 +4,7 @@ module Qops::DeployHelpers
4
4
  include Qops::Helpers
5
5
 
6
6
  included do
7
+ class_option :custom_json, type: :string, aliases: '-j', desc: 'A custom json that will be used during a deployment of the app. ex: \'{ "custom_attrs": "are awesome!"}\''
7
8
  class_option :branch, type: :string, aliases: '-b', desc: 'The branch to use when deploying to staging type environments'
8
9
  class_option :hostname, type: :string, aliases: '-h', desc: 'Fully override the hostname that qops would normally give the instance'
9
10
  end
@@ -49,14 +50,32 @@ module Qops::DeployHelpers
49
50
 
50
51
  def tag_instance(instance)
51
52
  print "Tagging instance #{instance.hostname}\n"
53
+
54
+ tags = [
55
+ {
56
+ key: 'environment',
57
+ value: config.deploy_type
58
+ },
59
+ {
60
+ key: 'branch',
61
+ value: revision_used
62
+ },
63
+ {
64
+ key: 'app',
65
+ value: config.app_name
66
+ }
67
+ ]
68
+
69
+ if config.deploy_type == 'staging'
70
+ tags << {
71
+ key: 'cleanable',
72
+ value: 'true'
73
+ }
74
+ end
75
+
52
76
  config.ec2.create_tags(
53
77
  resources: [instance.ec2_instance_id],
54
- tags: [
55
- {
56
- key: 'environment',
57
- value: config.deploy_type
58
- }
59
- ]
78
+ tags: tags
60
79
  )
61
80
  end
62
81
 
@@ -69,7 +88,7 @@ module Qops::DeployHelpers
69
88
  # Alternative flow if user has not overridden the hostname
70
89
  else
71
90
  if config.deploy_type == 'staging'
72
- @requested_hostname = default_revision.parameterize
91
+ @requested_hostname = revision_used.parameterize
73
92
  elsif config.deploy_type == 'production'
74
93
  @requested_hostname = config.app_name
75
94
  existing_hostnames = retrieve_instances.map(&:hostname)
@@ -84,7 +103,7 @@ module Qops::DeployHelpers
84
103
  @requested_hostname
85
104
  end
86
105
 
87
- def default_revision
106
+ def revision_used
88
107
  return 'master' unless config.deploy_type == 'staging'
89
108
  if options[:branch].present?
90
109
  options[:branch]
@@ -154,6 +154,19 @@ class Qops::Instance < Thor # rubocop:disable Metrics/ClassLength
154
154
  retrieve_instances.each do |instance|
155
155
  next if instance.hostname == "#{config.hostname_prefix}master"
156
156
 
157
+ ec2instances = config.ec2.describe_instances(instance_ids: [instance.ec2_instance_id])
158
+ next if ec2instances.reservations.empty?
159
+
160
+ # Get various tag values
161
+ ec2instance = ec2instances.reservations.first.instances.first
162
+ environment = ec2instance.tags.find { |t| t.key == 'environment' }
163
+ cleanable = ec2instance.tags.find { |t| t.key == 'cleanable' }
164
+ branch = ec2instance.tags.find { |t| t.key == 'branch' }
165
+
166
+ next if !cleanable || cleanable.value != 'true'
167
+ next if !environment || environment.value != 'staging'
168
+ next if !branch || branch.value == 'master'
169
+
157
170
  # Find the latest command since the instance was deployed
158
171
  latest_command = Time.parse(instance.created_at)
159
172
  config.opsworks.describe_commands(instance_id: instance.instance_id).commands.each do |command|
data/lib/qops/version.rb CHANGED
@@ -1,4 +1,4 @@
1
1
  # frozen_string_literal: true
2
2
  module Qops
3
- VERSION = '1.2.0'.freeze
3
+ VERSION = '1.3.1'.freeze
4
4
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: qops
3
3
  version: !ruby/object:Gem::Version
4
- version: 1.2.0
4
+ version: 1.3.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Matthew Basset
@@ -11,7 +11,7 @@ authors:
11
11
  autorequire:
12
12
  bindir: bin
13
13
  cert_chain: []
14
- date: 2016-04-22 00:00:00.000000000 Z
14
+ date: 2016-04-25 00:00:00.000000000 Z
15
15
  dependencies:
16
16
  - !ruby/object:Gem::Dependency
17
17
  name: qthor