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
data/spec/archive_deploy_spec.rb
DELETED
@@ -1,53 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
class EY::Serverside::Source::Archive
|
4
|
-
def fetch_command
|
5
|
-
"cp #{uri} #{source_cache}"
|
6
|
-
end
|
7
|
-
end
|
8
|
-
|
9
|
-
describe "Deploying a simple application" do
|
10
|
-
|
11
|
-
before(:all) do
|
12
|
-
adapter = EY::Serverside::Adapter.new do |args|
|
13
|
-
args.account_name = "account"
|
14
|
-
args.app = "application_name"
|
15
|
-
args.stack = "nginx_unicorn"
|
16
|
-
args.environment_name = "environment_name"
|
17
|
-
args.framework_env = "production"
|
18
|
-
args.archive = FIXTURES_DIR.join('retwisj.war')
|
19
|
-
args.verbose = true
|
20
|
-
args.instances = [{ :hostname => "localhost", :roles => ["solo"], :name => "single" }]
|
21
|
-
args.serverside_version = Gem::Version.create(EY::Serverside::VERSION.dup).release
|
22
|
-
args.config = {
|
23
|
-
"deploy_to" => deploy_dir.to_s,
|
24
|
-
"group" => GROUP
|
25
|
-
}
|
26
|
-
end
|
27
|
-
argv = adapter.deploy.commands.last.to_argv[2..-1]
|
28
|
-
with_mocked_commands do
|
29
|
-
capture do
|
30
|
-
EY::Serverside::CLI::App.start(argv)
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
it "exploded the war" do
|
36
|
-
%w(META-INF WEB-INF).each {|dir|
|
37
|
-
File.exists?(deploy_dir.join('current', dir))
|
38
|
-
}
|
39
|
-
end
|
40
|
-
|
41
|
-
it "creates a REVISION file" do
|
42
|
-
path = deploy_dir.join('current', 'REVISION')
|
43
|
-
expect(path).to exist
|
44
|
-
checksum = File.read(path).strip
|
45
|
-
expect(checksum).to match(/7400dc058376745c11a98f768b799c6651428857\s+.*retwisj.war$/)
|
46
|
-
end
|
47
|
-
|
48
|
-
it "restarts the app servers" do
|
49
|
-
restart = deploy_dir.join('current', 'restart')
|
50
|
-
expect(restart).to exist
|
51
|
-
expect(restart.read.chomp).to eq(%|LANG="en_US.UTF-8" /engineyard/bin/app_application_name deploy|)
|
52
|
-
end
|
53
|
-
end
|
data/spec/basic_deploy_spec.rb
DELETED
@@ -1,26 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Deploying a simple application" do
|
4
|
-
before(:all) do
|
5
|
-
deploy_test_application('not_bundled')
|
6
|
-
end
|
7
|
-
|
8
|
-
it "creates a REVISION file" do
|
9
|
-
expect(deploy_dir.join('current', 'REVISION')).to exist
|
10
|
-
end
|
11
|
-
|
12
|
-
it "restarts the app servers" do
|
13
|
-
restart = deploy_dir.join('current', 'restart')
|
14
|
-
expect(restart).to exist
|
15
|
-
expect(restart.read.chomp).to eq(%|LANG="en_US.UTF-8" /engineyard/bin/app_rails31 deploy|)
|
16
|
-
end
|
17
|
-
|
18
|
-
it "reuses the same active_release directory if a release_path is specified (such as in integrate)" do
|
19
|
-
path = @config.paths.active_release
|
20
|
-
expect(path.parent.children.size).to eq(1)
|
21
|
-
|
22
|
-
redeploy_test_application('config' => {'release_path' => path.to_s})
|
23
|
-
|
24
|
-
expect(path.parent.children.size).to eq(1)
|
25
|
-
end
|
26
|
-
end
|
data/spec/bundler_deploy_spec.rb
DELETED
@@ -1,160 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "Deploying an application that uses Bundler" do
|
4
|
-
VERSION_PATTERN = Regexp.quote(::EY::Serverside::DependencyManager::Bundler.default_version)
|
5
|
-
PARALLEL_JOBS = ::EY::Serverside::DependencyManager::Bundler.jobs_number
|
6
|
-
|
7
|
-
context "with a Gemfile.lock" do
|
8
|
-
before(:all) do
|
9
|
-
deploy_test_application('ey_yml')
|
10
|
-
@install_bundler_command = @deployer.commands.grep(/gem install bundler/).first
|
11
|
-
@bundle_install_command = @deployer.commands.grep(/bundle _#{VERSION_PATTERN}_ install/).first
|
12
|
-
end
|
13
|
-
|
14
|
-
it "runs the right bundler command" do
|
15
|
-
expect(@install_bundler_command).not_to be_nil
|
16
|
-
expect(@install_bundler_command).to match(/install bundler .* -v "#{VERSION_PATTERN}"/)
|
17
|
-
end
|
18
|
-
|
19
|
-
it "runs 'bundle install' with --deployment" do
|
20
|
-
expect(@bundle_install_command).not_to be_nil
|
21
|
-
expect(@bundle_install_command).to include('--deployment')
|
22
|
-
end
|
23
|
-
|
24
|
-
it "runs 'bundle install' with --jobs #{PARALLEL_JOBS}" do
|
25
|
-
expect(@bundle_install_command).not_to be_nil
|
26
|
-
expect(@bundle_install_command).to include("--jobs #{PARALLEL_JOBS}")
|
27
|
-
end
|
28
|
-
|
29
|
-
it "removes bundled_gems directory if the ruby or system version changed" do
|
30
|
-
should_run_clear_bundle_cmd = @deployer.commands.grep(/diff/).first
|
31
|
-
expect(should_run_clear_bundle_cmd).not_to be_nil
|
32
|
-
clear_bundle_cmd = @deployer.commands.grep(/rm -Rf \S+\/bundled_gems/).first
|
33
|
-
expect(clear_bundle_cmd).not_to be_nil
|
34
|
-
end
|
35
|
-
|
36
|
-
it "has the binstubs in the path when migrating" do
|
37
|
-
expect(deploy_dir.join('path-when-migrating').read).to include('ey_bundler_binstubs')
|
38
|
-
end
|
39
|
-
|
40
|
-
it "creates a ruby version file" do
|
41
|
-
expect(deploy_dir.join('shared', 'bundled_gems', 'RUBY_VERSION')).to exist
|
42
|
-
end
|
43
|
-
|
44
|
-
it "creates a system version file" do
|
45
|
-
expect(deploy_dir.join('shared', 'bundled_gems', 'SYSTEM_VERSION')).to exist
|
46
|
-
end
|
47
|
-
|
48
|
-
it "generates bundler binstubs" do
|
49
|
-
pending "doesn't work with mocked bundler"
|
50
|
-
expect(deploy_dir.join('current', 'ey_bundler_binstubs', 'rake')).to exist
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
context "with clean option" do
|
55
|
-
before(:all) do
|
56
|
-
deploy_test_application('ey_yml', 'clean' => true)
|
57
|
-
end
|
58
|
-
|
59
|
-
it "removes bundled_gems directory if the ruby or system version changed" do
|
60
|
-
should_run_clear_bundle_cmd = @deployer.commands.grep(/diff/).first
|
61
|
-
expect(should_run_clear_bundle_cmd).to be_nil
|
62
|
-
clear_bundle_cmd = @deployer.commands.grep(/rm -Rf \S+\/bundled_gems/).first
|
63
|
-
expect(clear_bundle_cmd).not_to be_nil
|
64
|
-
end
|
65
|
-
|
66
|
-
end
|
67
|
-
|
68
|
-
context "with bundler disabled in ey.yml" do
|
69
|
-
before(:all) do
|
70
|
-
deploy_test_application('bundler_disabled')
|
71
|
-
end
|
72
|
-
|
73
|
-
it "does not run bundler commands" do
|
74
|
-
expect(@deployer.commands.grep(/gem install bundler/)).to be_empty
|
75
|
-
expect(@deployer.commands.grep(/bundle _.*_ install/)).to be_empty
|
76
|
-
end
|
77
|
-
|
78
|
-
it "still runs the hooks" do
|
79
|
-
expect(deploy_dir.join('current', 'before_bundle.ran' )).to exist
|
80
|
-
expect(deploy_dir.join('current', 'after_bundle.ran' )).to exist
|
81
|
-
end
|
82
|
-
end
|
83
|
-
|
84
|
-
context "without a Gemfile.lock" do
|
85
|
-
before(:all) do
|
86
|
-
deploy_test_application('no_gemfile_lock')
|
87
|
-
@install_bundler_command = @deployer.commands.grep(/gem install bundler/).first
|
88
|
-
@bundle_install_command = @deployer.commands.grep(/bundle _#{VERSION_PATTERN}_ install/).first
|
89
|
-
end
|
90
|
-
|
91
|
-
it "installs the proper Bundler version" do
|
92
|
-
expect(@install_bundler_command).not_to be_nil
|
93
|
-
expect(@install_bundler_command).to match(/unset RUBYOPT && gem list bundler | grep "bundler " | egrep -q "#{VERSION_PATTERN}[,)]" || gem install bundler -q --no-rdoc --no-ri -v "#{VERSION_PATTERN}"/)
|
94
|
-
end
|
95
|
-
|
96
|
-
it "runs 'bundle install' without --deployment" do
|
97
|
-
expect(@bundle_install_command).not_to be_nil
|
98
|
-
expect(@bundle_install_command).not_to match(/--deployment/)
|
99
|
-
end
|
100
|
-
|
101
|
-
it "runs 'bundle install' with --jobs #{PARALLEL_JOBS}" do
|
102
|
-
expect(@bundle_install_command).not_to be_nil
|
103
|
-
expect(@bundle_install_command).to include("--jobs #{PARALLEL_JOBS}")
|
104
|
-
end
|
105
|
-
|
106
|
-
it "exports GIT_SSH for the bundle install" do
|
107
|
-
expect(@bundle_install_command).to match(/export GIT_SSH/)
|
108
|
-
end
|
109
|
-
|
110
|
-
it "puts down RUBY_VERSION and SYSTEM_VERSION" do
|
111
|
-
expect(deploy_dir.join('shared', 'bundled_gems', 'RUBY_VERSION')).to exist
|
112
|
-
expect(deploy_dir.join('shared', 'bundled_gems', 'SYSTEM_VERSION')).to exist
|
113
|
-
end
|
114
|
-
|
115
|
-
it "warns that using a lockfile is idiomatic" do
|
116
|
-
out = read_output
|
117
|
-
expect(out).to match(/WARNING: Gemfile found but Gemfile.lock is missing!/)
|
118
|
-
end
|
119
|
-
end
|
120
|
-
|
121
|
-
context "without a Gemfile.lock and ignoring the warning" do
|
122
|
-
before(:all) do
|
123
|
-
deploy_test_application('no_gemfile_lock', 'config' => {'ignore_gemfile_lock_warning' => true})
|
124
|
-
expect(@config.ignore_gemfile_lock_warning).to be_truthy
|
125
|
-
@install_bundler_command = @deployer.commands.grep(/gem install bundler/).first
|
126
|
-
@bundle_install_command = @deployer.commands.grep(/bundle _#{VERSION_PATTERN}_ install/).first
|
127
|
-
end
|
128
|
-
|
129
|
-
it "should not warn" do
|
130
|
-
out = read_output
|
131
|
-
expect(out).not_to match(/WARNING/)
|
132
|
-
end
|
133
|
-
end
|
134
|
-
|
135
|
-
context "with a failing Gemfile" do
|
136
|
-
before(:all) do
|
137
|
-
begin
|
138
|
-
deploy_test_application('bundle_fails', 'bundle_install_fails' => true, 'verbose' => false)
|
139
|
-
rescue EY::Serverside::RemoteFailure
|
140
|
-
end
|
141
|
-
end
|
142
|
-
|
143
|
-
it "prints the failure to the log" do
|
144
|
-
out = read_output
|
145
|
-
expect(out).to match(%r|bundle install failure|)
|
146
|
-
expect(deploy_dir.join('current', 'after_bundle.ran' )).not_to exist
|
147
|
-
end
|
148
|
-
end
|
149
|
-
|
150
|
-
context "with outdated bundler" do
|
151
|
-
before :all do
|
152
|
-
deploy_test_application( "bundler_old" )
|
153
|
-
@bundle_install_command = @deployer.commands.grep( /bundle _1.3.6_ install/ ).first
|
154
|
-
end
|
155
|
-
|
156
|
-
it "doesn't run 'bundle install' with --jobs" do
|
157
|
-
expect( @bundle_install_command ).to_not include "--jobs"
|
158
|
-
end
|
159
|
-
end
|
160
|
-
end
|
data/spec/configuration_spec.rb
DELETED
@@ -1,206 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe EY::Serverside::Deploy::Configuration do
|
4
|
-
describe "default options" do
|
5
|
-
it "has defaults" do
|
6
|
-
@config = EY::Serverside::Deploy::Configuration.new({
|
7
|
-
'app' => 'app_name',
|
8
|
-
'environment_name' => 'env_name',
|
9
|
-
'account_name' => 'acc',
|
10
|
-
'framework_env' => 'production',
|
11
|
-
})
|
12
|
-
expect(@config.app_name).to eq("app_name")
|
13
|
-
expect(@config.environment_name).to eq("env_name")
|
14
|
-
expect(@config.account_name).to eq("acc")
|
15
|
-
expect(@config.migrate).to eq(nil)
|
16
|
-
expect(@config.migrate?).to eq(false)
|
17
|
-
expect(@config.branch).to eq("master")
|
18
|
-
expect(@config.ref).to eq("master")
|
19
|
-
expect(@config.maintenance_on_migrate).to eq(true)
|
20
|
-
expect(@config.maintenance_on_restart).to eq(true)
|
21
|
-
expect(@config.required_downtime_stack?).to eq(true)
|
22
|
-
expect(@config.framework_env).to eq("production")
|
23
|
-
expect(@config.precompile_assets).to eq("detect")
|
24
|
-
expect(@config.precompile_assets_inferred?).to eq(true)
|
25
|
-
expect(@config.skip_precompile_assets?).to eq(false)
|
26
|
-
expect(@config.precompile_assets?).to eq(false)
|
27
|
-
expect(@config.asset_roles).to eq([:app_master, :app, :solo])
|
28
|
-
expect(@config.user).to eq(ENV['USER'])
|
29
|
-
expect(@config.group).to eq(ENV['USER'])
|
30
|
-
expect(@config.verbose).to eq(false)
|
31
|
-
expect(@config.copy_exclude).to eq([])
|
32
|
-
expect(@config.ignore_database_adapter_warning).to eq(false)
|
33
|
-
expect(@config.ignore_ey_config_warning).to eq(false)
|
34
|
-
expect(@config.ignore_gemfile_lock_warning).to eq(false)
|
35
|
-
expect(@config.bundle_without).to eq(%w[test development])
|
36
|
-
expect(@config.extra_bundle_install_options).to eq(%w[--without test development])
|
37
|
-
expect(@config.deployed_by).to eq("Automation (User name not available)")
|
38
|
-
expect(@config.input_ref).to eq(@config.branch)
|
39
|
-
expect(@config.keep_releases).to eq(3)
|
40
|
-
expect(@config.keep_failed_releases).to eq(3)
|
41
|
-
end
|
42
|
-
|
43
|
-
it "raises when required options are not given" do
|
44
|
-
@config = EY::Serverside::Deploy::Configuration.new({})
|
45
|
-
expect { @config.app_name }.to raise_error
|
46
|
-
expect { @config.environment_name }.to raise_error
|
47
|
-
expect { @config.account_name }.to raise_error
|
48
|
-
expect { @config.framework_env }.to raise_error
|
49
|
-
end
|
50
|
-
end
|
51
|
-
|
52
|
-
context "strategies" do
|
53
|
-
let(:options) do
|
54
|
-
{ "app" => "serverside" }
|
55
|
-
end
|
56
|
-
|
57
|
-
it "uses strategy if set" do
|
58
|
-
@config = EY::Serverside::Deploy::Configuration.new(
|
59
|
-
options.merge({'strategy' => 'IntegrationSpec', 'git' => 'git@github.com:engineyard/todo.git'})
|
60
|
-
)
|
61
|
-
capture do # deprecation warning
|
62
|
-
expect(@config.source(test_shell)).to be_a_kind_of(EY::Serverside::Source::IntegrationSpec)
|
63
|
-
end
|
64
|
-
expect(read_output).to include("DEPRECATION WARNING: The configuration key 'strategy' is deprecated in favor of 'source_class'.")
|
65
|
-
end
|
66
|
-
|
67
|
-
it "uses source_class if set" do
|
68
|
-
@config = EY::Serverside::Deploy::Configuration.new(
|
69
|
-
options.merge({'source_class' => 'IntegrationSpec', 'git' => 'git@github.com:engineyard/todo.git'})
|
70
|
-
)
|
71
|
-
expect(@config.source(test_shell)).to be_a_kind_of(EY::Serverside::Source::IntegrationSpec)
|
72
|
-
end
|
73
|
-
|
74
|
-
it "infers a git source" do
|
75
|
-
@config = EY::Serverside::Deploy::Configuration.new(
|
76
|
-
options.merge({ 'git' => 'git@github.com:engineyard/todo.git' })
|
77
|
-
)
|
78
|
-
expect(@config.source(test_shell)).to be_a_kind_of(EY::Serverside::Source::Git)
|
79
|
-
end
|
80
|
-
|
81
|
-
it "infers a archive source" do
|
82
|
-
@config = EY::Serverside::Deploy::Configuration.new(
|
83
|
-
options.merge({'archive' => 'https://github.com/engineyard/todo/archive/master.zip'})
|
84
|
-
)
|
85
|
-
|
86
|
-
expect(@config.source(test_shell)).to be_a_kind_of(EY::Serverside::Source::Archive)
|
87
|
-
end
|
88
|
-
end
|
89
|
-
|
90
|
-
context "command line options" do
|
91
|
-
before do
|
92
|
-
@config = EY::Serverside::Deploy::Configuration.new({
|
93
|
-
'repository_cache' => @tempdir,
|
94
|
-
'app' => 'app_name',
|
95
|
-
'stack' => 'nginx_passenger',
|
96
|
-
'framework_env' => 'development',
|
97
|
-
'environment_name' => 'env_name',
|
98
|
-
'account_name' => 'acc',
|
99
|
-
'branch' => 'branch_from_command_line',
|
100
|
-
'config' => MultiJson.dump({'custom' => 'custom_from_extra_config', 'maintenance_on_migrate' => 'false', 'precompile_assets' => 'false', 'deployed_by' => 'Martin Emde', 'input_ref' => 'input_branch'})
|
101
|
-
})
|
102
|
-
end
|
103
|
-
|
104
|
-
it "underrides options with config (directly supplied options take precedence over 'config' options)" do
|
105
|
-
expect(@config.maintenance_on_migrate).to eq(false)
|
106
|
-
expect(@config.branch).to eq("branch_from_command_line")
|
107
|
-
end
|
108
|
-
|
109
|
-
it "corrects command line supplied precompile_assets string (which relies on having a special not-set value of nil, so can't be a boolean)" do
|
110
|
-
expect(@config.skip_precompile_assets?).to eq(true)
|
111
|
-
expect(@config.precompile_assets?).to eq(false)
|
112
|
-
expect(@config.precompile_assets_inferred?).to eq(false)
|
113
|
-
end
|
114
|
-
|
115
|
-
it "doesn't require downtime on restart for nginx_passenger" do
|
116
|
-
expect(@config.maintenance_on_migrate).to eq(false)
|
117
|
-
expect(@config.maintenance_on_restart).to eq(false)
|
118
|
-
end
|
119
|
-
|
120
|
-
it "doesn't bundle --without the framework_env" do
|
121
|
-
expect(@config.bundle_without).to eq(%w[test])
|
122
|
-
end
|
123
|
-
|
124
|
-
it "gets deployed_by and input_ref correct" do
|
125
|
-
expect(@config.deployed_by).to eq("Martin Emde")
|
126
|
-
expect(@config.input_ref).to eq("input_branch")
|
127
|
-
end
|
128
|
-
end
|
129
|
-
|
130
|
-
describe "ey.yml loading" do
|
131
|
-
before(:each) do
|
132
|
-
@tempdir = `mktemp -d -t ey_yml_spec.XXXXX`.strip
|
133
|
-
@config = EY::Serverside::Deploy::Configuration.new({
|
134
|
-
'repository_cache' => @tempdir,
|
135
|
-
'app' => 'app_name',
|
136
|
-
'environment_name' => 'env_name',
|
137
|
-
'account_name' => 'acc',
|
138
|
-
'migrate' => nil,
|
139
|
-
'branch' => 'branch_from_command_line',
|
140
|
-
'config' => MultiJson.dump({'custom' => 'custom_from_extra_config', 'maintenance_on_migrate' => 'false'})
|
141
|
-
})
|
142
|
-
|
143
|
-
@deploy = FullTestDeploy.new(test_servers, @config, test_shell)
|
144
|
-
|
145
|
-
@yaml_data = {
|
146
|
-
'environments' => {
|
147
|
-
'env_name' => {
|
148
|
-
'copy_exclude' => ['.git'],
|
149
|
-
'migrate' => true,
|
150
|
-
'migration_command' => 'uh oh',
|
151
|
-
'branch' => 'branch_from_ey_yml',
|
152
|
-
'custom' => 'custom_from_ey_yml',
|
153
|
-
'bundle_without' => 'only test',
|
154
|
-
'maintenance_on_migrate' => true,
|
155
|
-
}
|
156
|
-
}
|
157
|
-
}
|
158
|
-
end
|
159
|
-
|
160
|
-
def write_ey_yml(relative_path, data)
|
161
|
-
FileUtils.mkdir_p(File.join(
|
162
|
-
@tempdir,
|
163
|
-
File.dirname(relative_path)))
|
164
|
-
|
165
|
-
File.open(File.join(@tempdir, relative_path), 'w') do |f|
|
166
|
-
f.write data.to_yaml
|
167
|
-
end
|
168
|
-
end
|
169
|
-
|
170
|
-
it "requires 'ey.yml' and adds any defined methods to the deploy" do
|
171
|
-
write_ey_yml 'ey.yml', @yaml_data
|
172
|
-
@deploy.load_ey_yml
|
173
|
-
expect(@deploy.config.copy_exclude).to eq(['.git'])
|
174
|
-
end
|
175
|
-
|
176
|
-
it "falls back to 'config/ey.yml'" do
|
177
|
-
write_ey_yml 'config/ey.yml', @yaml_data
|
178
|
-
@deploy.load_ey_yml
|
179
|
-
expect(@deploy.config.copy_exclude).to eq(['.git'])
|
180
|
-
end
|
181
|
-
|
182
|
-
it "loads at lower priority than command line options" do
|
183
|
-
write_ey_yml 'ey.yml', @yaml_data
|
184
|
-
@deploy.load_ey_yml
|
185
|
-
expect(@deploy.config.migrate?).to eq(false)
|
186
|
-
end
|
187
|
-
|
188
|
-
it "loads at lower priority than json config option" do
|
189
|
-
write_ey_yml 'ey.yml', @yaml_data
|
190
|
-
@deploy.load_ey_yml
|
191
|
-
expect(@deploy.config.branch).to eq('branch_from_command_line')
|
192
|
-
end
|
193
|
-
|
194
|
-
it "loads bundle_without from the config, which overrides the default" do
|
195
|
-
write_ey_yml 'ey.yml', @yaml_data
|
196
|
-
@deploy.load_ey_yml
|
197
|
-
expect(@deploy.config.bundle_without).to eq('only test')
|
198
|
-
end
|
199
|
-
|
200
|
-
it "overrides boolean ey.yml only options with --conifg strings" do
|
201
|
-
write_ey_yml 'ey.yml', @yaml_data
|
202
|
-
@deploy.load_ey_yml
|
203
|
-
expect(@deploy.config).not_to be_maintenance_on_migrate
|
204
|
-
end
|
205
|
-
end
|
206
|
-
end
|
data/spec/custom_deploy_spec.rb
DELETED
@@ -1,128 +0,0 @@
|
|
1
|
-
require 'spec_helper'
|
2
|
-
|
3
|
-
describe "the EY::Serverside::Deploy API" do
|
4
|
-
it "calls tasks in the right order" do
|
5
|
-
class TestDeploy < FullTestDeploy
|
6
|
-
attr_reader :call_order
|
7
|
-
def initialize(*a)
|
8
|
-
super
|
9
|
-
@call_order = []
|
10
|
-
end
|
11
|
-
|
12
|
-
def push_code() @call_order << 'push_code' ; super end
|
13
|
-
def copy_repository_cache() @call_order << 'copy_repository_cache' ; super end
|
14
|
-
def create_revision_file() @call_order << 'create_revision_file' ; super end
|
15
|
-
def bundle() @call_order << 'bundle' ; super end
|
16
|
-
def setup_services() @call_order << 'setup_services' ; super end
|
17
|
-
def symlink_configs() @call_order << 'symlink_configs' ; super end
|
18
|
-
def migrate() @call_order << 'migrate' ; super end
|
19
|
-
def compile_assets() @call_order << 'compile_assets' ; super end
|
20
|
-
def symlink() @call_order << 'symlink' ; super end
|
21
|
-
def restart() @call_order << 'restart' ; super end
|
22
|
-
def cleanup_old_releases() @call_order << 'cleanup_old_releases' ; super end
|
23
|
-
def enable_maintenance_page() @call_order << 'enable_maintenance_page' ; super end
|
24
|
-
def disable_maintenance_page() @call_order << 'disable_maintenance_page'; super end
|
25
|
-
def gc_repository_cache() @call_order << 'gc_repository_cache' ; super end
|
26
|
-
end
|
27
|
-
|
28
|
-
config = EY::Serverside::Deploy::Configuration.new(default_configuration)
|
29
|
-
|
30
|
-
td = TestDeploy.realnew(test_servers, config, test_shell)
|
31
|
-
mock_bundler
|
32
|
-
with_mocked_commands do
|
33
|
-
capture do
|
34
|
-
td.deploy
|
35
|
-
end
|
36
|
-
end
|
37
|
-
|
38
|
-
############################# IMPORTANT ####################################
|
39
|
-
#
|
40
|
-
# Call order is referenced in the engineyard gem eydeploy.rb documentation.
|
41
|
-
#
|
42
|
-
# https://support.cloud.engineyard.com/entries/20996661-customize-your-deployment
|
43
|
-
#
|
44
|
-
# Changing call order or removing methods may adversely affect customers
|
45
|
-
# that are using eydeploy.rb and relying on this documentation.
|
46
|
-
#
|
47
|
-
############################################################################
|
48
|
-
expect(td.call_order).to eq(%w(
|
49
|
-
push_code
|
50
|
-
copy_repository_cache
|
51
|
-
create_revision_file
|
52
|
-
bundle
|
53
|
-
setup_services
|
54
|
-
symlink_configs
|
55
|
-
compile_assets
|
56
|
-
enable_maintenance_page
|
57
|
-
migrate
|
58
|
-
symlink
|
59
|
-
restart
|
60
|
-
disable_maintenance_page
|
61
|
-
cleanup_old_releases
|
62
|
-
gc_repository_cache))
|
63
|
-
end
|
64
|
-
|
65
|
-
describe "task overrides" do
|
66
|
-
before(:each) do
|
67
|
-
@tempdir = Pathname.new(`mktemp -d -t custom_deploy_spec.XXXXX`.strip)
|
68
|
-
end
|
69
|
-
|
70
|
-
def write_eydeploy(relative_path, contents = "def got_new_methods() 'from the file on disk' end")
|
71
|
-
path = @tempdir.join(relative_path)
|
72
|
-
path.dirname.mkpath
|
73
|
-
path.open('w') { |f| f << contents }
|
74
|
-
end
|
75
|
-
|
76
|
-
describe "eydeploy_rb disabled" do
|
77
|
-
before do
|
78
|
-
@config = EY::Serverside::Deploy::Configuration.new('app' => 'app_name', 'repository_cache' => @tempdir.to_s, 'eydeploy_rb' => 'false')
|
79
|
-
@deploy = FullTestDeploy.realnew(test_servers, @config, test_shell)
|
80
|
-
end
|
81
|
-
|
82
|
-
it "doesn't load eydeploy_rb file" do
|
83
|
-
write_eydeploy 'eydeploy.rb'
|
84
|
-
@deploy.require_custom_tasks
|
85
|
-
expect(@deploy).not_to respond_to(:got_new_methods)
|
86
|
-
end
|
87
|
-
end
|
88
|
-
|
89
|
-
describe "eydeploy_rb detect or enabled" do
|
90
|
-
before do
|
91
|
-
@config = EY::Serverside::Deploy::Configuration.new('app' => 'app_name', 'repository_cache' => @tempdir.to_s, 'eydeploy_rb' => 'true')
|
92
|
-
@deploy = FullTestDeploy.realnew(test_servers, @config, test_shell)
|
93
|
-
end
|
94
|
-
|
95
|
-
it "requires 'eydeploy.rb' and adds any defined methods to the deploy" do
|
96
|
-
write_eydeploy 'eydeploy.rb'
|
97
|
-
@deploy.require_custom_tasks
|
98
|
-
expect(@deploy.got_new_methods).to eq('from the file on disk')
|
99
|
-
end
|
100
|
-
|
101
|
-
it "falls back to 'config/eydeploy.rb'" do
|
102
|
-
write_eydeploy 'config/eydeploy.rb'
|
103
|
-
@deploy.require_custom_tasks
|
104
|
-
expect(@deploy.got_new_methods).to eq('from the file on disk')
|
105
|
-
end
|
106
|
-
|
107
|
-
it "lets you super up from any defined methods" do
|
108
|
-
write_eydeploy 'eydeploy.rb', "def value() super << ' + derived' end"
|
109
|
-
|
110
|
-
class TestDeploySuper < FullTestDeploy
|
111
|
-
def value() 'base' end
|
112
|
-
end
|
113
|
-
|
114
|
-
deploy = TestDeploySuper.realnew(test_servers, @config, test_shell)
|
115
|
-
deploy.require_custom_tasks
|
116
|
-
expect(deploy.value).to eq("base + derived")
|
117
|
-
end
|
118
|
-
|
119
|
-
it "records exceptions raised from the instance eval in the log" do
|
120
|
-
write_eydeploy 'eydeploy.rb', "raise 'Imma blow up'"
|
121
|
-
expect { @deploy.require_custom_tasks }.to raise_error
|
122
|
-
log = @log_path.read
|
123
|
-
expect(log).to match(/Exception while loading .*eydeploy\.rb/)
|
124
|
-
expect(log).to include('Imma blow up')
|
125
|
-
end
|
126
|
-
end
|
127
|
-
end
|
128
|
-
end
|