eb_deployer 0.2.5 → 0.2.6
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.
- data/eb_deployer.gemspec +1 -0
- data/lib/eb_deployer.rb +9 -3
- data/lib/eb_deployer/application.rb +3 -2
- data/lib/eb_deployer/default_config.yml +6 -0
- data/lib/eb_deployer/version.rb +1 -1
- data/test/config_loader_test.rb +2 -0
- data/test/deploy_test.rb +7 -0
- metadata +4 -3
data/eb_deployer.gemspec
CHANGED
@@ -7,6 +7,7 @@ Gem::Specification.new do |gem|
|
|
7
7
|
gem.description = %q{For automate blue green deployment flow on Elasti Beanstalk.}
|
8
8
|
gem.summary = %q{Low friction deployments should be a breeze. Elastic Beanstalk provides a great foundation for performing Blue-Green deployments, and EbDeployer add a missing top to automate the whole flow out of box.}
|
9
9
|
gem.homepage = "https://github.com/ThoughtWorksStudios/eb_deployer"
|
10
|
+
gem.license = 'MIT'
|
10
11
|
|
11
12
|
gem.add_runtime_dependency 'aws-sdk'
|
12
13
|
gem.add_development_dependency 'minitest'
|
data/lib/eb_deployer.rb
CHANGED
@@ -31,7 +31,7 @@ module EbDeployer
|
|
31
31
|
# @option opts [Symbol] :application application name
|
32
32
|
# @option opts [Symbol] :environment environment name (e.g. staging, production)
|
33
33
|
# @option opts [Symbol] :region AWS Region (e.g. "us-west-2", "us-east-1")
|
34
|
-
#
|
34
|
+
#
|
35
35
|
def self.query_resource_output(key, opts)
|
36
36
|
# AWS.config(:logger => Logger.new($stdout))
|
37
37
|
if region = opts[:region]
|
@@ -45,7 +45,7 @@ module EbDeployer
|
|
45
45
|
end
|
46
46
|
|
47
47
|
|
48
|
-
#
|
48
|
+
#
|
49
49
|
# Deploy a package to specfied environments on elastic beanstalk
|
50
50
|
#
|
51
51
|
# @param [Hash] opts
|
@@ -112,6 +112,11 @@ module EbDeployer
|
|
112
112
|
#
|
113
113
|
# @option opts [Symbol] :settings See `option_settings`
|
114
114
|
#
|
115
|
+
# @option opts [Symbol] :package_bucket Name of s3 bucket where uploaded application
|
116
|
+
# packages will be stored. Note that the string ".packages" will be added as
|
117
|
+
# a suffix to your bucket. So, if "thoughtworks.simple" is passed as the bucket name,
|
118
|
+
# the actual s3 bucket name will be thoughtworks.simple.packages.
|
119
|
+
#
|
115
120
|
# @option opts [Symbol] :smoke_test Value should be a proc or a lambda which
|
116
121
|
# accept single argument that will passed in as environment DNS name. Smoke
|
117
122
|
# test proc or lambda will be called at the end of the deployment for
|
@@ -166,8 +171,9 @@ module EbDeployer
|
|
166
171
|
cname_prefix = opts[:cname_prefix] || [app, env_name].join('-')
|
167
172
|
smoke_test = opts[:smoke_test] || Proc.new {}
|
168
173
|
phoenix_mode = opts[:phoenix_mode]
|
174
|
+
bucket = opts[:package_bucket] || app
|
169
175
|
|
170
|
-
application = Application.new(app, bs, s3)
|
176
|
+
application = Application.new(app, bs, s3, bucket)
|
171
177
|
|
172
178
|
cf = CloudFormationProvisioner.new("#{app}-#{env_name}", cf)
|
173
179
|
|
@@ -1,16 +1,17 @@
|
|
1
1
|
module EbDeployer
|
2
2
|
class Application
|
3
|
-
def initialize(name, eb_driver, s3_driver)
|
3
|
+
def initialize(name, eb_driver, s3_driver, bucket = nil)
|
4
4
|
@name = name
|
5
5
|
@eb_driver = eb_driver
|
6
6
|
@s3_driver = s3_driver
|
7
|
+
@bucket = bucket
|
7
8
|
raise "application name can only contain any combination of uppercase letters, lowercase letters, numbers, dashes (-)" unless @name =~ /^[a-zA-Z0-9.-]+$/
|
8
9
|
end
|
9
10
|
|
10
11
|
def create_version(version_label, package)
|
11
12
|
create_application_if_not_exists
|
12
13
|
|
13
|
-
package = Package.new(package, @
|
14
|
+
package = Package.new(package, @bucket + ".packages", @s3_driver)
|
14
15
|
package.upload
|
15
16
|
|
16
17
|
unless @eb_driver.application_version_labels.include?(version_label)
|
@@ -18,6 +18,12 @@ common:
|
|
18
18
|
# Default strategy is 'blue-green'.
|
19
19
|
# strategy: blue-green
|
20
20
|
|
21
|
+
# Name of s3 bucket where uploaded application packages will be stored.
|
22
|
+
# Note that the string ".packages" will be added as a suffix to your bucket.
|
23
|
+
# So, if "thoughtworks.simple" is passed as the bucket name, the actual s3 bucket
|
24
|
+
# name will be thoughtworks.simple.packages. Default to application name.
|
25
|
+
# package_bucket: my-s3-bucket
|
26
|
+
|
21
27
|
# If phoenix mode is turned 'on', it will terminate the old elastic
|
22
28
|
# beanstalk environment and recreate a new one on deploy. For blue-green
|
23
29
|
# deployment it will terminate the inactive environment first then
|
data/lib/eb_deployer/version.rb
CHANGED
data/test/config_loader_test.rb
CHANGED
@@ -30,6 +30,7 @@ YAML
|
|
30
30
|
application: myapp
|
31
31
|
common:
|
32
32
|
strategy: inplace-update
|
33
|
+
package_bucket: thoughtworks
|
33
34
|
phoenix_mode: true
|
34
35
|
option_settings:
|
35
36
|
- namespace: aws:autoscaling:launchconfiguration
|
@@ -41,6 +42,7 @@ environments:
|
|
41
42
|
production:
|
42
43
|
YAML
|
43
44
|
assert_equal('inplace-update', config[:strategy])
|
45
|
+
assert_equal('thoughtworks', config[:package_bucket])
|
44
46
|
assert_equal([{'namespace' => 'aws:autoscaling:launchconfiguration',
|
45
47
|
'option_name' => 'InstanceType',
|
46
48
|
'value' => 'm1.small'}], config[:option_settings])
|
data/test/deploy_test.rb
CHANGED
@@ -195,6 +195,13 @@ class DeployTest < Minitest::Test
|
|
195
195
|
assert_equal({'a' => 1 }, @cf_driver.stack_config('simple-production')[:parameters])
|
196
196
|
end
|
197
197
|
|
198
|
+
def test_set_s3_bucket_name_on_deployment
|
199
|
+
deploy(:application => 'simple',
|
200
|
+
:environment => "production",
|
201
|
+
:package_bucket => 'thoughtworks.simple')
|
202
|
+
|
203
|
+
assert @s3_driver.bucket_exists?('thoughtworks.simple.packages')
|
204
|
+
end
|
198
205
|
|
199
206
|
def test_transforms_resource_provsion_output_to_elastic_beanstalk_settings
|
200
207
|
cf_template = temp_file(JSON.dump({
|
metadata
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eb_deployer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.2.
|
4
|
+
version: 0.2.6
|
5
5
|
prerelease:
|
6
6
|
platform: ruby
|
7
7
|
authors:
|
@@ -10,7 +10,7 @@ authors:
|
|
10
10
|
autorequire:
|
11
11
|
bindir: bin
|
12
12
|
cert_chain: []
|
13
|
-
date: 2013-10-
|
13
|
+
date: 2013-10-03 00:00:00.000000000 Z
|
14
14
|
dependencies:
|
15
15
|
- !ruby/object:Gem::Dependency
|
16
16
|
name: aws-sdk
|
@@ -84,7 +84,8 @@ files:
|
|
84
84
|
- test/smoke_test_test.rb
|
85
85
|
- test/test_helper.rb
|
86
86
|
homepage: https://github.com/ThoughtWorksStudios/eb_deployer
|
87
|
-
licenses:
|
87
|
+
licenses:
|
88
|
+
- MIT
|
88
89
|
post_install_message:
|
89
90
|
rdoc_options: []
|
90
91
|
require_paths:
|