engineyard-serverside 2.8.0.pre4 → 2.8.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.
- checksums.yaml +4 -4
- data/features/enable_maintenance/step_definitions/enable_maintenance_steps.rb +43 -0
- data/features/hook/running-a-deploy-hook.feature +277 -0
- data/features/hook/step_definitions/running-a-deploy-hook-steps.rb +200 -0
- data/features/step_definitions/app_steps.rb +10 -0
- data/features/step_definitions/command_steps.rb +8 -0
- data/features/step_definitions/server_steps.rb +14 -0
- data/features/step_definitions/version_steps.rb +5 -0
- data/features/support/env.rb +63 -0
- data/features/support/error_codes.rb +17 -0
- data/features/support/fs_helpers.rb +82 -0
- data/features/support/output_helpers.rb +7 -0
- data/features/support/runner.rb +41 -0
- data/features/version.feature +7 -0
- data/lib/engineyard-serverside/cli/app.rb +6 -0
- data/lib/engineyard-serverside/shell.rb +38 -10
- data/lib/engineyard-serverside/version.rb +1 -1
- data/spec/engineyard-serverside/callbacks/collection/combined_spec.rb +232 -0
- data/spec/engineyard-serverside/callbacks/collection/deploy_hooks_spec.rb +170 -0
- data/spec/engineyard-serverside/callbacks/collection/service_hooks/collection_spec.rb +171 -0
- data/spec/engineyard-serverside/callbacks/collection/service_hooks/combined_spec.rb +174 -0
- data/spec/engineyard-serverside/callbacks/collection/service_hooks_spec.rb +31 -0
- data/spec/engineyard-serverside/callbacks/collection_spec.rb +49 -0
- data/spec/engineyard-serverside/callbacks/distributor/remote_spec.rb +135 -0
- data/spec/engineyard-serverside/callbacks/distributor/viability_filter_spec.rb +208 -0
- data/spec/engineyard-serverside/callbacks/distributor_spec.rb +43 -0
- data/spec/engineyard-serverside/callbacks/executor/executable_spec.rb +386 -0
- data/spec/engineyard-serverside/callbacks/executor/ruby/context_spec.rb +538 -0
- data/spec/engineyard-serverside/callbacks/executor/ruby/executor_spec.rb +313 -0
- data/spec/engineyard-serverside/callbacks/executor/ruby_spec.rb +35 -0
- data/spec/engineyard-serverside/callbacks/executor_spec.rb +45 -0
- data/spec/engineyard-serverside/callbacks_spec.rb +31 -0
- data/spec/engineyard-serverside/cli/workflows/base_spec.rb +237 -0
- data/spec/engineyard-serverside/cli/workflows/calling_deploy_hooks_spec.rb +65 -0
- data/spec/engineyard-serverside/cli/workflows/deploying_applications_spec.rb +61 -0
- data/spec/engineyard-serverside/cli/workflows/disabling_maintenance_spec.rb +61 -0
- data/spec/engineyard-serverside/cli/workflows/enabling_maintenance_spec.rb +61 -0
- data/spec/engineyard-serverside/cli/workflows/helpers_spec.rb +64 -0
- data/spec/engineyard-serverside/cli/workflows/rolling_back_applications_spec.rb +61 -0
- data/spec/engineyard-serverside/cli/workflows/showing_maintenance_status_spec.rb +60 -0
- data/spec/engineyard-serverside/cli/workflows_spec.rb +87 -0
- data/spec/engineyard-serverside/dependency_manager/base_spec.rb +139 -0
- data/spec/engineyard-serverside/paths_spec.rb +820 -0
- data/spec/engineyard-serverside/propagator_spec.rb +56 -0
- data/spec/engineyard-serverside/server_spec.rb +390 -0
- data/spec/engineyard-serverside/shell/helpers_spec.rb +98 -0
- data/spec/engineyard-serverside/shell/yieldio_spec.rb +33 -0
- data/spec/engineyard-serverside/shell_spec.rb +543 -0
- data/spec/engineyard-serverside/slug/distributor_spec.rb +199 -0
- data/spec/engineyard-serverside/slug/enabler_spec.rb +191 -0
- data/spec/engineyard-serverside/slug/failure_handler_spec.rb +114 -0
- data/spec/engineyard-serverside/slug/finalizer_spec.rb +191 -0
- data/spec/engineyard-serverside/slug/generator_spec.rb +82 -0
- data/spec/engineyard-serverside/slug/migrator_spec.rb +137 -0
- data/spec/engineyard-serverside/slug/restarter_spec.rb +226 -0
- data/spec/engineyard-serverside/slug/source/updater_spec.rb +710 -0
- data/spec/engineyard-serverside/slug/source_spec.rb +40 -0
- data/spec/engineyard-serverside/source_spec.rb +171 -0
- data/spec/railway_spec.rb +130 -0
- data/spec/result/failure_spec.rb +113 -0
- data/spec/result/success_spec.rb +109 -0
- data/spec/result_spec.rb +23 -0
- data/spec/spec_helper.rb +3 -349
- metadata +182 -404
- 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/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
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 3fbdbd466a22b707283bf47395220f0a81b77ac9ec926ffcaef805f0d9a2448c
|
4
|
+
data.tar.gz: 7289debb0ab4af4df33dec2ae0e6f8464a8e3b883479cafd24fe18423703cf48
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 832ef48fc2a640afbf443e680353bb5e77d2c1d05517ef00c06be0c6668117a65da3acdffbb46cecce8e768d29bf5f2656886b070e3109fa91c0378a9f642308
|
7
|
+
data.tar.gz: 9f7fb645f31ece040e792ebfacb5a40bf6d74ffd1abf56a1b538fa2b4efab315cddee784c4dc833100c954de4e71ca5e1a5d3b5f653fa53d98cfa7f9a064013d
|
@@ -0,0 +1,43 @@
|
|
1
|
+
def servers
|
2
|
+
recall_fact(:servers)
|
3
|
+
end
|
4
|
+
|
5
|
+
Then %{I see output indicating the enable_maintenance workflow was performed} do
|
6
|
+
expect(output_text).to include('maintenance page')
|
7
|
+
end
|
8
|
+
|
9
|
+
Given %{public/system is a symlink to the shared system} do
|
10
|
+
system_path.rmtree if system_path.exist?
|
11
|
+
|
12
|
+
setup_system_link
|
13
|
+
end
|
14
|
+
|
15
|
+
def instances
|
16
|
+
servers.map {|server| server[:hostname]}
|
17
|
+
end
|
18
|
+
|
19
|
+
def instance_names
|
20
|
+
servers.map {|server| "#{server[:hostname]}:#{server[:name]}"}
|
21
|
+
end
|
22
|
+
|
23
|
+
def instance_roles
|
24
|
+
servers.map {|server| "#{server[:hostname]}:#{server[:roles].join(',')}"}
|
25
|
+
end
|
26
|
+
|
27
|
+
When %{I run the enable_maintenance command} do
|
28
|
+
instances_flag = (['--instances'] + instances).join(' ')
|
29
|
+
instance_names_flag = (['--instance-names'] + instance_names).join(' ')
|
30
|
+
instance_roles_flag = (['--instance-roles'] + instance_roles).join(' ')
|
31
|
+
|
32
|
+
step %{I run `engineyard-serverside enable_maintenance --account-name #{account_name} --app #{app_name} --environment-name #{env_name} #{instances_flag} #{instance_names_flag} #{instance_roles_flag}`}
|
33
|
+
end
|
34
|
+
|
35
|
+
Then %{maintenance is enabled remotely on the solo server} do
|
36
|
+
servers.select {|x| x[:roles].include?('solo')}.each do |server|
|
37
|
+
expect(ExecutedCommands.maintenance_enabled?(server[:hostname])).to eql(true)
|
38
|
+
end
|
39
|
+
end
|
40
|
+
|
41
|
+
Then %{I see a notice that maintenance has been enabled} do
|
42
|
+
expect(output_text).to include('Maintenance page enabled')
|
43
|
+
end
|
@@ -0,0 +1,277 @@
|
|
1
|
+
Feature: Running A Deploy Hook
|
2
|
+
In order to inject needed extra steps into the deploy process, I want to be able
|
3
|
+
to provide hooks for various pre-defined callbacks. Meanwhile, serverside needs
|
4
|
+
to know how to execute such hooks.
|
5
|
+
|
6
|
+
Background:
|
7
|
+
Given my account name is TestAccount
|
8
|
+
And my app's name is george
|
9
|
+
And my app lives in an environment named george_fliggerbop
|
10
|
+
And the framework env for my environment is staging
|
11
|
+
|
12
|
+
Scenario Outline: Running a callback
|
13
|
+
When I run `engineyard-serverside hook <Callback Name> --app=george --environment-name=george_fliggerbop --account-name=TestAccount --framework-env=staging`
|
14
|
+
Then I see output indicating that the <Callback Name> hooks were processed
|
15
|
+
|
16
|
+
Examples:
|
17
|
+
| Callback Name |
|
18
|
+
| before_deploy |
|
19
|
+
| before_bundle |
|
20
|
+
| after_bundle |
|
21
|
+
| before_compile_assets |
|
22
|
+
| after_compile_assets |
|
23
|
+
| before_migrate |
|
24
|
+
| after_migrate |
|
25
|
+
| before_symlink |
|
26
|
+
| after_symlink |
|
27
|
+
| before_restart |
|
28
|
+
| after_restart |
|
29
|
+
| after_deploy |
|
30
|
+
|
31
|
+
Scenario Outline: Running a callback with no hooks present
|
32
|
+
Given my app has no deploy hooks
|
33
|
+
And my app has no service hooks
|
34
|
+
When I run the <Callback Name> callback
|
35
|
+
Then I see a notice that the <Callback Name> callback was skipped
|
36
|
+
|
37
|
+
Examples:
|
38
|
+
| Callback Name |
|
39
|
+
| before_deploy |
|
40
|
+
| before_bundle |
|
41
|
+
| after_bundle |
|
42
|
+
| before_compile_assets |
|
43
|
+
| after_compile_assets |
|
44
|
+
| before_migrate |
|
45
|
+
| after_migrate |
|
46
|
+
| before_symlink |
|
47
|
+
| after_symlink |
|
48
|
+
| before_restart |
|
49
|
+
| after_restart |
|
50
|
+
| after_deploy |
|
51
|
+
|
52
|
+
Scenario Outline: Running a callback with a Ruby deploy hook
|
53
|
+
Given my app has a <Callback Name> ruby deploy hook
|
54
|
+
When I run the <Callback Name> callback
|
55
|
+
Then the <Callback Name> ruby deploy hook is executed
|
56
|
+
|
57
|
+
Examples:
|
58
|
+
| Callback Name |
|
59
|
+
| before_deploy |
|
60
|
+
| before_bundle |
|
61
|
+
| after_bundle |
|
62
|
+
| before_compile_assets |
|
63
|
+
| after_compile_assets |
|
64
|
+
| before_migrate |
|
65
|
+
| after_migrate |
|
66
|
+
| before_symlink |
|
67
|
+
| after_symlink |
|
68
|
+
| before_restart |
|
69
|
+
| after_restart |
|
70
|
+
| after_deploy |
|
71
|
+
|
72
|
+
Scenario Outline: Running a callback with an Executable deploy hook
|
73
|
+
Given my app has a <Callback Name> executable deploy hook
|
74
|
+
When I run the <Callback Name> callback
|
75
|
+
Then the <Callback Name> executable deploy hook is executed
|
76
|
+
|
77
|
+
Examples:
|
78
|
+
| Callback Name |
|
79
|
+
| before_deploy |
|
80
|
+
| before_bundle |
|
81
|
+
| after_bundle |
|
82
|
+
| before_compile_assets |
|
83
|
+
| after_compile_assets |
|
84
|
+
| before_migrate |
|
85
|
+
| after_migrate |
|
86
|
+
| before_symlink |
|
87
|
+
| after_symlink |
|
88
|
+
| before_restart |
|
89
|
+
| after_restart |
|
90
|
+
| after_deploy |
|
91
|
+
|
92
|
+
Scenario Outline: Running a callback with both Ruby and Executable deploy hooks
|
93
|
+
Given my app has a <Callback Name> executable deploy hook
|
94
|
+
Given my app has a <Callback Name> ruby deploy hook
|
95
|
+
When I run the <Callback Name> callback
|
96
|
+
Then the <Callback Name> ruby deploy hook is executed
|
97
|
+
But the <Callback Name> executable deploy hook is not executed
|
98
|
+
|
99
|
+
Examples:
|
100
|
+
| Callback Name |
|
101
|
+
| before_deploy |
|
102
|
+
| before_bundle |
|
103
|
+
| after_bundle |
|
104
|
+
| before_compile_assets |
|
105
|
+
| after_compile_assets |
|
106
|
+
| before_migrate |
|
107
|
+
| after_migrate |
|
108
|
+
| before_symlink |
|
109
|
+
| after_symlink |
|
110
|
+
| before_restart |
|
111
|
+
| after_restart |
|
112
|
+
| after_deploy |
|
113
|
+
|
114
|
+
Scenario Outline: Running a callback with a Ruby service hook
|
115
|
+
Given I have a service named selective
|
116
|
+
And my service has a <Callback Name> ruby hook
|
117
|
+
When I run the <Callback Name> callback
|
118
|
+
Then the <Callback Name> ruby hook for my service is executed
|
119
|
+
|
120
|
+
Examples:
|
121
|
+
| Callback Name |
|
122
|
+
| before_deploy |
|
123
|
+
| before_bundle |
|
124
|
+
| after_bundle |
|
125
|
+
| before_compile_assets |
|
126
|
+
| after_compile_assets |
|
127
|
+
| before_migrate |
|
128
|
+
| after_migrate |
|
129
|
+
| before_symlink |
|
130
|
+
| after_symlink |
|
131
|
+
| before_restart |
|
132
|
+
| after_restart |
|
133
|
+
| after_deploy |
|
134
|
+
|
135
|
+
Scenario Outline: Running a callback with an executable service hook
|
136
|
+
Given I have a service named selective
|
137
|
+
And my service has a <Callback Name> executable hook
|
138
|
+
When I run the <Callback Name> callback
|
139
|
+
Then the <Callback Name> executable hook for my service is executed
|
140
|
+
|
141
|
+
Examples:
|
142
|
+
| Callback Name |
|
143
|
+
| before_deploy |
|
144
|
+
| before_bundle |
|
145
|
+
| after_bundle |
|
146
|
+
| before_compile_assets |
|
147
|
+
| after_compile_assets |
|
148
|
+
| before_migrate |
|
149
|
+
| after_migrate |
|
150
|
+
| before_symlink |
|
151
|
+
| after_symlink |
|
152
|
+
| before_restart |
|
153
|
+
| after_restart |
|
154
|
+
| after_deploy |
|
155
|
+
|
156
|
+
Scenario Outline: Running a callback with both Ruby and Executable service hooks
|
157
|
+
Given I have a service named selective
|
158
|
+
Given my service has a <Callback Name> executable hook
|
159
|
+
Given my service has a <Callback Name> ruby hook
|
160
|
+
When I run the <Callback Name> callback
|
161
|
+
Then the <Callback Name> ruby hook for my service is executed
|
162
|
+
But the <Callback Name> executable hook for my service is not executed
|
163
|
+
|
164
|
+
Examples:
|
165
|
+
| Callback Name |
|
166
|
+
| before_deploy |
|
167
|
+
| before_bundle |
|
168
|
+
| after_bundle |
|
169
|
+
| before_compile_assets |
|
170
|
+
| after_compile_assets |
|
171
|
+
| before_migrate |
|
172
|
+
| after_migrate |
|
173
|
+
| before_symlink |
|
174
|
+
| after_symlink |
|
175
|
+
| before_restart |
|
176
|
+
| after_restart |
|
177
|
+
| after_deploy |
|
178
|
+
|
179
|
+
Scenario Outline: Running a callback with botth service hooks and deploy hooks
|
180
|
+
Given my app has a <Callback Name> executable deploy hook
|
181
|
+
And I have a service named selective
|
182
|
+
Given my service has a <Callback Name> ruby hook
|
183
|
+
When I run the <Callback Name> callback
|
184
|
+
Then the <Callback Name> ruby hook for my service is executed
|
185
|
+
And the <Callback Name> executable deploy hook is executed
|
186
|
+
|
187
|
+
Examples:
|
188
|
+
| Callback Name |
|
189
|
+
| before_deploy |
|
190
|
+
| before_bundle |
|
191
|
+
| after_bundle |
|
192
|
+
| before_compile_assets |
|
193
|
+
| after_compile_assets |
|
194
|
+
| before_migrate |
|
195
|
+
| after_migrate |
|
196
|
+
| before_symlink |
|
197
|
+
| after_symlink |
|
198
|
+
| before_restart |
|
199
|
+
| after_restart |
|
200
|
+
| after_deploy |
|
201
|
+
|
202
|
+
|
203
|
+
Scenario Outline: Executable hooks without the executable bit get skipped
|
204
|
+
Given my app has a <Callback Name> executable deploy hook
|
205
|
+
But my app's <Callback Name> executable deploy hook is not actually executable
|
206
|
+
And I have a service named selective
|
207
|
+
Given my service has a <Callback Name> executable hook
|
208
|
+
When I run the <Callback Name> callback
|
209
|
+
Then the <Callback Name> executable hook for my service is executed
|
210
|
+
But the <Callback Name> executable deploy hook is not executed
|
211
|
+
|
212
|
+
Examples:
|
213
|
+
| Callback Name |
|
214
|
+
| before_deploy |
|
215
|
+
| before_bundle |
|
216
|
+
| after_bundle |
|
217
|
+
| before_compile_assets |
|
218
|
+
| after_compile_assets |
|
219
|
+
| before_migrate |
|
220
|
+
| after_migrate |
|
221
|
+
| before_symlink |
|
222
|
+
| after_symlink |
|
223
|
+
| before_restart |
|
224
|
+
| after_restart |
|
225
|
+
| after_deploy |
|
226
|
+
|
227
|
+
@error
|
228
|
+
Scenario Outline: Ruby hooks with syntax errors cause an error
|
229
|
+
Given my app has a <Callback Name> ruby deploy hook
|
230
|
+
And I have a service named selective
|
231
|
+
And my service has a <Callback Name> ruby hook
|
232
|
+
But my service's <Callback Name> ruby hook contains syntax errors
|
233
|
+
When I run the <Callback Name> callback
|
234
|
+
Then I see a notice about the <Callback Name> syntax error
|
235
|
+
But my service's <Callback Name> ruby hook is not executed
|
236
|
+
And the <Callback Name> ruby deploy hook is not executed
|
237
|
+
|
238
|
+
Examples:
|
239
|
+
| Callback Name |
|
240
|
+
| before_deploy |
|
241
|
+
| before_bundle |
|
242
|
+
| after_bundle |
|
243
|
+
| before_compile_assets |
|
244
|
+
| after_compile_assets |
|
245
|
+
| before_migrate |
|
246
|
+
| after_migrate |
|
247
|
+
| before_symlink |
|
248
|
+
| after_symlink |
|
249
|
+
| before_restart |
|
250
|
+
| after_restart |
|
251
|
+
| after_deploy |
|
252
|
+
|
253
|
+
@failure
|
254
|
+
Scenario Outline: Ruby hooks with syntax errors cause an error
|
255
|
+
Given my app has a <Callback Name> ruby deploy hook
|
256
|
+
And I have a service named selective
|
257
|
+
And my service has a <Callback Name> ruby hook
|
258
|
+
But my service's <Callback Name> ruby hook is prone to errors
|
259
|
+
When I run the <Callback Name> callback
|
260
|
+
Then the <Callback Name> ruby hook for my service is executed
|
261
|
+
But I see a notice about the <Callback Name> exception
|
262
|
+
And the <Callback Name> ruby deploy hook is not executed
|
263
|
+
|
264
|
+
Examples:
|
265
|
+
| Callback Name |
|
266
|
+
| before_deploy |
|
267
|
+
| before_bundle |
|
268
|
+
| after_bundle |
|
269
|
+
| before_compile_assets |
|
270
|
+
| after_compile_assets |
|
271
|
+
| before_migrate |
|
272
|
+
| after_migrate |
|
273
|
+
| before_symlink |
|
274
|
+
| after_symlink |
|
275
|
+
| before_restart |
|
276
|
+
| after_restart |
|
277
|
+
| after_deploy |
|
@@ -0,0 +1,200 @@
|
|
1
|
+
require 'fileutils'
|
2
|
+
|
3
|
+
def account_name
|
4
|
+
recall_fact(:account_name)
|
5
|
+
end
|
6
|
+
|
7
|
+
def app_name
|
8
|
+
recall_fact(:app_name)
|
9
|
+
end
|
10
|
+
|
11
|
+
def env_name
|
12
|
+
recall_fact(:env_name)
|
13
|
+
end
|
14
|
+
|
15
|
+
def framework_env
|
16
|
+
recall_fact(:framework_env)
|
17
|
+
end
|
18
|
+
|
19
|
+
def service_name
|
20
|
+
recall_fact(:service_name)
|
21
|
+
end
|
22
|
+
|
23
|
+
Given %r{^my account name is (.+)$} do |account_name|
|
24
|
+
memorize_fact(:account_name, account_name)
|
25
|
+
end
|
26
|
+
|
27
|
+
Given %r{^my app's name is (.+)$} do |app_name|
|
28
|
+
memorize_fact(:app_name, app_name)
|
29
|
+
setup_release_path
|
30
|
+
end
|
31
|
+
|
32
|
+
Given %r{^my app lives in an environment named (.+)$} do |env_name|
|
33
|
+
memorize_fact(:env_name, env_name)
|
34
|
+
end
|
35
|
+
|
36
|
+
Given %r{^the framework env for my environment is (.+)$} do |framework_env|
|
37
|
+
memorize_fact(:framework_env, framework_env)
|
38
|
+
end
|
39
|
+
|
40
|
+
Then %r{^I see output indicating that the (.+) hooks were processed$} do |hook_name|
|
41
|
+
expect(output_text).to include(hook_name)
|
42
|
+
end
|
43
|
+
|
44
|
+
Given %{my app has no deploy hooks} do
|
45
|
+
cleanup_deploy_hooks_path
|
46
|
+
true
|
47
|
+
end
|
48
|
+
|
49
|
+
Given %{my app has no service hooks} do
|
50
|
+
cleanup_shared_hooks_path
|
51
|
+
true
|
52
|
+
end
|
53
|
+
|
54
|
+
When %r{^I run the (.+) callback$} do |callback_name|
|
55
|
+
#puts "Data: '#{Dir["#{data_path}/**/*"]}'"
|
56
|
+
|
57
|
+
config = {:deploy_to => app_path.to_s}
|
58
|
+
|
59
|
+
command = [
|
60
|
+
'engineyard-serverside',
|
61
|
+
'hook',
|
62
|
+
callback_name,
|
63
|
+
"--app=#{app_name}",
|
64
|
+
"--environment-name=#{env_name}",
|
65
|
+
"--account-name=#{account_name}",
|
66
|
+
"--framework-env=#{framework_env}",
|
67
|
+
"--release-path=#{release_path}",
|
68
|
+
"--config='#{config.to_json}'"
|
69
|
+
].join(' ')
|
70
|
+
|
71
|
+
step %(I run `#{command}`)
|
72
|
+
end
|
73
|
+
|
74
|
+
Then %r{^I see a notice that the (.+) callback was skipped$} do |callback_name|
|
75
|
+
expect(output_text).to include("#{callback_name}. Skipping.")
|
76
|
+
end
|
77
|
+
|
78
|
+
def write_ruby_deploy_hook(callback_name, content)
|
79
|
+
setup_deploy_hooks_path
|
80
|
+
|
81
|
+
hook = deploy_hooks_path.join("#{callback_name}.rb")
|
82
|
+
|
83
|
+
f = File.open(hook.to_s, 'w')
|
84
|
+
f.write(content.to_s)
|
85
|
+
f.close
|
86
|
+
end
|
87
|
+
|
88
|
+
def write_ruby_service_hook(callback_name, content)
|
89
|
+
setup_service_path(service_name)
|
90
|
+
|
91
|
+
hook = service_path(service_name).join("#{callback_name}.rb")
|
92
|
+
|
93
|
+
f = File.open(hook.to_s, 'w')
|
94
|
+
f.write(content.to_s)
|
95
|
+
f.close
|
96
|
+
end
|
97
|
+
|
98
|
+
Given %r{^my app has a (.+) ruby deploy hook$} do |callback_name|
|
99
|
+
write_ruby_deploy_hook(callback_name, 'true')
|
100
|
+
end
|
101
|
+
|
102
|
+
Then %r{^the (.+) ruby deploy hook is executed$} do |callback_name|
|
103
|
+
expect(output_text).
|
104
|
+
to include("Executing #{deploy_hooks_path.join("#{callback_name}.rb")}")
|
105
|
+
end
|
106
|
+
|
107
|
+
Given %r{^my app has a (.+) executable deploy hook$} do |callback_name|
|
108
|
+
setup_deploy_hooks_path
|
109
|
+
|
110
|
+
hook = deploy_hooks_path.join(callback_name)
|
111
|
+
f = File.open(hook.to_s, 'w')
|
112
|
+
f.write("#!/bin/bash\n\necho #{hook.to_s}")
|
113
|
+
f.close
|
114
|
+
|
115
|
+
hook.chmod(0755)
|
116
|
+
end
|
117
|
+
|
118
|
+
Then %r{^the (.+) executable deploy hook is executed$} do |callback_name|
|
119
|
+
expect(ExecutedCommands.deploy_hook_executed?(callback_name)).to eql(true)
|
120
|
+
end
|
121
|
+
|
122
|
+
Then %r{^the (.+) executable deploy hook is not executed$} do |callback_name|
|
123
|
+
expect(ExecutedCommands.deploy_hook_executed?(callback_name)).to eql(false)
|
124
|
+
end
|
125
|
+
|
126
|
+
Given %r{^I have a service named (.+)$} do |service_name|
|
127
|
+
memorize_fact(:service_name, service_name)
|
128
|
+
end
|
129
|
+
|
130
|
+
Given %r{^my service has a (.+) ruby hook$} do |callback_name|
|
131
|
+
write_ruby_service_hook(callback_name, 'true')
|
132
|
+
end
|
133
|
+
|
134
|
+
Then %r{^the (.+) ruby hook for my service is executed$} do |callback_name|
|
135
|
+
hook = service_path(service_name).join("#{callback_name}.rb")
|
136
|
+
|
137
|
+
expect(output_text).to include("Executing #{hook}")
|
138
|
+
end
|
139
|
+
|
140
|
+
Given %r{^my service has a (.+) executable hook$} do |callback_name|
|
141
|
+
setup_service_path(service_name)
|
142
|
+
|
143
|
+
hook = service_path(service_name).join(callback_name)
|
144
|
+
f = File.open(hook.to_s, 'w')
|
145
|
+
f.write("#!/bin/bash\n\necho #{hook.to_s}")
|
146
|
+
f.close
|
147
|
+
|
148
|
+
hook.chmod(0755)
|
149
|
+
end
|
150
|
+
|
151
|
+
Then %r{^the (.+) executable hook for my service is executed$} do |callback_name|
|
152
|
+
expect(ExecutedCommands.service_hook_executed?(service_name, callback_name)).
|
153
|
+
to eql(true)
|
154
|
+
end
|
155
|
+
|
156
|
+
Then %r{^the (.+) executable hook for my service is not executed$} do |callback_name|
|
157
|
+
expect(ExecutedCommands.service_hook_executed?(service_name, callback_name)).
|
158
|
+
to eql(false)
|
159
|
+
end
|
160
|
+
|
161
|
+
Given %r{^my app's (.+) executable deploy hook is not actually executable$} do |callback_name|
|
162
|
+
hook = deploy_hooks_path.join(callback_name)
|
163
|
+
|
164
|
+
hook.chmod(0644)
|
165
|
+
end
|
166
|
+
|
167
|
+
Given %r{^my service's (.+) ruby hook contains syntax errors$} do |callback_name|
|
168
|
+
write_ruby_service_hook(callback_name, "# encoding: UTF-8\n\n)")
|
169
|
+
end
|
170
|
+
|
171
|
+
Then %r{^I see a notice about the (.+) syntax error$} do |callback_name|
|
172
|
+
hook = service_path(service_name).join("#{callback_name}.rb")
|
173
|
+
expect(output_text).to include("*** [Error] Invalid Ruby syntax in hook: #{hook}")
|
174
|
+
end
|
175
|
+
|
176
|
+
Then %r(^my service's (.+) ruby hook is not executed$) do |callback_name|
|
177
|
+
hook = service_path(service_name).join("#{callback_name}.rb")
|
178
|
+
|
179
|
+
expect(output_text).not_to include("Executing #{hook}")
|
180
|
+
end
|
181
|
+
|
182
|
+
Given %r{^my service's (.+) ruby hook is prone to errors$} do |callback_name|
|
183
|
+
write_ruby_service_hook(callback_name, "raise 'a ruckus'")
|
184
|
+
end
|
185
|
+
|
186
|
+
Then %r{^I see a notice about the (.+) exception$} do |callback_name|
|
187
|
+
hook = service_path(service_name).join("#{callback_name}.rb")
|
188
|
+
|
189
|
+
expect(output_text).
|
190
|
+
to include("Exception raised in hook #{hook.to_s}")
|
191
|
+
end
|
192
|
+
|
193
|
+
Then %r{^the (.+) ruby deploy hook is not executed$} do |callback_name|
|
194
|
+
expect(output_text).
|
195
|
+
not_to include("Executing #{deploy_hooks_path.join("#{callback_name}.rb")}")
|
196
|
+
end
|
197
|
+
|
198
|
+
Then %{I see the output} do
|
199
|
+
puts "OUTPUT START\n\n#{output_text}\n\nOUTPUT END"
|
200
|
+
end
|