cf_deployer 1.3.6 → 1.3.8
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.
- checksums.yaml +4 -4
- data/.gitignore +1 -0
- data/ChangeLog.md +15 -0
- data/Gemfile +0 -8
- data/cf_deployer.gemspec +4 -0
- data/lib/cf_deployer/config_validation.rb +1 -1
- data/lib/cf_deployer/driver/auto_scaling_group.rb +9 -4
- data/lib/cf_deployer/version.rb +1 -1
- data/lib/cf_deployer.rb +1 -1
- data/spec/functional/deploy_spec.rb +4 -4
- data/spec/functional/kill_inactive_spec.rb +1 -1
- data/spec/unit/driver/auto_scaling_group_spec.rb +7 -0
- metadata +58 -3
- data/Gemfile.lock +0 -54
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 99837edd085628d600239c517e9384c05dd2186e
|
4
|
+
data.tar.gz: ff5b6d33be922e3aeaa0f609991f799e0064e623
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 7ba8da26ac2cfb06a31fa2acff9ff3fce51c2a2328c79dc6c9542d78b9741d84bf8296e10945eb5a50b631014ae9c9ea8463ee13ab0d2ff6a6ccd7fbd1714941
|
7
|
+
data.tar.gz: 8b18b73a9110ba2d0dbcb953207770e2d83dd92bfcbf72db7a4a7a855f62042ea035141ff7f4a6523871166f8a214c3a594cd8c4d8e8a2f8eb7b9b87ce08308d
|
data/.gitignore
CHANGED
data/ChangeLog.md
CHANGED
@@ -31,3 +31,18 @@ version 1.3.1
|
|
31
31
|
|
32
32
|
version 1.3.2
|
33
33
|
- Display details of error message when referenced components do not exist
|
34
|
+
|
35
|
+
version 1.3.3
|
36
|
+
- increase default timeout from 900 to 1800
|
37
|
+
|
38
|
+
version 1.3.6
|
39
|
+
- explicitly enforce aws-sdk v.1.44.0 as a dependency
|
40
|
+
|
41
|
+
version 1.3.7
|
42
|
+
- Increased the number of AWS-SDK retries
|
43
|
+
- Added missing after-update hook to config validation
|
44
|
+
- Added rescue around healthy_instance_count, to prevent intermittent failures from stopping deployment
|
45
|
+
|
46
|
+
version 1.3.8
|
47
|
+
- Moved dependencies out of Gemfile and into gemspec
|
48
|
+
- Removed Gemfile.lock
|
data/Gemfile
CHANGED
data/cf_deployer.gemspec
CHANGED
@@ -14,6 +14,10 @@ Gem::Specification.new do |gem|
|
|
14
14
|
gem.add_runtime_dependency 'thor'
|
15
15
|
gem.add_runtime_dependency 'rainbow'
|
16
16
|
gem.add_runtime_dependency 'diffy'
|
17
|
+
gem.add_development_dependency 'yard', '~> 0.8.7.6'
|
18
|
+
gem.add_development_dependency 'pry', '~> 0.10.1'
|
19
|
+
gem.add_development_dependency 'rspec', '2.14.1'
|
20
|
+
gem.add_development_dependency 'rake', '~> 10.3.0'
|
17
21
|
|
18
22
|
gem.files = `git ls-files`.split($\).reject {|f| f =~ /^samples\// }
|
19
23
|
gem.executables = gem.files.grep(%r{^bin/}).map{ |f| File.basename(f) }
|
@@ -6,7 +6,7 @@ module CfDeployer
|
|
6
6
|
|
7
7
|
CommonInputs = [:application, :environment, :component, :region]
|
8
8
|
EnvironmentOptions = [:settings, :inputs, :tags, :components]
|
9
|
-
ComponentOptions = [:settings, :inputs, :tags, :'depends-on', :'deployment-strategy', :'before-destroy', :'after-create', :'after-swap', :'defined_outputs', :'defined_parameters', :config_dir, :capabilities, :notify]
|
9
|
+
ComponentOptions = [:settings, :inputs, :tags, :'depends-on', :'deployment-strategy', :'before-destroy', :'after-create', :'after-swap', :'after-update', :'defined_outputs', :'defined_parameters', :config_dir, :capabilities, :notify]
|
10
10
|
|
11
11
|
def validate config, validate_inputs = true
|
12
12
|
@config = config
|
@@ -53,11 +53,16 @@ module CfDeployer
|
|
53
53
|
private
|
54
54
|
|
55
55
|
def healthy_instance_count
|
56
|
-
|
57
|
-
|
56
|
+
begin
|
57
|
+
count = auto_scaling_instances.count do |instance|
|
58
|
+
instance.health_status == 'HEALTHY' && (load_balancers.empty? || instance_in_service?( instance.ec2_instance ))
|
59
|
+
end
|
60
|
+
Log.info "Healthy instance count: #{count}"
|
61
|
+
count
|
62
|
+
rescue => e
|
63
|
+
Log.info "Unable to determine healthy instance count due to error: #{e.message}"
|
64
|
+
-1
|
58
65
|
end
|
59
|
-
Log.info "Healthy instance count: #{count}"
|
60
|
-
count
|
61
66
|
end
|
62
67
|
|
63
68
|
def instance_in_service? instance
|
data/lib/cf_deployer/version.rb
CHANGED
data/lib/cf_deployer.rb
CHANGED
@@ -33,14 +33,14 @@ describe 'Deploy' do
|
|
33
33
|
allow(CfDeployer::Stack).to receive(:new).with('cf-deployer-sample-cname-swap-dev-web-G', 'web', anything()) { green_stack }
|
34
34
|
allow(CfDeployer::Driver::Elb).to receive(:new) { elb_driver }
|
35
35
|
allow(CfDeployer::Driver::Route53).to receive(:new) { dns_driver }
|
36
|
-
allow(dns_driver).to receive(:find_alias_target).with('
|
37
|
-
allow(elb_driver).to receive(:find_dns_and_zone_id).with('BLUE-elb') { {:dns_name => 'blue-elb.
|
38
|
-
allow(elb_driver).to receive(:find_dns_and_zone_id).with('GREEN-elb') { {:dns_name => 'green-elb.
|
36
|
+
allow(dns_driver).to receive(:find_alias_target).with('aws-dev.manheim.com', 'cf-deployer-test.aws-dev.manheim.com'){ 'BLUE-elb.aws-dev.manheim.com' }
|
37
|
+
allow(elb_driver).to receive(:find_dns_and_zone_id).with('BLUE-elb') { {:dns_name => 'blue-elb.aws-dev.manheim.com', :canonical_hosted_zone_name_id => 'BLUE111'}}
|
38
|
+
allow(elb_driver).to receive(:find_dns_and_zone_id).with('GREEN-elb') { {:dns_name => 'green-elb.aws-dev.manheim.com', :canonical_hosted_zone_name_id => 'GREEN111'}}
|
39
39
|
allow(CfDeployer::Driver::AutoScalingGroup).to receive(:new).with('blueASG') { blue_asg_driver }
|
40
40
|
allow(CfDeployer::Driver::AutoScalingGroup).to receive(:new).with('greenASG') { green_asg_driver }
|
41
41
|
allow(green_asg_driver).to receive(:describe) {{desired: 0, min: 0, max: 0}}
|
42
42
|
allow(blue_asg_driver).to receive(:describe) {{desired: 2, min: 1, max: 5}}
|
43
|
-
allow(dns_driver).to receive(:set_alias_target).with('
|
43
|
+
allow(dns_driver).to receive(:set_alias_target).with('aws-dev.manheim.com', 'cf-deployer-test.aws-dev.manheim.com', 'GREEN111', 'green-elb.aws-dev.manheim.com')
|
44
44
|
expect(green_asg_driver).to receive(:warm_up).with(2)
|
45
45
|
CfDeployer::CLI.start(['deploy', 'dev', 'web', '-f', 'samples/cname-swap/cf_deployer.yml'])
|
46
46
|
expect(green_stack).to be_deleted
|
@@ -26,7 +26,7 @@ describe 'Kill Inactive' do
|
|
26
26
|
allow(CfDeployer::Stack).to receive(:new).with('cf-deployer-sample-cname-swap-test-web-G', 'web', anything) { green_stack }
|
27
27
|
dns_driver = double('route53 driver')
|
28
28
|
allow(CfDeployer::Driver::Route53).to receive(:new) { dns_driver }
|
29
|
-
allow(dns_driver).to receive(:find_alias_target).with('
|
29
|
+
allow(dns_driver).to receive(:find_alias_target).with('aws-dev.manheim.com', 'cf-deployer-test.aws-dev.manheim.com'){ 'BLUE-elb.aws.amazon.com' }
|
30
30
|
|
31
31
|
CfDeployer::CLI.start(['kill_inactive', 'test', 'web', '-f', 'samples/cname-swap/cf_deployer.yml'])
|
32
32
|
expect(green_stack).to be_deleted
|
@@ -57,6 +57,13 @@ describe 'Autoscaling group driver' do
|
|
57
57
|
expect(@driver.send(:healthy_instance_count)).to eql 4
|
58
58
|
end
|
59
59
|
|
60
|
+
it 'health check should be resilient against intermittent errors' do
|
61
|
+
instance5 = double('instance5')
|
62
|
+
expect(instance5).to receive(:health_status).and_raise(StandardError)
|
63
|
+
allow(group).to receive(:auto_scaling_instances){ [ instance5 ] }
|
64
|
+
expect(@driver.send(:healthy_instance_count)).to eql -1
|
65
|
+
end
|
66
|
+
|
60
67
|
context 'when an elb is associated with the auto scaling group' do
|
61
68
|
it 'should not include instances that are HEALTHY but not associated with the elb' do
|
62
69
|
instance_collection = double('instance_collection', :health => [{:instance => ec2_instance1, :state => 'InService'}])
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: cf_deployer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 1.3.
|
4
|
+
version: 1.3.8
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Jame Brechtel
|
@@ -11,7 +11,7 @@ authors:
|
|
11
11
|
autorequire:
|
12
12
|
bindir: bin
|
13
13
|
cert_chain: []
|
14
|
-
date: 2015-
|
14
|
+
date: 2015-07-27 00:00:00.000000000 Z
|
15
15
|
dependencies:
|
16
16
|
- !ruby/object:Gem::Dependency
|
17
17
|
name: aws-sdk
|
@@ -83,6 +83,62 @@ dependencies:
|
|
83
83
|
- - '>='
|
84
84
|
- !ruby/object:Gem::Version
|
85
85
|
version: '0'
|
86
|
+
- !ruby/object:Gem::Dependency
|
87
|
+
name: yard
|
88
|
+
requirement: !ruby/object:Gem::Requirement
|
89
|
+
requirements:
|
90
|
+
- - ~>
|
91
|
+
- !ruby/object:Gem::Version
|
92
|
+
version: 0.8.7.6
|
93
|
+
type: :development
|
94
|
+
prerelease: false
|
95
|
+
version_requirements: !ruby/object:Gem::Requirement
|
96
|
+
requirements:
|
97
|
+
- - ~>
|
98
|
+
- !ruby/object:Gem::Version
|
99
|
+
version: 0.8.7.6
|
100
|
+
- !ruby/object:Gem::Dependency
|
101
|
+
name: pry
|
102
|
+
requirement: !ruby/object:Gem::Requirement
|
103
|
+
requirements:
|
104
|
+
- - ~>
|
105
|
+
- !ruby/object:Gem::Version
|
106
|
+
version: 0.10.1
|
107
|
+
type: :development
|
108
|
+
prerelease: false
|
109
|
+
version_requirements: !ruby/object:Gem::Requirement
|
110
|
+
requirements:
|
111
|
+
- - ~>
|
112
|
+
- !ruby/object:Gem::Version
|
113
|
+
version: 0.10.1
|
114
|
+
- !ruby/object:Gem::Dependency
|
115
|
+
name: rspec
|
116
|
+
requirement: !ruby/object:Gem::Requirement
|
117
|
+
requirements:
|
118
|
+
- - '='
|
119
|
+
- !ruby/object:Gem::Version
|
120
|
+
version: 2.14.1
|
121
|
+
type: :development
|
122
|
+
prerelease: false
|
123
|
+
version_requirements: !ruby/object:Gem::Requirement
|
124
|
+
requirements:
|
125
|
+
- - '='
|
126
|
+
- !ruby/object:Gem::Version
|
127
|
+
version: 2.14.1
|
128
|
+
- !ruby/object:Gem::Dependency
|
129
|
+
name: rake
|
130
|
+
requirement: !ruby/object:Gem::Requirement
|
131
|
+
requirements:
|
132
|
+
- - ~>
|
133
|
+
- !ruby/object:Gem::Version
|
134
|
+
version: 10.3.0
|
135
|
+
type: :development
|
136
|
+
prerelease: false
|
137
|
+
version_requirements: !ruby/object:Gem::Requirement
|
138
|
+
requirements:
|
139
|
+
- - ~>
|
140
|
+
- !ruby/object:Gem::Version
|
141
|
+
version: 10.3.0
|
86
142
|
description: For automatic blue green deployment flow on CloudFormation.
|
87
143
|
email:
|
88
144
|
- jbrechtel@gmail.com
|
@@ -99,7 +155,6 @@ files:
|
|
99
155
|
- DETAILS.md
|
100
156
|
- FAQ.md
|
101
157
|
- Gemfile
|
102
|
-
- Gemfile.lock
|
103
158
|
- LICENSE
|
104
159
|
- QUICKSTART.md
|
105
160
|
- README.md
|
data/Gemfile.lock
DELETED
@@ -1,54 +0,0 @@
|
|
1
|
-
PATH
|
2
|
-
remote: .
|
3
|
-
specs:
|
4
|
-
cf_deployer (1.3.6)
|
5
|
-
aws-sdk (= 1.44.0)
|
6
|
-
diffy
|
7
|
-
log4r
|
8
|
-
rainbow
|
9
|
-
thor
|
10
|
-
|
11
|
-
GEM
|
12
|
-
remote: https://rubygems.org/
|
13
|
-
specs:
|
14
|
-
aws-sdk (1.44.0)
|
15
|
-
json (~> 1.4)
|
16
|
-
nokogiri (>= 1.4.4)
|
17
|
-
coderay (1.1.0)
|
18
|
-
diff-lcs (1.2.5)
|
19
|
-
diffy (3.0.6)
|
20
|
-
json (1.8.2)
|
21
|
-
log4r (1.1.10)
|
22
|
-
method_source (0.8.2)
|
23
|
-
mini_portile (0.6.2)
|
24
|
-
nokogiri (1.6.6.2)
|
25
|
-
mini_portile (~> 0.6.0)
|
26
|
-
pry (0.9.12.6)
|
27
|
-
coderay (~> 1.0)
|
28
|
-
method_source (~> 0.8)
|
29
|
-
slop (~> 3.4)
|
30
|
-
rainbow (2.0.0)
|
31
|
-
rake (10.3.0)
|
32
|
-
rspec (2.14.1)
|
33
|
-
rspec-core (~> 2.14.0)
|
34
|
-
rspec-expectations (~> 2.14.0)
|
35
|
-
rspec-mocks (~> 2.14.0)
|
36
|
-
rspec-core (2.14.8)
|
37
|
-
rspec-expectations (2.14.5)
|
38
|
-
diff-lcs (>= 1.1.3, < 2.0)
|
39
|
-
rspec-mocks (2.14.6)
|
40
|
-
slop (3.5.0)
|
41
|
-
thor (0.19.1)
|
42
|
-
yard (0.8.7.4)
|
43
|
-
|
44
|
-
PLATFORMS
|
45
|
-
ruby
|
46
|
-
|
47
|
-
DEPENDENCIES
|
48
|
-
cf_deployer!
|
49
|
-
diffy
|
50
|
-
pry
|
51
|
-
rainbow
|
52
|
-
rake
|
53
|
-
rspec
|
54
|
-
yard
|