eb_deployer 0.3.9 → 0.4.0
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/CHANGELOG.md +4 -0
- data/lib/eb_deployer/eb_environment.rb +9 -25
- data/lib/eb_deployer/version.rb +1 -1
- data/test/blue_green_deploy_test.rb +13 -13
- data/test/deploy_test.rb +3 -3
- data/test/eb_environment_test.rb +7 -84
- data/test/inplace_update_deploy_test.rb +13 -16
- data/test/resources_deploy_test.rb +2 -2
- data/test/test_helper.rb +4 -0
- data/test/tier_setting_deploy_test.rb +2 -2
- data/test/versions_deploy_test.rb +11 -11
- metadata +14 -6
- checksums.yaml +0 -15
- data/test/legacy_env_migrate_deploy_test.rb +0 -94
data/CHANGELOG.md
CHANGED
@@ -1,3 +1,7 @@
|
|
1
|
+
0.4.0
|
2
|
+
====
|
3
|
+
* revert back all changes from 0.3.8 to 0.3.9. Elasticbeanstalk haven't relex the real unique constain. The actually contrain is you can not have environment name cross different application
|
4
|
+
|
1
5
|
0.3.9
|
2
6
|
====
|
3
7
|
* Fix hang problem introduced in 0.3.8 when migrating old ElasticBeanstalk environment.
|
@@ -1,23 +1,22 @@
|
|
1
1
|
module EbDeployer
|
2
2
|
class EbEnvironment
|
3
|
-
attr_reader :app, :name
|
3
|
+
attr_reader :app, :name
|
4
4
|
attr_writer :event_poller
|
5
5
|
|
6
|
-
def self.
|
6
|
+
def self.unique_ebenv_name(env_name, app_name)
|
7
|
+
raise "Environment name #{env_name} is too long, it must be under 15 chars" if env_name.size > 15
|
7
8
|
digest = Digest::SHA1.hexdigest(app_name + '-' + env_name)[0..6]
|
8
9
|
"#{env_name}-#{digest}"
|
9
10
|
end
|
10
11
|
|
11
12
|
def initialize(app, name, eb_driver, creation_opts={})
|
12
13
|
@app = app
|
13
|
-
@name = name
|
14
|
+
@name = self.class.unique_ebenv_name(name, app)
|
14
15
|
@bs = eb_driver
|
15
16
|
@creation_opts = creation_opts
|
16
|
-
@legacy_env_name = self.class.legacy_ebenv_name(@app, @name)
|
17
17
|
end
|
18
18
|
|
19
19
|
def deploy(version_label, settings={})
|
20
|
-
terminate_legacy_env
|
21
20
|
terminate if @creation_opts[:phoenix_mode]
|
22
21
|
create_or_update_env(version_label, settings)
|
23
22
|
smoke_test
|
@@ -25,12 +24,12 @@ module EbDeployer
|
|
25
24
|
end
|
26
25
|
|
27
26
|
def cname_prefix
|
28
|
-
@bs.environment_cname_prefix(@app,
|
27
|
+
@bs.environment_cname_prefix(@app, @name)
|
29
28
|
end
|
30
29
|
|
31
30
|
def swap_cname_with(another)
|
32
31
|
log("Swap CNAME with env #{another.name}")
|
33
|
-
@bs.environment_swap_cname(self.app, self.
|
32
|
+
@bs.environment_swap_cname(self.app, self.name, another.name)
|
34
33
|
end
|
35
34
|
|
36
35
|
def log(msg)
|
@@ -38,30 +37,15 @@ module EbDeployer
|
|
38
37
|
end
|
39
38
|
|
40
39
|
def terminate
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
@bs.delete_environment(@app, env_name)
|
40
|
+
if @bs.environment_exists?(@app, @name)
|
41
|
+
with_polling_events(@name, /terminateEnvironment completed successfully/i) do
|
42
|
+
@bs.delete_environment(@app, @name)
|
45
43
|
end
|
46
44
|
end
|
47
45
|
end
|
48
46
|
|
49
|
-
def defactor_env_name
|
50
|
-
@bs.environment_exists?(@app, @legacy_env_name) ? @legacy_env_name : @name
|
51
|
-
end
|
52
|
-
|
53
47
|
private
|
54
48
|
|
55
|
-
def terminate_legacy_env
|
56
|
-
if @bs.environment_exists?(@app, @legacy_env_name)
|
57
|
-
log("Found legacy environment '#{@legacy_env_name}', eb_deployer will terminate it and create new environment following new name pattern as '#{@name}'.")
|
58
|
-
|
59
|
-
with_polling_events(@legacy_env_name, /terminateEnvironment completed successfully/i) do
|
60
|
-
@bs.delete_environment(@app, @legacy_env_name)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
49
|
def create_or_update_env(version_label, settings)
|
66
50
|
if @bs.environment_exists?(@app, @name)
|
67
51
|
with_polling_events(@name, /Environment update completed successfully/i) do
|
data/lib/eb_deployer/version.rb
CHANGED
@@ -7,8 +7,8 @@ class BlueGreenDeployTest < DeployTest
|
|
7
7
|
:strategy => 'blue-green',
|
8
8
|
:version_label => 42)
|
9
9
|
|
10
|
-
assert @
|
11
|
-
assert_equal 'simple-production', @
|
10
|
+
assert @eb.environment_exists?('simple', t('production-a', 'simple'))
|
11
|
+
assert_equal 'simple-production', @eb.environment_cname_prefix('simple', t('production-a', 'simple'))
|
12
12
|
end
|
13
13
|
|
14
14
|
|
@@ -23,8 +23,8 @@ class BlueGreenDeployTest < DeployTest
|
|
23
23
|
:strategy => 'blue-green',
|
24
24
|
:version_label => 43)
|
25
25
|
|
26
|
-
assert @
|
27
|
-
assert @
|
26
|
+
assert @eb.environment_exists?('simple', t('production-a', 'simple'))
|
27
|
+
assert @eb.environment_exists?('simple', t('production-b', 'simple'))
|
28
28
|
end
|
29
29
|
|
30
30
|
|
@@ -39,9 +39,9 @@ class BlueGreenDeployTest < DeployTest
|
|
39
39
|
:strategy => 'blue-green',
|
40
40
|
:version_label => 43)
|
41
41
|
|
42
|
-
assert_match(/simple-production-inactive/, @
|
42
|
+
assert_match(/simple-production-inactive/, @eb.environment_cname_prefix('simple', t('production-a', 'simple')))
|
43
43
|
|
44
|
-
assert_equal 'simple-production', @
|
44
|
+
assert_equal 'simple-production', @eb.environment_cname_prefix('simple', t('production-b', 'simple'))
|
45
45
|
|
46
46
|
|
47
47
|
deploy(:application => 'simple',
|
@@ -49,9 +49,9 @@ class BlueGreenDeployTest < DeployTest
|
|
49
49
|
:strategy => 'blue-green',
|
50
50
|
:version_label => 44)
|
51
51
|
|
52
|
-
assert_match(/simple-production-inactive/, @
|
52
|
+
assert_match(/simple-production-inactive/, @eb.environment_cname_prefix('simple', t('production-b', 'simple')))
|
53
53
|
|
54
|
-
assert_equal 'simple-production', @
|
54
|
+
assert_equal 'simple-production', @eb.environment_cname_prefix('simple', t('production-a', 'simple'))
|
55
55
|
end
|
56
56
|
|
57
57
|
|
@@ -85,10 +85,10 @@ class BlueGreenDeployTest < DeployTest
|
|
85
85
|
:version_label => 43,
|
86
86
|
:phoenix_mode => true)
|
87
87
|
|
88
|
-
assert_equal [], @
|
88
|
+
assert_equal [], @eb.environments_been_deleted('simple')
|
89
89
|
|
90
|
-
inactive_env = 'production-a'
|
91
|
-
assert_match(/inactive/, @
|
90
|
+
inactive_env = t('production-a', 'simple')
|
91
|
+
assert_match(/inactive/, @eb.environment_cname_prefix('simple', inactive_env))
|
92
92
|
|
93
93
|
|
94
94
|
deploy(:application => 'simple',
|
@@ -97,9 +97,9 @@ class BlueGreenDeployTest < DeployTest
|
|
97
97
|
:version_label => 44,
|
98
98
|
:phoenix_mode => true)
|
99
99
|
|
100
|
-
assert_equal [inactive_env], @
|
100
|
+
assert_equal [inactive_env], @eb.environments_been_deleted('simple')
|
101
101
|
|
102
|
-
assert_equal 'simple-production', @
|
102
|
+
assert_equal 'simple-production', @eb.environment_cname_prefix('simple', inactive_env)
|
103
103
|
end
|
104
104
|
|
105
105
|
|
data/test/deploy_test.rb
CHANGED
@@ -2,7 +2,7 @@ require 'test_helper'
|
|
2
2
|
|
3
3
|
class DeployTest < MiniTest::Unit::TestCase
|
4
4
|
def setup
|
5
|
-
@
|
5
|
+
@eb = EBStub.new
|
6
6
|
@s3_driver = S3Stub.new
|
7
7
|
@cf_driver = CFStub.new
|
8
8
|
@sample_package = sample_file('app-package.war')
|
@@ -17,7 +17,7 @@ class DeployTest < MiniTest::Unit::TestCase
|
|
17
17
|
end
|
18
18
|
|
19
19
|
def query_resource_output(key, opts)
|
20
|
-
EbDeployer.query_resource_output(key, {:bs_driver => @
|
20
|
+
EbDeployer.query_resource_output(key, {:bs_driver => @eb,
|
21
21
|
:s3_driver => @s3_driver,
|
22
22
|
:cf_driver => @cf_driver}.merge(opts))
|
23
23
|
end
|
@@ -33,7 +33,7 @@ class DeployTest < MiniTest::Unit::TestCase
|
|
33
33
|
end
|
34
34
|
|
35
35
|
def stubs
|
36
|
-
{ :bs_driver => @
|
36
|
+
{ :bs_driver => @eb,
|
37
37
|
:s3_driver => @s3_driver,
|
38
38
|
:cf_driver => @cf_driver
|
39
39
|
}
|
data/test/eb_environment_test.rb
CHANGED
@@ -1,24 +1,6 @@
|
|
1
1
|
require 'test_helper'
|
2
2
|
|
3
3
|
class EbEnvironmentTest < MiniTest::Unit::TestCase
|
4
|
-
class PollerStub
|
5
|
-
class Deadloop < StandardError; end
|
6
|
-
|
7
|
-
def initialize(messages)
|
8
|
-
start_time = Time.now.utc
|
9
|
-
@events = messages.map do |message|
|
10
|
-
start_time += 1
|
11
|
-
{:event_date => start_time, :message => message}
|
12
|
-
end
|
13
|
-
end
|
14
|
-
|
15
|
-
|
16
|
-
def poll(start_time = Time.now, &block)
|
17
|
-
@events.each(&block)
|
18
|
-
raise Deadloop.new('poll will never terminate if you do not set a break in the block')
|
19
|
-
end
|
20
|
-
end
|
21
|
-
|
22
4
|
def setup
|
23
5
|
@eb_driver = EBStub.new
|
24
6
|
@eb_driver.create_application("myapp")
|
@@ -27,21 +9,21 @@ class EbEnvironmentTest < MiniTest::Unit::TestCase
|
|
27
9
|
def test_deploy_should_create_corresponding_eb_env
|
28
10
|
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
29
11
|
env.deploy("version1")
|
30
|
-
assert @eb_driver.environment_exists?('myapp', 'production')
|
12
|
+
assert @eb_driver.environment_exists?('myapp', t('production', 'myapp'))
|
31
13
|
end
|
32
14
|
|
33
15
|
def test_deploy_again_should_update_environment
|
34
16
|
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
35
17
|
env.deploy("version1")
|
36
18
|
env.deploy("version2")
|
37
|
-
assert @eb_driver.environment_exists?('myapp', 'production')
|
38
|
-
assert_equal 'version2', @eb_driver.environment_verion_label('myapp', 'production')
|
19
|
+
assert @eb_driver.environment_exists?('myapp', t('production', 'myapp'))
|
20
|
+
assert_equal 'version2', @eb_driver.environment_verion_label('myapp', t('production', 'myapp'))
|
39
21
|
end
|
40
22
|
|
41
23
|
def test_option_setttings_get_set_on_eb_env
|
42
24
|
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
43
25
|
env.deploy("version1", {s1: 'v1'})
|
44
|
-
assert_equal({s1: 'v1' }, @eb_driver.environment_settings('myapp', 'production'))
|
26
|
+
assert_equal({s1: 'v1' }, @eb_driver.environment_settings('myapp', t('production', 'myapp')))
|
45
27
|
end
|
46
28
|
|
47
29
|
def test_should_run_smoke_test_after_deploy
|
@@ -55,13 +37,13 @@ class EbEnvironmentTest < MiniTest::Unit::TestCase
|
|
55
37
|
|
56
38
|
def test_should_raise_runtime_error_when_deploy_failed
|
57
39
|
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
58
|
-
@eb_driver.set_events("myapp", "production", ["start deploying", "Failed to deploy application"])
|
40
|
+
@eb_driver.set_events("myapp", t("production", 'myapp'), ["start deploying", "Failed to deploy application"])
|
59
41
|
assert_raises(RuntimeError) { env.deploy("version 1") }
|
60
42
|
end
|
61
43
|
|
62
44
|
def test_should_raise_runtime_error_when_eb_extension_execution_failed
|
63
45
|
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
64
|
-
@eb_driver.set_events("myapp", "production", ["start deploying",
|
46
|
+
@eb_driver.set_events("myapp", t("production", 'myapp'), ["start deploying",
|
65
47
|
"create environment",
|
66
48
|
"Command failed on instance. Return code: 1 Output: Error occurred during build: Command hooks failed",
|
67
49
|
"Successfully launched environment"])
|
@@ -74,65 +56,6 @@ class EbEnvironmentTest < MiniTest::Unit::TestCase
|
|
74
56
|
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
75
57
|
env.deploy("version1")
|
76
58
|
env.terminate
|
77
|
-
assert !@eb_driver.environment_exists?('myapp', 'production')
|
78
|
-
end
|
79
|
-
|
80
|
-
def test_should_terminate_legacy_env_upon_deployment
|
81
|
-
legacy_env_name = create_legacy_env("myapp", "production", "myapp-production")
|
82
|
-
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
83
|
-
@eb_driver.set_events("myapp", legacy_env_name, ["terminateEnvironment completed successfully"])
|
84
|
-
@eb_driver.set_events("myapp", "production", ["Successfully launched environment"])
|
85
|
-
env.deploy("version1")
|
86
|
-
assert !@eb_driver.environment_exists?("myapp", legacy_env_name)
|
87
|
-
assert @eb_driver.environment_exists?("myapp", "production")
|
88
|
-
end
|
89
|
-
|
90
|
-
def test_can_find_cname_if_legacy_env_exists
|
91
|
-
legacy_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("myapp", "production")
|
92
|
-
@eb_driver.create_environment("myapp", legacy_env_name, 'solution-stack', 'myapp-production', 'foo', 'web' ,{})
|
93
|
-
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
94
|
-
assert_equal 'myapp-production', env.cname_prefix
|
95
|
-
end
|
96
|
-
|
97
|
-
def test_terminate_legacy_env
|
98
|
-
legacy_env_name = create_legacy_env("myapp", "production", "myapp-production")
|
99
|
-
env = EbDeployer::EbEnvironment.new("myapp", "production", @eb_driver)
|
100
|
-
env.terminate
|
101
|
-
assert !@eb_driver.environment_exists?("myapp", legacy_env_name)
|
102
|
-
end
|
103
|
-
|
104
|
-
def test_swap_legacy_env_with_non_legacy_env
|
105
|
-
create_legacy_env("myapp", "production-a", "myapp-production")
|
106
|
-
env_a = EbDeployer::EbEnvironment.new("myapp", "production-a", @eb_driver)
|
107
|
-
env_b = EbDeployer::EbEnvironment.new("myapp", "production-b", @eb_driver, :cname_prefix => 'myapp-production-inactive')
|
108
|
-
env_b.deploy('version1')
|
109
|
-
|
110
|
-
env_a.swap_cname_with(env_b)
|
111
|
-
|
112
|
-
assert_equal "myapp-production-inactive", env_a.cname_prefix
|
113
|
-
assert_equal "myapp-production", env_b.cname_prefix
|
59
|
+
assert !@eb_driver.environment_exists?('myapp', t('production', 'myapp'))
|
114
60
|
end
|
115
|
-
|
116
|
-
def test_swap_no_legacy_env_with_legacy_env
|
117
|
-
create_legacy_env("myapp", "production-a", "myapp-production")
|
118
|
-
env_a = EbDeployer::EbEnvironment.new("myapp", "production-a", @eb_driver)
|
119
|
-
env_b = EbDeployer::EbEnvironment.new("myapp", "production-b", @eb_driver, :cname_prefix => 'myapp-production-inactive')
|
120
|
-
env_b.deploy('version1')
|
121
|
-
|
122
|
-
env_b.swap_cname_with(env_a)
|
123
|
-
|
124
|
-
assert_equal "myapp-production-inactive", env_a.cname_prefix
|
125
|
-
assert_equal "myapp-production", env_b.cname_prefix
|
126
|
-
end
|
127
|
-
|
128
|
-
private
|
129
|
-
|
130
|
-
def create_legacy_env(app_name, env_name, cname_prefix)
|
131
|
-
legacy_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name(app_name, env_name)
|
132
|
-
@eb_driver.create_environment(app_name, legacy_env_name, 'solution-stack', cname_prefix, 'foo', 'web' ,{})
|
133
|
-
legacy_env_name
|
134
|
-
end
|
135
|
-
|
136
|
-
|
137
|
-
|
138
61
|
end
|
@@ -2,9 +2,9 @@ require 'deploy_test'
|
|
2
2
|
|
3
3
|
class InplaceUpdateDeployTest < DeployTest
|
4
4
|
def test_first_deployment_create_eb_application
|
5
|
-
assert !@
|
5
|
+
assert !@eb.application_exists?('simple')
|
6
6
|
deploy(:application => 'simple', :environment => "production")
|
7
|
-
assert @
|
7
|
+
assert @eb.application_exists?('simple')
|
8
8
|
end
|
9
9
|
|
10
10
|
def test_set_option_settings_on_deployment
|
@@ -14,26 +14,26 @@ class InplaceUpdateDeployTest < DeployTest
|
|
14
14
|
deploy(:application => 'simple', :environment => "production",
|
15
15
|
:option_settings => [redudant])
|
16
16
|
|
17
|
-
assert_equal [redudant], @
|
17
|
+
assert_equal [redudant], @eb.environment_settings('simple', t('production', 'simple'))
|
18
18
|
|
19
19
|
end
|
20
20
|
|
21
21
|
def test_destroy_should_clean_up_eb_application_and_env
|
22
22
|
deploy(:application => 'simple', :environment => "production")
|
23
23
|
destroy(:application => 'simple')
|
24
|
-
assert !@
|
25
|
-
assert !@
|
24
|
+
assert !@eb.application_exists?('simple')
|
25
|
+
assert !@eb.environment_exists?('simple', t('production', 'simple'))
|
26
26
|
end
|
27
27
|
|
28
28
|
def test_first_deployment_create_environment
|
29
|
-
assert !@
|
29
|
+
assert !@eb.environment_exists?('simple', t('production', 'simple'))
|
30
30
|
deploy(:application => 'simple', :environment => "production")
|
31
|
-
assert @
|
31
|
+
assert @eb.environment_exists?('simple', t('production', 'simple'))
|
32
32
|
end
|
33
33
|
|
34
34
|
def test_support_very_very_long_app_name
|
35
35
|
deploy(:application => 'ver-very-simple-application', :environment => "production")
|
36
|
-
assert @
|
36
|
+
assert @eb.environment_exists?('ver-very-simple-application', t('production', 'ver-very-simple-application'))
|
37
37
|
end
|
38
38
|
|
39
39
|
def test_should_raise_error_when_env_name_is_too_long
|
@@ -44,13 +44,13 @@ class InplaceUpdateDeployTest < DeployTest
|
|
44
44
|
deploy(:application => 'simple',
|
45
45
|
:environment => "production",
|
46
46
|
:version_label => 1)
|
47
|
-
assert_equal '1', @
|
47
|
+
assert_equal '1', @eb.environment_verion_label('simple', t('production', 'simple'))
|
48
48
|
|
49
49
|
deploy(:application => 'simple',
|
50
50
|
:environment => "production",
|
51
51
|
:version_label => 2)
|
52
52
|
|
53
|
-
assert_equal '2', @
|
53
|
+
assert_equal '2', @eb.environment_verion_label('simple', t('production', 'simple'))
|
54
54
|
end
|
55
55
|
|
56
56
|
def test_smoke_test_should_be_run_after_env_created_or_update
|
@@ -74,12 +74,9 @@ class InplaceUpdateDeployTest < DeployTest
|
|
74
74
|
|
75
75
|
def test_should_terminate_old_environment_if_phoenix_mode_is_enabled
|
76
76
|
deploy(:application => 'simple', :environment => "production", :phoenix_mode => true)
|
77
|
-
assert @
|
77
|
+
assert @eb.environment_exists?('simple', t('production', 'simple'))
|
78
78
|
deploy(:application => 'simple', :environment => "production", :phoenix_mode => true)
|
79
|
-
assert @
|
80
|
-
assert @
|
79
|
+
assert @eb.environments_been_deleted('simple').include?(t('production', 'simple'))
|
80
|
+
assert @eb.environment_exists?('simple', t('production', 'simple'))
|
81
81
|
end
|
82
|
-
|
83
|
-
|
84
|
-
|
85
82
|
end
|
@@ -74,7 +74,7 @@ class ResourcesDeployTest < DeployTest
|
|
74
74
|
}
|
75
75
|
})
|
76
76
|
|
77
|
-
assert @
|
77
|
+
assert @eb.environment_settings('simple', t('production', 'simple')).
|
78
78
|
include?({:namespace => 'aws.foo', :option_name => 'o2', :value => 'transformed value of O2'})
|
79
79
|
end
|
80
80
|
|
@@ -91,7 +91,7 @@ class ResourcesDeployTest < DeployTest
|
|
91
91
|
'O1' => lambda { |v| {:namespace => 'aws.foo', :option_name => 'o1', :value => v} }
|
92
92
|
}
|
93
93
|
})
|
94
|
-
assert @
|
94
|
+
assert @eb.environment_settings('simple', t('production', 'simple')).
|
95
95
|
include?({:namespace => 'aws.foo', :option_name => 'o1', :value => 'value of O1'})
|
96
96
|
end
|
97
97
|
|
data/test/test_helper.rb
CHANGED
@@ -3,12 +3,12 @@ require 'deploy_test'
|
|
3
3
|
class TierSettingDeployTest < DeployTest
|
4
4
|
def test_sets_default_tier_as_webserver
|
5
5
|
deploy(:application => 'simple', :environment => "production")
|
6
|
-
assert_equal EbDeployer.environment_tier('WebServer'), @
|
6
|
+
assert_equal EbDeployer.environment_tier('WebServer'), @eb.environment_tier('simple', t('production', 'simple'))
|
7
7
|
end
|
8
8
|
|
9
9
|
def test_can_change_tier
|
10
10
|
deploy(:application => 'simple', :environment => "production", :tier => 'Worker')
|
11
|
-
assert_equal EbDeployer.environment_tier('Worker'), @
|
11
|
+
assert_equal EbDeployer.environment_tier('Worker'), @eb.environment_tier('simple', t('production', 'simple'))
|
12
12
|
end
|
13
13
|
|
14
14
|
def test_should_raise_error_when_tier_setting_is_not_recognized
|
@@ -10,8 +10,8 @@ class VersionsDeployTest < DeployTest
|
|
10
10
|
|
11
11
|
deploy(:application => 'simple', :environment => "production",
|
12
12
|
:package => 'mingle_package.yml', :version_label => 1)
|
13
|
-
assert @
|
14
|
-
last_version = @
|
13
|
+
assert @eb.application_exists?('simple')
|
14
|
+
last_version = @eb.application_versions('simple').last
|
15
15
|
assert_equal({'s3_bucket' => 'test-bucket', 's3_key' => 'test-mingle.war'}, last_version[:source_bundle])
|
16
16
|
ensure
|
17
17
|
FileUtils.rm_rf('mingle_package.yml')
|
@@ -24,7 +24,7 @@ class VersionsDeployTest < DeployTest
|
|
24
24
|
:environment => "production",
|
25
25
|
:version_label => 1,
|
26
26
|
:version_prefix => "prod-")
|
27
|
-
assert_equal 'prod-1', @
|
27
|
+
assert_equal 'prod-1', @eb.environment_verion_label('simple', t('production', 'simple'))
|
28
28
|
end
|
29
29
|
|
30
30
|
def test_should_keep_only_number_of_versions_specified
|
@@ -41,7 +41,7 @@ class VersionsDeployTest < DeployTest
|
|
41
41
|
:version_label => 3,
|
42
42
|
:keep_latest => 2)
|
43
43
|
|
44
|
-
assert_equal '1', @
|
44
|
+
assert_equal '1', @eb.versions_deleted('simple').first
|
45
45
|
end
|
46
46
|
|
47
47
|
def test_should_only_remove_versions_with_matching_prefix
|
@@ -61,10 +61,10 @@ class VersionsDeployTest < DeployTest
|
|
61
61
|
:version_prefix => "prod2-",
|
62
62
|
:keep_latest => 1)
|
63
63
|
|
64
|
-
assert_equal 'prod1-1', @
|
65
|
-
assert_equal 1, @
|
64
|
+
assert_equal 'prod1-1', @eb.versions_deleted('simple').first
|
65
|
+
assert_equal 1, @eb.versions_deleted('simple').count
|
66
66
|
|
67
|
-
app_versions = @
|
67
|
+
app_versions = @eb.application_versions('simple').map { |apv| apv[:version_label] }
|
68
68
|
assert_equal ["prod1-2", "prod2-1"], app_versions
|
69
69
|
end
|
70
70
|
|
@@ -72,7 +72,7 @@ class VersionsDeployTest < DeployTest
|
|
72
72
|
deploy(:application => 'simple',
|
73
73
|
:environment => "production",
|
74
74
|
:version_label => 42)
|
75
|
-
assert_equal "simple-production", @
|
75
|
+
assert_equal "simple-production", @eb.environment_cname_prefix('simple', t('production', 'simple'))
|
76
76
|
end
|
77
77
|
|
78
78
|
def test_cname_prefix_can_be_override
|
@@ -80,7 +80,7 @@ class VersionsDeployTest < DeployTest
|
|
80
80
|
:environment => "production",
|
81
81
|
:cname_prefix => 'sports123',
|
82
82
|
:version_label => 42)
|
83
|
-
assert_equal "sports123", @
|
83
|
+
assert_equal "sports123", @eb.environment_cname_prefix('simple', t('production', 'simple'))
|
84
84
|
end
|
85
85
|
|
86
86
|
def test_pass_s3_object_name_as_package_file
|
@@ -91,8 +91,8 @@ class VersionsDeployTest < DeployTest
|
|
91
91
|
:environment => "production",
|
92
92
|
:version_label => 1)
|
93
93
|
|
94
|
-
assert @
|
95
|
-
last_version = @
|
94
|
+
assert @eb.application_exists?('simple')
|
95
|
+
last_version = @eb.application_versions('simple').last
|
96
96
|
assert_equal({'s3_bucket' => 'test-bucket', 's3_key' => 'test-mingle.war'}, last_version[:source_bundle])
|
97
97
|
end
|
98
98
|
|
metadata
CHANGED
@@ -1,7 +1,8 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: eb_deployer
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.4.0
|
5
|
+
prerelease:
|
5
6
|
platform: ruby
|
6
7
|
authors:
|
7
8
|
- wpc
|
@@ -14,6 +15,7 @@ dependencies:
|
|
14
15
|
- !ruby/object:Gem::Dependency
|
15
16
|
name: aws-sdk
|
16
17
|
requirement: !ruby/object:Gem::Requirement
|
18
|
+
none: false
|
17
19
|
requirements:
|
18
20
|
- - ! '>='
|
19
21
|
- !ruby/object:Gem::Version
|
@@ -21,6 +23,7 @@ dependencies:
|
|
21
23
|
type: :runtime
|
22
24
|
prerelease: false
|
23
25
|
version_requirements: !ruby/object:Gem::Requirement
|
26
|
+
none: false
|
24
27
|
requirements:
|
25
28
|
- - ! '>='
|
26
29
|
- !ruby/object:Gem::Version
|
@@ -73,7 +76,6 @@ files:
|
|
73
76
|
- test/deploy_test.rb
|
74
77
|
- test/eb_environment_test.rb
|
75
78
|
- test/inplace_update_deploy_test.rb
|
76
|
-
- test/legacy_env_migrate_deploy_test.rb
|
77
79
|
- test/resources_deploy_test.rb
|
78
80
|
- test/smoke_test_test.rb
|
79
81
|
- test/test_helper.rb
|
@@ -82,26 +84,33 @@ files:
|
|
82
84
|
homepage: https://github.com/ThoughtWorksStudios/eb_deployer
|
83
85
|
licenses:
|
84
86
|
- MIT
|
85
|
-
metadata: {}
|
86
87
|
post_install_message:
|
87
88
|
rdoc_options: []
|
88
89
|
require_paths:
|
89
90
|
- lib
|
90
91
|
required_ruby_version: !ruby/object:Gem::Requirement
|
92
|
+
none: false
|
91
93
|
requirements:
|
92
94
|
- - ! '>='
|
93
95
|
- !ruby/object:Gem::Version
|
94
96
|
version: '0'
|
97
|
+
segments:
|
98
|
+
- 0
|
99
|
+
hash: 177644489298089087
|
95
100
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
101
|
+
none: false
|
96
102
|
requirements:
|
97
103
|
- - ! '>='
|
98
104
|
- !ruby/object:Gem::Version
|
99
105
|
version: '0'
|
106
|
+
segments:
|
107
|
+
- 0
|
108
|
+
hash: 177644489298089087
|
100
109
|
requirements: []
|
101
110
|
rubyforge_project:
|
102
|
-
rubygems_version:
|
111
|
+
rubygems_version: 1.8.29
|
103
112
|
signing_key:
|
104
|
-
specification_version:
|
113
|
+
specification_version: 3
|
105
114
|
summary: Low friction deployments should be a breeze. Elastic Beanstalk provides a
|
106
115
|
great foundation for performing Blue-Green deployments, and EbDeployer add a missing
|
107
116
|
top to automate the whole flow out of the box.
|
@@ -113,7 +122,6 @@ test_files:
|
|
113
122
|
- test/deploy_test.rb
|
114
123
|
- test/eb_environment_test.rb
|
115
124
|
- test/inplace_update_deploy_test.rb
|
116
|
-
- test/legacy_env_migrate_deploy_test.rb
|
117
125
|
- test/resources_deploy_test.rb
|
118
126
|
- test/smoke_test_test.rb
|
119
127
|
- test/test_helper.rb
|
checksums.yaml
DELETED
@@ -1,15 +0,0 @@
|
|
1
|
-
---
|
2
|
-
!binary "U0hBMQ==":
|
3
|
-
metadata.gz: !binary |-
|
4
|
-
ZTFkZGMyNGQ3YTg2ZjRjMGM1ZTE0OGIwMDk5ZTQ0ZDgwY2MyMWJhNw==
|
5
|
-
data.tar.gz: !binary |-
|
6
|
-
YmZkZmQ3MTFiZDQ2YjQxMjg4OWM0NWZmMzk3MzZiOTY2YmM5MzdlZQ==
|
7
|
-
SHA512:
|
8
|
-
metadata.gz: !binary |-
|
9
|
-
YTAxZjdhNmEwZTcwMjYyNzA2MzY1Zjg5ZDM2ZDhiNmQzN2M1Y2M0Mjk0ZjQy
|
10
|
-
YTczYzEzNDQ1ODAxMTkwOTVlZTc5YmQwZDkxN2JkY2IwNmVmY2U4MWUzMzEx
|
11
|
-
Y2JlMGJjMmI3ZTJiZjQ1OWM5Yzk3NTcyMTdlNmMzMDYyMGY5NjE=
|
12
|
-
data.tar.gz: !binary |-
|
13
|
-
ZTE5MjFiODhmNjA0MjFmNmQyMTJhMmYwMWRiYjM1ODdlNWYyOWMxYzExZTZi
|
14
|
-
OTY1ZmI2ZjkyMjA5ZGM0NTQzMTQ1MTkwZjI3MjY5N2UyOTQyNjRiZTc2OTk3
|
15
|
-
ZWVmNDQxNTcxNDk5ZTljMGE5YjdlMDZiM2M4NmQxMmMxYjVjNDM=
|
@@ -1,94 +0,0 @@
|
|
1
|
-
require 'deploy_test'
|
2
|
-
class LegacyEnvMigrateDeployTest < DeployTest
|
3
|
-
|
4
|
-
def setup
|
5
|
-
super
|
6
|
-
@eb_driver.create_application("simple")
|
7
|
-
end
|
8
|
-
|
9
|
-
def test_should_clean_up_legacy_environment_in_inplace_update_deployment
|
10
|
-
legacy_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production")
|
11
|
-
@eb_driver.create_environment("simple", legacy_env_name, 'solution-stack', 'simple-production', 'foo', 'web' ,{})
|
12
|
-
deploy(:application => 'simple',
|
13
|
-
:environment => 'production',
|
14
|
-
:version_label => 1)
|
15
|
-
assert @eb_driver.environment_exists?("simple", "production")
|
16
|
-
assert !@eb_driver.environment_exists?("simple", legacy_env_name)
|
17
|
-
end
|
18
|
-
|
19
|
-
def test_should_clean_up_legacy_environment_in_blue_green_deployment
|
20
|
-
legacy_a_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production-a")
|
21
|
-
legacy_b_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production-b")
|
22
|
-
|
23
|
-
@eb_driver.create_environment("simple", legacy_a_env_name, 'solution-stack', 'simple-production', 'foo', 'web' ,{})
|
24
|
-
@eb_driver.create_environment("simple", legacy_b_env_name, 'solution-stack', 'simple-production-inactive', 'foo', 'web' ,{})
|
25
|
-
|
26
|
-
deploy(:application => 'simple',
|
27
|
-
:environment => 'production',
|
28
|
-
:strategy => 'blue-green')
|
29
|
-
|
30
|
-
|
31
|
-
assert !@eb_driver.environment_exists?("simple", legacy_b_env_name)
|
32
|
-
assert @eb_driver.environment_exists?("simple", legacy_a_env_name)
|
33
|
-
|
34
|
-
assert @eb_driver.environment_exists?("simple", "production-b")
|
35
|
-
assert !@eb_driver.environment_exists?("simple", "production-a")
|
36
|
-
|
37
|
-
assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-b')
|
38
|
-
assert_equal 'simple-production-inactive', @eb_driver.environment_cname_prefix('simple', legacy_a_env_name)
|
39
|
-
|
40
|
-
deploy(:application => 'simple',
|
41
|
-
:environment => 'production',
|
42
|
-
:strategy => :blue_green)
|
43
|
-
|
44
|
-
assert @eb_driver.environment_exists?("simple", "production-a")
|
45
|
-
assert @eb_driver.environment_exists?("simple", "production-b")
|
46
|
-
assert !@eb_driver.environment_exists?("simple", legacy_a_env_name)
|
47
|
-
assert !@eb_driver.environment_exists?("simple", legacy_b_env_name)
|
48
|
-
|
49
|
-
assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-a')
|
50
|
-
assert_equal 'simple-production-inactive', @eb_driver.environment_cname_prefix('simple', 'production-b')
|
51
|
-
end
|
52
|
-
|
53
|
-
def test_should_clean_up_legacy_environment_in_blue_green_deployment_when_only_active_en_is_there
|
54
|
-
legacy_a_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production-a")
|
55
|
-
legacy_b_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production-b")
|
56
|
-
@eb_driver.create_environment("simple", legacy_a_env_name, 'solution-stack', 'simple-production', 'foo', 'web' ,{})
|
57
|
-
|
58
|
-
deploy(:application => 'simple',
|
59
|
-
:environment => 'production',
|
60
|
-
:strategy => 'blue-green')
|
61
|
-
|
62
|
-
|
63
|
-
assert @eb_driver.environment_exists?("simple", "production-b")
|
64
|
-
assert !@eb_driver.environment_exists?("simple", "production-a")
|
65
|
-
assert !@eb_driver.environment_exists?("simple", legacy_b_env_name)
|
66
|
-
assert @eb_driver.environment_exists?("simple", legacy_a_env_name)
|
67
|
-
|
68
|
-
assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-b')
|
69
|
-
assert_equal 'simple-production-inactive', @eb_driver.environment_cname_prefix('simple', legacy_a_env_name)
|
70
|
-
|
71
|
-
deploy(:application => 'simple',
|
72
|
-
:environment => 'production',
|
73
|
-
:strategy => 'blue-green')
|
74
|
-
|
75
|
-
assert @eb_driver.environment_exists?("simple", "production-a")
|
76
|
-
assert @eb_driver.environment_exists?("simple", "production-b")
|
77
|
-
assert !@eb_driver.environment_exists?("simple", legacy_a_env_name)
|
78
|
-
assert !@eb_driver.environment_exists?("simple", legacy_b_env_name)
|
79
|
-
|
80
|
-
assert_equal 'simple-production', @eb_driver.environment_cname_prefix('simple', 'production-a')
|
81
|
-
assert_equal 'simple-production-inactive', @eb_driver.environment_cname_prefix('simple', 'production-b')
|
82
|
-
|
83
|
-
end
|
84
|
-
|
85
|
-
def test_terminate_legacy_environments
|
86
|
-
legacy_a_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production-a")
|
87
|
-
legacy_b_env_name = EbDeployer::EbEnvironment.legacy_ebenv_name("simple", "production-b")
|
88
|
-
@eb_driver.create_environment("simple", legacy_a_env_name, 'solution-stack', 'simple-production', 'foo', 'web' ,{})
|
89
|
-
destroy(:application => 'simple')
|
90
|
-
|
91
|
-
assert !@eb_driver.environment_exists?("simple", legacy_a_env_name)
|
92
|
-
assert !@eb_driver.environment_exists?("simple", legacy_b_env_name)
|
93
|
-
end
|
94
|
-
end
|