engineyard-serverside 2.8.0.pre → 2.8.0.pre2
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 +7 -0
- data/bin/engineyard-serverside-execute-service-hook +1 -1
- data/lib/engineyard-serverside/version.rb +1 -1
- metadata +208 -577
- data/spec/archive_deploy_spec.rb +0 -53
- data/spec/basic_deploy_spec.rb +0 -26
- data/spec/bundler_deploy_spec.rb +0 -160
- data/spec/configuration_spec.rb +0 -206
- data/spec/custom_deploy_spec.rb +0 -128
- data/spec/deploy_hook_spec.rb +0 -378
- data/spec/deprecation_spec.rb +0 -23
- data/spec/ey_yml_customized_deploy_spec.rb +0 -99
- data/spec/fixtures/gitrepo.tar.gz +0 -0
- data/spec/fixtures/invalid_hook.rb +0 -1
- data/spec/fixtures/lockfiles/0.9-no-bundler +0 -111
- data/spec/fixtures/lockfiles/0.9-with-bundler +0 -117
- data/spec/fixtures/lockfiles/1.0-no-bundler +0 -54
- data/spec/fixtures/lockfiles/1.0.0.rc.1-with-bundler +0 -162
- data/spec/fixtures/lockfiles/1.0.18-do_mysql +0 -88
- data/spec/fixtures/lockfiles/1.0.18-do_postgres +0 -79
- data/spec/fixtures/lockfiles/1.0.18-mysql +0 -43
- data/spec/fixtures/lockfiles/1.0.18-mysql2 +0 -43
- data/spec/fixtures/lockfiles/1.0.18-pg +0 -43
- data/spec/fixtures/lockfiles/1.0.6-no-bundler +0 -51
- data/spec/fixtures/lockfiles/1.0.6-with-any-bundler +0 -52
- data/spec/fixtures/lockfiles/1.0.6-with-bundler +0 -52
- data/spec/fixtures/lockfiles/1.15.1-no-bundler +0 -51
- data/spec/fixtures/lockfiles/1.3.1-rails-3.2.13 +0 -112
- data/spec/fixtures/lockfiles/not-a-lockfile +0 -1
- data/spec/fixtures/repos/assets_detected/Gemfile +0 -5
- data/spec/fixtures/repos/assets_detected/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_detected/README +0 -1
- data/spec/fixtures/repos/assets_detected/Rakefile +0 -5
- data/spec/fixtures/repos/assets_detected/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_detected/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_detected/config/ey.yml +0 -3
- data/spec/fixtures/repos/assets_disabled/Gemfile +0 -5
- data/spec/fixtures/repos/assets_disabled/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_disabled/README +0 -1
- data/spec/fixtures/repos/assets_disabled/Rakefile +0 -6
- data/spec/fixtures/repos/assets_disabled/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_disabled/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_disabled/config/ey.yml +0 -3
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile +0 -5
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/README +0 -1
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/Rakefile +0 -6
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_disabled_in_ey_yml/config/ey.yml +0 -5
- data/spec/fixtures/repos/assets_disabled_utf8/Gemfile +0 -5
- data/spec/fixtures/repos/assets_disabled_utf8/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_disabled_utf8/README +0 -3
- data/spec/fixtures/repos/assets_disabled_utf8/Rakefile +0 -5
- data/spec/fixtures/repos/assets_disabled_utf8/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_disabled_utf8/config/application.rb +0 -7
- data/spec/fixtures/repos/assets_disabled_utf8/config/ey.yml +0 -3
- data/spec/fixtures/repos/assets_enabled_all/Gemfile +0 -5
- data/spec/fixtures/repos/assets_enabled_all/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_enabled_all/README +0 -1
- data/spec/fixtures/repos/assets_enabled_all/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_enabled_all/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_enabled_all/config/ey.yml +0 -6
- data/spec/fixtures/repos/assets_enabled_all/script/assets +0 -5
- data/spec/fixtures/repos/assets_enabled_all/tmp/obstruction +0 -1
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile +0 -3
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/Gemfile.lock +0 -10
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/README +0 -1
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/Rakefile +0 -8
- data/spec/fixtures/repos/assets_enabled_in_ey_yml/config/ey.yml +0 -4
- data/spec/fixtures/repos/assets_enabled_util_only/Gemfile +0 -5
- data/spec/fixtures/repos/assets_enabled_util_only/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_enabled_util_only/README +0 -1
- data/spec/fixtures/repos/assets_enabled_util_only/Rakefile +0 -6
- data/spec/fixtures/repos/assets_enabled_util_only/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_enabled_util_only/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_enabled_util_only/config/ey.yml +0 -6
- data/spec/fixtures/repos/assets_error/Gemfile +0 -5
- data/spec/fixtures/repos/assets_error/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_error/README +0 -1
- data/spec/fixtures/repos/assets_error/Rakefile +0 -4
- data/spec/fixtures/repos/assets_error/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_error/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_error/config/ey.yml +0 -4
- data/spec/fixtures/repos/assets_in_hook/Gemfile +0 -5
- data/spec/fixtures/repos/assets_in_hook/Gemfile.lock +0 -88
- data/spec/fixtures/repos/assets_in_hook/README +0 -2
- data/spec/fixtures/repos/assets_in_hook/Rakefile +0 -5
- data/spec/fixtures/repos/assets_in_hook/app/assets/empty +0 -0
- data/spec/fixtures/repos/assets_in_hook/config/application.rb +0 -5
- data/spec/fixtures/repos/assets_in_hook/config/ey.yml +0 -3
- data/spec/fixtures/repos/assets_in_hook/deploy/before_compile_assets.rb +0 -2
- data/spec/fixtures/repos/bundle_fails/Gemfile +0 -1
- data/spec/fixtures/repos/bundle_fails/README +0 -1
- data/spec/fixtures/repos/bundle_fails/deploy/after_bundle.rb +0 -1
- data/spec/fixtures/repos/bundler_disabled/Gemfile +0 -4
- data/spec/fixtures/repos/bundler_disabled/Gemfile.lock +0 -12
- data/spec/fixtures/repos/bundler_disabled/README +0 -1
- data/spec/fixtures/repos/bundler_disabled/config/ey.yml +0 -2
- data/spec/fixtures/repos/bundler_disabled/deploy/after_bundle.rb +0 -1
- data/spec/fixtures/repos/bundler_disabled/deploy/before_bundle.rb +0 -1
- data/spec/fixtures/repos/bundler_old/Gemfile +0 -5
- data/spec/fixtures/repos/bundler_old/Gemfile.lock +0 -15
- data/spec/fixtures/repos/bundler_old/README +0 -1
- data/spec/fixtures/repos/default/Gemfile +0 -4
- data/spec/fixtures/repos/default/Gemfile.lock +0 -12
- data/spec/fixtures/repos/default/README +0 -5
- data/spec/fixtures/repos/default/ey.yml +0 -3
- data/spec/fixtures/repos/executable_hooks/README +0 -1
- data/spec/fixtures/repos/executable_hooks/deploy/before_restart +0 -72
- data/spec/fixtures/repos/executable_hooks_not_executable/README +0 -3
- data/spec/fixtures/repos/executable_hooks_not_executable/deploy/before_restart +0 -3
- data/spec/fixtures/repos/ey_yml/Gemfile +0 -4
- data/spec/fixtures/repos/ey_yml/Gemfile.lock +0 -12
- data/spec/fixtures/repos/ey_yml/README +0 -1
- data/spec/fixtures/repos/ey_yml/config/ey.yml +0 -18
- data/spec/fixtures/repos/ey_yml/deploy/before_migrate.rb +0 -6
- data/spec/fixtures/repos/ey_yml_alt/Gemfile +0 -4
- data/spec/fixtures/repos/ey_yml_alt/Gemfile.lock +0 -12
- data/spec/fixtures/repos/ey_yml_alt/README +0 -1
- data/spec/fixtures/repos/ey_yml_alt/deploy/before_migrate.rb +0 -6
- data/spec/fixtures/repos/ey_yml_alt/ey.yml +0 -12
- data/spec/fixtures/repos/hook_fails/README +0 -1
- data/spec/fixtures/repos/hook_fails/deploy/before_deploy.rb +0 -1
- data/spec/fixtures/repos/hooks/README +0 -1
- data/spec/fixtures/repos/hooks/deploy/after_bundle.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/after_compile_assets.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/after_deploy.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/after_migrate.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/after_restart.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/after_symlink.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/before_bundle.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/before_compile_assets.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/before_deploy.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/before_migrate.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/before_restart.rb +0 -1
- data/spec/fixtures/repos/hooks/deploy/before_symlink.rb +0 -1
- data/spec/fixtures/repos/multi_dep_manager/README +0 -1
- data/spec/fixtures/repos/multi_dep_manager/composer.json +0 -5
- data/spec/fixtures/repos/multi_dep_manager/composer.lock +0 -462
- data/spec/fixtures/repos/multi_dep_manager/package.json +0 -7
- data/spec/fixtures/repos/multi_dep_manager/public/index.php +0 -4
- data/spec/fixtures/repos/no_ey_config/Gemfile +0 -3
- data/spec/fixtures/repos/no_ey_config/Gemfile.lock +0 -10
- data/spec/fixtures/repos/no_ey_config/README +0 -1
- data/spec/fixtures/repos/no_ey_config/ey.yml +0 -3
- data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile +0 -3
- data/spec/fixtures/repos/no_ey_config_no_warning/Gemfile.lock +0 -10
- data/spec/fixtures/repos/no_ey_config_no_warning/README +0 -1
- data/spec/fixtures/repos/no_ey_config_no_warning/ey.yml +0 -5
- data/spec/fixtures/repos/no_gemfile_lock/Gemfile +0 -4
- data/spec/fixtures/repos/no_gemfile_lock/README +0 -1
- data/spec/fixtures/repos/no_gemfile_lock/ey.yml +0 -3
- data/spec/fixtures/repos/nodejs/README +0 -1
- data/spec/fixtures/repos/nodejs/package.json +0 -7
- data/spec/fixtures/repos/not_bundled/README +0 -1
- data/spec/fixtures/repos/npm_disabled/README +0 -1
- data/spec/fixtures/repos/npm_disabled/config/ey.yml +0 -2
- data/spec/fixtures/repos/npm_disabled/package.json +0 -7
- data/spec/fixtures/repos/php_composer_disabled/README +0 -1
- data/spec/fixtures/repos/php_composer_disabled/composer.json +0 -5
- data/spec/fixtures/repos/php_composer_disabled/composer.lock +0 -462
- data/spec/fixtures/repos/php_composer_disabled/config/ey.yml +0 -2
- data/spec/fixtures/repos/php_composer_disabled/public/index.php +0 -4
- data/spec/fixtures/repos/php_composer_lock/README +0 -1
- data/spec/fixtures/repos/php_composer_lock/composer.json +0 -5
- data/spec/fixtures/repos/php_composer_lock/composer.lock +0 -462
- data/spec/fixtures/repos/php_composer_lock/public/index.php +0 -4
- data/spec/fixtures/repos/php_no_composer_lock/README +0 -1
- data/spec/fixtures/repos/php_no_composer_lock/composer.json +0 -21
- data/spec/fixtures/repos/php_no_composer_lock/public/index.php +0 -4
- data/spec/fixtures/repos/public_system/Gemfile +0 -4
- data/spec/fixtures/repos/public_system/Gemfile.lock +0 -12
- data/spec/fixtures/repos/public_system/README +0 -5
- data/spec/fixtures/repos/public_system/ey.yml +0 -3
- data/spec/fixtures/repos/public_system/public/system/cant_touch_this.txt +0 -3
- data/spec/fixtures/repos/sqlite3/Gemfile +0 -4
- data/spec/fixtures/repos/sqlite3/Gemfile.lock +0 -89
- data/spec/fixtures/repos/sqlite3/README +0 -1
- data/spec/fixtures/retwisj.war +0 -0
- data/spec/fixtures/valid_hook.rb +0 -1
- data/spec/git_strategy_spec.rb +0 -34
- data/spec/lockfile_parser_spec.rb +0 -126
- data/spec/maintenance_spec.rb +0 -44
- data/spec/multi_dependency_manager_spec.rb +0 -25
- data/spec/nodejs_deploy_spec.rb +0 -30
- data/spec/php_deploy_spec.rb +0 -81
- data/spec/platform_configure_spec.rb +0 -61
- data/spec/rails31_deploy_spec.rb +0 -172
- data/spec/restart_spec.rb +0 -43
- data/spec/rollback_spec.rb +0 -87
- data/spec/server_spec.rb +0 -70
- data/spec/services_deploy_spec.rb +0 -165
- data/spec/shell_spec.rb +0 -57
- data/spec/source/archive_spec.rb +0 -33
- data/spec/source/git_spec.rb +0 -44
- data/spec/spec_helper.rb +0 -361
- data/spec/sqlite3_deploy_spec.rb +0 -38
- data/spec/support/integration.rb +0 -103
- data/spec/support/source_doubles.rb +0 -28
- data/spec/support/timecop.rb +0 -5
- data/spec/symlink_spec.rb +0 -15
@@ -1,61 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Deploying an application with platform configure command" do
|
4
|
-
describe "configure script does not exist" do
|
5
|
-
before do
|
6
|
-
@releases_failed = deploy_dir.join('releases_failed')
|
7
|
-
deploy_test_application('default')
|
8
|
-
end
|
9
|
-
|
10
|
-
it "works without warning" do
|
11
|
-
expect(read_output).not_to match(/WARNING/)
|
12
|
-
|
13
|
-
expect(@releases_failed).not_to exist
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
describe "a succesful deploy" do
|
18
|
-
before do
|
19
|
-
@releases_failed = deploy_dir.join('releases_failed')
|
20
|
-
ENV['EY_SERVERSIDE_CONFIGURE_COMMAND'] = "echo platform_configure_command_ran >&2"
|
21
|
-
deploy_test_application('default')
|
22
|
-
end
|
23
|
-
|
24
|
-
after do
|
25
|
-
ENV.delete('EY_SERVERSIDE_CONFIGURE_COMMAND')
|
26
|
-
end
|
27
|
-
|
28
|
-
it "runs the configure_command during deploy and finishes successfully" do
|
29
|
-
expect(read_output).to match(/platform_configure_command_ran/)
|
30
|
-
|
31
|
-
expect(@releases_failed).not_to exist
|
32
|
-
|
33
|
-
restart = deploy_dir.join('current', 'restart')
|
34
|
-
expect(restart).to exist
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
describe "a failed configure command" do
|
39
|
-
|
40
|
-
before do
|
41
|
-
ENV['EY_SERVERSIDE_CONFIGURE_COMMAND'] = "echo platform_configure_command_failed >&2 && false"
|
42
|
-
end
|
43
|
-
|
44
|
-
after do
|
45
|
-
ENV.delete('EY_SERVERSIDE_CONFIGURE_COMMAND')
|
46
|
-
end
|
47
|
-
|
48
|
-
it "aborts the deplo when it fails, preventing the app from being restarted" do
|
49
|
-
@releases_failed = deploy_dir.join('releases_failed')
|
50
|
-
expect(@releases_failed).not_to exist
|
51
|
-
|
52
|
-
begin
|
53
|
-
deploy_test_application('default')
|
54
|
-
rescue
|
55
|
-
end
|
56
|
-
expect(read_output).to match(/platform_configure_command_failed/)
|
57
|
-
|
58
|
-
expect(@releases_failed.entries).not_to be_empty
|
59
|
-
end
|
60
|
-
end
|
61
|
-
end
|
data/spec/rails31_deploy_spec.rb
DELETED
@@ -1,172 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Deploying a Rails 3.1 application" do
|
4
|
-
context "with default production settings" do
|
5
|
-
it "precompiles assets when asset compilation is detected" do
|
6
|
-
deploy_test_application('assets_detected')
|
7
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist
|
8
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist
|
9
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
10
|
-
expect(read_output).to include("Precompiling assets. ('app/assets' exists, 'public/assets' not found, not disabled in config.)")
|
11
|
-
end
|
12
|
-
|
13
|
-
it "precompiles assets, then reuses them on the next deploy if nothing has changed" do
|
14
|
-
deploy_test_application('assets_enabled_in_ey_yml')
|
15
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist
|
16
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist
|
17
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
18
|
-
|
19
|
-
redeploy_test_application
|
20
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist # doesn't run the task
|
21
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist # but the assets are there
|
22
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
23
|
-
expect(read_output).to match(%r#Reusing existing assets\. \(configured asset_dependencies unchanged from \w{7}..\w{7}\)#)
|
24
|
-
|
25
|
-
redeploy_test_application('config' => {'precompile_unchanged_assets' => 'true'})
|
26
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist # doesn't run the task
|
27
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist # but the assets are there
|
28
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
29
|
-
expect(read_output).not_to include("Reusing existing assets")
|
30
|
-
end
|
31
|
-
|
32
|
-
it "raises error in a experimental_sync_assets mode and stops deployment" do
|
33
|
-
expect do
|
34
|
-
deploy_test_application('assets_error')
|
35
|
-
end.to raise_error(RuntimeError)
|
36
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
37
|
-
expect(deploy_dir.join('current', 'public', 'assets')).not_to exist
|
38
|
-
end
|
39
|
-
|
40
|
-
it "precompile assets again when redeploying a ref with changes" do
|
41
|
-
deploy_test_application('assets_enabled_in_ey_yml')
|
42
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist
|
43
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist
|
44
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
45
|
-
expect(deploy_dir.join('current', 'tmp', 'cache')).to exist
|
46
|
-
expect(deploy_dir.join('current', 'tmp')).to be_a_symlink
|
47
|
-
expect(deploy_dir.join('current', 'cache_compiled')).not_to exist
|
48
|
-
expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
|
49
|
-
|
50
|
-
# changing the ref stands in for actually having assets change (see Strategies::IntegrationSpec#same?)
|
51
|
-
redeploy_test_application('branch' => 'somenewref')
|
52
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist # it does runs the task
|
53
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist
|
54
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
55
|
-
expect(deploy_dir.join('current', 'tmp')).to be_a_symlink
|
56
|
-
expect(deploy_dir.join('current', 'tmp', 'cache')).to exist # preserves tmp dir
|
57
|
-
expect(deploy_dir.join('current', 'cache_compiled')).to exist # uses tmp/cache to compile assets faster
|
58
|
-
expect(read_output).not_to match(%r#Reusing existing assets#)
|
59
|
-
end
|
60
|
-
|
61
|
-
it "precompile assets when redeploying the same ref, but assets were turned off the first time" do
|
62
|
-
deploy_test_application('assets_enabled_in_ey_yml', 'config' => {'precompile_assets' => 'false'})
|
63
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
64
|
-
expect(deploy_dir.join('current', 'public', 'assets')).not_to exist
|
65
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).not_to exist
|
66
|
-
expect(read_output).not_to include("Precompiling assets. (precompile_assets: true)")
|
67
|
-
|
68
|
-
# assets will show as unchanged, but it should compile them fresh anyway.
|
69
|
-
redeploy_test_application('config' => {'precompile_assets' => 'true'})
|
70
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist # it does runs the task
|
71
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist
|
72
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
73
|
-
expect(read_output).not_to match(%r#Reusing existing assets#)
|
74
|
-
end
|
75
|
-
|
76
|
-
%w[cleaning shared private].each do |strategy|
|
77
|
-
it "precompiles assets with asset_strategy '#{strategy}', then reuses them on the next deploy if nothing has changed" do
|
78
|
-
deploy_test_application('assets_enabled_in_ey_yml', 'config' => {'asset_strategy' => strategy})
|
79
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist
|
80
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist
|
81
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
82
|
-
|
83
|
-
redeploy_test_application
|
84
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist # doesn't run the task
|
85
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to exist # but the assets are there
|
86
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'compiled_asset')).to exist
|
87
|
-
expect(read_output).to match(%r#Reusing existing assets\. \(configured asset_dependencies unchanged from \w{7}..\w{7}\)#)
|
88
|
-
end
|
89
|
-
end
|
90
|
-
end
|
91
|
-
|
92
|
-
context "with asset compilation enabled in ey.yml, despite not otherwise being enabled" do
|
93
|
-
before(:all) do
|
94
|
-
deploy_test_application('assets_enabled_in_ey_yml')
|
95
|
-
end
|
96
|
-
|
97
|
-
it "precompiles assets" do
|
98
|
-
expect(deploy_dir.join('current', 'precompiled')).to exist
|
99
|
-
expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
|
100
|
-
end
|
101
|
-
end
|
102
|
-
|
103
|
-
context "with asset compilation enabled in ey.yml, but asset_roles is set to only :util" do
|
104
|
-
before(:all) do
|
105
|
-
deploy_test_application('assets_enabled_util_only')
|
106
|
-
end
|
107
|
-
|
108
|
-
it "precompiles assets" do
|
109
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
110
|
-
expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
|
111
|
-
end
|
112
|
-
end
|
113
|
-
|
114
|
-
context "with asset compilation enabled in ey.yml, and asset_roles is set to :all, and a custom compile command" do
|
115
|
-
before(:all) do
|
116
|
-
deploy_test_application('assets_enabled_all')
|
117
|
-
end
|
118
|
-
|
119
|
-
it "precompiles assets but never shares the tmp cache because the repository has a committed tmp dir with contents" do
|
120
|
-
expect(deploy_dir.join('current', 'custom_compiled')).to exist
|
121
|
-
expect(deploy_dir.join('current', 'cache_compiled')).not_to exist
|
122
|
-
expect(deploy_dir.join('current', 'tmp', 'cache')).to exist
|
123
|
-
expect(deploy_dir.join('current', 'tmp')).not_to be_a_symlink
|
124
|
-
expect(read_output).to include("Precompiling assets. (precompile_assets: true)")
|
125
|
-
|
126
|
-
redeploy_test_application('config' => {'precompile_unchanged_assets' => 'true'})
|
127
|
-
expect(deploy_dir.join('current', 'tmp', 'cache')).to exist
|
128
|
-
expect(deploy_dir.join('current', 'cache_compiled')).not_to exist
|
129
|
-
expect(deploy_dir.join('current', 'tmp')).not_to be_a_symlink
|
130
|
-
end
|
131
|
-
end
|
132
|
-
|
133
|
-
context "with asset support disabled in config/application.rb" do
|
134
|
-
it "does not precompile assets" do
|
135
|
-
deploy_test_application('assets_disabled')
|
136
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
137
|
-
expect(read_output).to include("Skipping asset precompilation. ('config/application.rb' disables assets.)")
|
138
|
-
end
|
139
|
-
|
140
|
-
it "deploys successfully when application.rb has utf-8 encoding" do
|
141
|
-
deploy_test_application('assets_disabled_utf8')
|
142
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
143
|
-
expect(read_output).to include("Skipping asset precompilation. ('config/application.rb' disables assets.)")
|
144
|
-
end
|
145
|
-
end
|
146
|
-
|
147
|
-
context "with asset compilation disabled in ey.yml, despite all other configuration would enable assets" do
|
148
|
-
before(:all) do
|
149
|
-
deploy_test_application('assets_disabled_in_ey_yml')
|
150
|
-
end
|
151
|
-
|
152
|
-
it "does not precompile assets" do
|
153
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
154
|
-
expect(read_output).to include("Skipping asset precompilation. (precompile_assets: false)")
|
155
|
-
end
|
156
|
-
end
|
157
|
-
|
158
|
-
context "with existing precompilation in a deploy hook" do
|
159
|
-
before(:all) do
|
160
|
-
deploy_test_application('assets_in_hook')
|
161
|
-
end
|
162
|
-
|
163
|
-
it "does not replace the public/assets directory" do
|
164
|
-
expect(deploy_dir.join('current', 'custom_compiled')).to exist
|
165
|
-
expect(deploy_dir.join('current', 'precompiled')).not_to exist
|
166
|
-
expect(deploy_dir.join('current', 'public', 'assets')).to be_directory
|
167
|
-
expect(deploy_dir.join('current', 'public', 'assets')).not_to be_symlink
|
168
|
-
expect(deploy_dir.join('current', 'public', 'assets', 'custom_compiled_asset')).to exist
|
169
|
-
expect(read_output).to include("Skipping asset precompilation. ('public/assets' directory already exists.)")
|
170
|
-
end
|
171
|
-
end
|
172
|
-
end
|
data/spec/restart_spec.rb
DELETED
@@ -1,43 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class TestRestartDeploy < FullTestDeploy
|
4
|
-
attr_reader :call_order
|
5
|
-
def initialize(*a)
|
6
|
-
super
|
7
|
-
@call_order = []
|
8
|
-
end
|
9
|
-
|
10
|
-
def require_custom_tasks() @call_order << 'require_custom_tasks' end
|
11
|
-
def restart() @call_order << 'restart' end
|
12
|
-
def enable_maintenance_page() @call_order << 'enable_maintenance_page' end
|
13
|
-
def disable_maintenance_page() @call_order << 'disable_maintenance_page' end
|
14
|
-
end
|
15
|
-
|
16
|
-
describe "EY::Serverside::Deploy#restart_with_maintenance_page" do
|
17
|
-
|
18
|
-
class TestRestartWithMaintenancePage < TestRestartDeploy
|
19
|
-
def conditionally_enable_maintenance_page() @call_order << 'conditionally_enable_maintenance_page' end
|
20
|
-
end
|
21
|
-
|
22
|
-
it "puts up the maintenance page if necessary, restarts, and takes down the maintenance page" do
|
23
|
-
config = EY::Serverside::Deploy::Configuration.new('deploy_to' => deploy_dir, 'app' => 'app_name')
|
24
|
-
deployer = TestRestartWithMaintenancePage.realnew(test_servers, config, test_shell)
|
25
|
-
deployer.restart_with_maintenance_page
|
26
|
-
expect(deployer.call_order).to eq(%w(
|
27
|
-
require_custom_tasks
|
28
|
-
enable_maintenance_page
|
29
|
-
restart
|
30
|
-
disable_maintenance_page
|
31
|
-
))
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
describe "glassfish stack" do
|
36
|
-
|
37
|
-
it "requires a maintenance page" do
|
38
|
-
config = EY::Serverside::Deploy::Configuration.new('deploy_to' => deploy_dir, 'app' => 'app_name', 'stack' => 'glassfish')
|
39
|
-
deployer = TestRestartDeploy.realnew(test_servers, config, test_shell)
|
40
|
-
deployer.restart_with_maintenance_page
|
41
|
-
expect(deployer.call_order).to include('enable_maintenance_page')
|
42
|
-
end
|
43
|
-
end
|
data/spec/rollback_spec.rb
DELETED
@@ -1,87 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Rolling back" do
|
4
|
-
def setup_good_and_bad_deploy(repo)
|
5
|
-
deploy_test_application(repo, 'migrate' => nil)
|
6
|
-
@good_revision = deploy_dir.join('current', 'REVISION').read.strip
|
7
|
-
expect(deploy_dir.join('current', 'REVISION')).to exist
|
8
|
-
deploy_dir.join('current', 'restart').delete
|
9
|
-
deploy_test_application(repo, 'migrate' => nil)
|
10
|
-
expect(deploy_dir.join('current', 'REVISION')).to exist
|
11
|
-
deploy_dir.join('current', 'restart').delete
|
12
|
-
|
13
|
-
releases = @deployer.config.paths.all_releases
|
14
|
-
expect(releases.size).to eq(2)
|
15
|
-
@good_release = releases.first
|
16
|
-
@bad_release = releases.last
|
17
|
-
end
|
18
|
-
|
19
|
-
def rollback
|
20
|
-
argv = @adapter.rollback.commands.last.to_argv[2..-1]
|
21
|
-
with_mocked_commands do
|
22
|
-
capture do
|
23
|
-
EY::Serverside::CLI::App.start(argv)
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
|
28
|
-
context "without bundler" do
|
29
|
-
before(:all) do
|
30
|
-
setup_good_and_bad_deploy('not_bundled')
|
31
|
-
rollback
|
32
|
-
end
|
33
|
-
|
34
|
-
it "rolls back to the older deploy" do
|
35
|
-
out = read_output
|
36
|
-
expect(out).to match(/Rolling back to previous release.*#{@good_revision}/)
|
37
|
-
expect(out).to match(/Restarting with previous release./)
|
38
|
-
expect(out).to match(/Finished rollback/)
|
39
|
-
|
40
|
-
expect(deploy_dir.join('current', 'restart')).to exist
|
41
|
-
expect(@bad_release).not_to exist
|
42
|
-
expect(@good_release.join('restart')).to exist
|
43
|
-
end
|
44
|
-
end
|
45
|
-
|
46
|
-
context "with a problematic file in the releases dir" do
|
47
|
-
before(:all) do
|
48
|
-
setup_good_and_bad_deploy('not_bundled')
|
49
|
-
@deployer.config.paths.releases.join('tmp').mkpath
|
50
|
-
expect { rollback }.to raise_error
|
51
|
-
end
|
52
|
-
|
53
|
-
it "rolls back to the older deploy" do
|
54
|
-
out = read_output
|
55
|
-
expect(out).to include("Bad paths found in #{@deployer.config.paths.releases}:")
|
56
|
-
expect(out).to include(@deployer.config.paths.releases.join('tmp').to_s)
|
57
|
-
expect(out).to include("Storing files in this directory will disrupt latest_release, diff detection, rollback, and possibly other features.")
|
58
|
-
expect(out).to_not include("Restarting with previous release.")
|
59
|
-
|
60
|
-
expect(deploy_dir.join('current', 'restart')).not_to exist
|
61
|
-
expect(@bad_release).to exist
|
62
|
-
expect(@good_release).to exist
|
63
|
-
end
|
64
|
-
end
|
65
|
-
|
66
|
-
context "with complex config" do
|
67
|
-
before(:all) do
|
68
|
-
setup_good_and_bad_deploy('ey_yml')
|
69
|
-
rollback
|
70
|
-
end
|
71
|
-
|
72
|
-
it "rolls back to the older deploy" do
|
73
|
-
out = read_output
|
74
|
-
expect(out).to match(/Rolling back to previous release.*#{@good_revision}/)
|
75
|
-
expect(out).to match(/Restarting with previous release./)
|
76
|
-
expect(out).to match(/Finished rollback/)
|
77
|
-
|
78
|
-
expect(deploy_dir.join('current', 'restart')).to exist
|
79
|
-
expect(@bad_release).not_to exist
|
80
|
-
expect(@good_release.join('restart')).to exist
|
81
|
-
end
|
82
|
-
|
83
|
-
it "loads and uses ey.yml during rollback" do
|
84
|
-
expect(read_output).to match(/--without only test/)
|
85
|
-
end
|
86
|
-
end
|
87
|
-
end
|
data/spec/server_spec.rb
DELETED
@@ -1,70 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe EY::Serverside::Server do
|
4
|
-
it "starts off empty" do
|
5
|
-
expect(EY::Serverside::Servers.new([], test_shell)).to be_empty
|
6
|
-
end
|
7
|
-
|
8
|
-
it "loads from hashes" do
|
9
|
-
servers = EY::Serverside::Servers.from_hashes([{:hostname => 'otherhost', :roles => %w[fire water]}], test_shell)
|
10
|
-
expect(servers.size).to eq(1)
|
11
|
-
end
|
12
|
-
|
13
|
-
it "rejects duplicates" do
|
14
|
-
expect do
|
15
|
-
EY::Serverside::Servers.from_hashes([
|
16
|
-
{:hostname => 'otherhost', :roles => [:fire]},
|
17
|
-
{:hostname => 'otherhost', :roles => [:water]},
|
18
|
-
], test_shell)
|
19
|
-
end.to raise_error(EY::Serverside::Servers::DuplicateHostname)
|
20
|
-
end
|
21
|
-
|
22
|
-
it "makes sure your roles are symbols at creation time" do
|
23
|
-
servers = EY::Serverside::Servers.from_hashes([{:hostname => 'otherhost', :roles => %w[fire water]}], test_shell)
|
24
|
-
servers.each { |server| expect(server.roles).to eq(Set[:fire, :water]) }
|
25
|
-
end
|
26
|
-
|
27
|
-
context "filtering" do
|
28
|
-
before(:each) do
|
29
|
-
@servers = EY::Serverside::Servers.from_hashes([
|
30
|
-
{:hostname => 'localhost', :roles => [:ice, :cold]},
|
31
|
-
{:hostname => 'firewater', :roles => [:fire, :water]},
|
32
|
-
{:hostname => 'icewater', :roles => [:ice, :water]},
|
33
|
-
], test_shell)
|
34
|
-
end
|
35
|
-
|
36
|
-
it "#roles works with strings or symbols" do
|
37
|
-
expect(@servers.roles(:fire ).map{|s| s.hostname}).to eq(['firewater'])
|
38
|
-
expect(@servers.roles('fire').map{|s| s.hostname}).to eq(['firewater']) # hits the cache the second time
|
39
|
-
end
|
40
|
-
|
41
|
-
it "#roles finds all servers with the specified role" do
|
42
|
-
expect(@servers.roles(:ice).size).to eq(2)
|
43
|
-
expect(@servers.roles(:ice).map{|s| s.hostname}.sort).to eq(['icewater','localhost'])
|
44
|
-
end
|
45
|
-
|
46
|
-
it "#roles finds all servers with any of the specified roles" do
|
47
|
-
expect(@servers.roles(:ice, :water)).to eq(@servers)
|
48
|
-
end
|
49
|
-
|
50
|
-
it "#roles returns everything when asked for :all" do
|
51
|
-
expect(@servers.roles(:all)).to eq(@servers)
|
52
|
-
end
|
53
|
-
|
54
|
-
it "#roles also yields filtered server set" do
|
55
|
-
@servers.roles(:ice) do |servers|
|
56
|
-
expect(servers.size).to eq(2)
|
57
|
-
expect(servers.map{|s| s.hostname}.sort).to eq(['icewater','localhost'])
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
it "#localhost returns the localhost server" do
|
62
|
-
expect(@servers.localhost.hostname).to eq('localhost')
|
63
|
-
end
|
64
|
-
|
65
|
-
it "#remote returns non-localhost servers" do
|
66
|
-
expect(@servers.remote.size).to eq(2)
|
67
|
-
expect(@servers.remote.map {|s| s.hostname}.sort).to eq(['firewater','icewater'])
|
68
|
-
end
|
69
|
-
end
|
70
|
-
end
|
@@ -1,165 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Deploying an application with services" do
|
4
|
-
let(:shared_services_file) { deploy_dir.join('shared', 'config', 'ey_services_config_deploy.yml') }
|
5
|
-
let(:symlinked_services_file) { deploy_dir.join('current', 'config', 'ey_services_config_deploy.yml') }
|
6
|
-
let(:services_yml) { {"servicio" => {"foo" => "bar"}}.to_yaml }
|
7
|
-
|
8
|
-
describe "without ey_config" do
|
9
|
-
describe "with services and disabled ey_config warnings" do
|
10
|
-
before do
|
11
|
-
deploy_test_application('no_ey_config_no_warning', 'config' => {
|
12
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
13
|
-
})
|
14
|
-
end
|
15
|
-
|
16
|
-
it "no warns about missing ey_config" do
|
17
|
-
expect(read_stderr).not_to include("WARNING: Gemfile.lock does not contain ey_config")
|
18
|
-
end
|
19
|
-
end
|
20
|
-
|
21
|
-
describe "with services" do
|
22
|
-
before do
|
23
|
-
deploy_test_application('no_ey_config', 'config' => {
|
24
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
25
|
-
})
|
26
|
-
end
|
27
|
-
|
28
|
-
it "warns about missing ey_config" do
|
29
|
-
expect(read_stderr).to include("WARNING: Gemfile.lock does not contain ey_config")
|
30
|
-
end
|
31
|
-
end
|
32
|
-
|
33
|
-
describe "without services" do
|
34
|
-
before do
|
35
|
-
deploy_test_application('no_ey_config')
|
36
|
-
end
|
37
|
-
|
38
|
-
it "works without warnings" do
|
39
|
-
expect(read_output).not_to match(/WARNING/)
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
describe "deploy with invalid yaml ey_services_config_deploy" do
|
45
|
-
before do
|
46
|
-
@invalid_services_yml = "42"
|
47
|
-
deploy_test_application('default', 'config' => {
|
48
|
-
'services_setup_command' => "echo '#{@invalid_services_yml}' > #{shared_services_file}"
|
49
|
-
})
|
50
|
-
end
|
51
|
-
|
52
|
-
it "works without warning" do
|
53
|
-
expect(shared_services_file).to exist
|
54
|
-
expect(shared_services_file).not_to be_symlink
|
55
|
-
expect(shared_services_file.read).to eq("#{@invalid_services_yml}\n")
|
56
|
-
|
57
|
-
expect(symlinked_services_file).to exist
|
58
|
-
expect(symlinked_services_file).to be_symlink
|
59
|
-
expect(shared_services_file.read).to eq("#{@invalid_services_yml}\n")
|
60
|
-
|
61
|
-
expect(read_output).not_to match(/WARNING/)
|
62
|
-
end
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "a succesful deploy" do
|
66
|
-
before do
|
67
|
-
deploy_test_application('default', 'config' => {
|
68
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
69
|
-
})
|
70
|
-
end
|
71
|
-
|
72
|
-
it "creates and symlinks ey_services_config_deploy.yml" do
|
73
|
-
expect(shared_services_file).to exist
|
74
|
-
expect(shared_services_file).not_to be_symlink
|
75
|
-
expect(shared_services_file.read).to eq("#{services_yml}\n")
|
76
|
-
|
77
|
-
expect(symlinked_services_file).to exist
|
78
|
-
expect(symlinked_services_file).to be_symlink
|
79
|
-
expect(shared_services_file.read).to eq("#{services_yml}\n")
|
80
|
-
|
81
|
-
expect(read_output).not_to match(/WARNING/)
|
82
|
-
end
|
83
|
-
end
|
84
|
-
|
85
|
-
describe "a successful deploy followed by a deploy that can't find the command" do
|
86
|
-
before do
|
87
|
-
deploy_test_application('default', 'config' => {
|
88
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
89
|
-
})
|
90
|
-
redeploy_test_application('config' => {
|
91
|
-
'services_check_command' => 'false'
|
92
|
-
})
|
93
|
-
end
|
94
|
-
|
95
|
-
it "silently fails" do
|
96
|
-
expect(shared_services_file).to exist
|
97
|
-
expect(shared_services_file).not_to be_symlink
|
98
|
-
expect(shared_services_file.read).to eq("#{services_yml}\n")
|
99
|
-
|
100
|
-
expect(symlinked_services_file).to exist
|
101
|
-
expect(symlinked_services_file).to be_symlink
|
102
|
-
expect(shared_services_file.read).to eq("#{services_yml}\n")
|
103
|
-
|
104
|
-
expect(read_output).not_to match(/WARNING/)
|
105
|
-
end
|
106
|
-
|
107
|
-
end
|
108
|
-
|
109
|
-
describe "a successful followed by a deploy that fails to fetch services" do
|
110
|
-
it "logs a warning and symlinks the existing config file when there is existing services file" do
|
111
|
-
deploy_test_application('default', 'config' => {
|
112
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
113
|
-
})
|
114
|
-
redeploy_test_application('config' => {'services_setup_command' => 'false'})
|
115
|
-
|
116
|
-
expect(shared_services_file).to exist
|
117
|
-
expect(shared_services_file).not_to be_symlink
|
118
|
-
expect(shared_services_file.read).to eq("#{services_yml}\n")
|
119
|
-
|
120
|
-
expect(symlinked_services_file).to exist
|
121
|
-
expect(symlinked_services_file).to be_symlink
|
122
|
-
expect(shared_services_file.read).to eq("#{services_yml}\n")
|
123
|
-
|
124
|
-
expect(read_output).to include('WARNING: External services configuration not updated')
|
125
|
-
end
|
126
|
-
|
127
|
-
it "does not log a warning or symlink a config file when there is no existing services file" do
|
128
|
-
deploy_test_application('default', 'config' => {
|
129
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
130
|
-
})
|
131
|
-
shared_services_file.delete
|
132
|
-
redeploy_test_application('config' => {'services_setup_command' => 'false'})
|
133
|
-
|
134
|
-
expect(shared_services_file).not_to exist
|
135
|
-
expect(symlinked_services_file).not_to exist
|
136
|
-
|
137
|
-
expect(read_output).not_to match(/WARNING/)
|
138
|
-
end
|
139
|
-
end
|
140
|
-
|
141
|
-
describe "a successful deploy followed by another successfull deploy" do
|
142
|
-
before do
|
143
|
-
deploy_test_application('default', 'config' => {
|
144
|
-
'services_setup_command' => "echo '#{services_yml}' > #{shared_services_file}"
|
145
|
-
})
|
146
|
-
@new_services_yml = {"servicio" => {"foo" => "bar2"}}.to_yaml
|
147
|
-
redeploy_test_application('config' => {
|
148
|
-
'services_setup_command' => "echo '#{@new_services_yml}' > #{shared_services_file}"
|
149
|
-
})
|
150
|
-
end
|
151
|
-
|
152
|
-
it "replaces the config with the new one (and symlinks)" do
|
153
|
-
expect(shared_services_file).to exist
|
154
|
-
expect(shared_services_file).not_to be_symlink
|
155
|
-
expect(shared_services_file.read).to eq("#{@new_services_yml}\n")
|
156
|
-
|
157
|
-
expect(symlinked_services_file).to exist
|
158
|
-
expect(symlinked_services_file).to be_symlink
|
159
|
-
expect(shared_services_file.read).to eq("#{@new_services_yml}\n")
|
160
|
-
|
161
|
-
expect(read_output).not_to match(/WARNING/)
|
162
|
-
end
|
163
|
-
end
|
164
|
-
|
165
|
-
end
|