whisk_deploy 0.6.26
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/CHANGELOG +292 -0
- data/MIT-LICENSE +20 -0
- data/README.integration_specs +24 -0
- data/README.markdown +832 -0
- data/Rakefile +105 -0
- data/VERSION +1 -0
- data/WHY.txt +45 -0
- data/bin/wd +61 -0
- data/bin/wd_role +42 -0
- data/examples/deploy-configs.yml +13 -0
- data/examples/deploy-local.yml +4 -0
- data/examples/deploy-multiple-remotes.yml +26 -0
- data/examples/deploy-staging.yml +8 -0
- data/examples/deploy.rake +11 -0
- data/examples/deploy.yml +16 -0
- data/init.rb +1 -0
- data/install.rb +5 -0
- data/lib/whiskey_disk.rb +327 -0
- data/lib/whiskey_disk/config.rb +127 -0
- data/lib/whiskey_disk/config/abstract_filter.rb +19 -0
- data/lib/whiskey_disk/config/filter.rb +48 -0
- data/lib/whiskey_disk/config/filters/add_environment_name_filter.rb +11 -0
- data/lib/whiskey_disk/config/filters/add_project_name_filter.rb +11 -0
- data/lib/whiskey_disk/config/filters/check_for_duplicate_domains_filter.rb +21 -0
- data/lib/whiskey_disk/config/filters/convert_role_strings_to_list_filter.rb +20 -0
- data/lib/whiskey_disk/config/filters/default_config_target_filter.rb +12 -0
- data/lib/whiskey_disk/config/filters/default_domain_filter.rb +12 -0
- data/lib/whiskey_disk/config/filters/drop_empty_domain_roles_filter.rb +32 -0
- data/lib/whiskey_disk/config/filters/environment_scope_filter.rb +20 -0
- data/lib/whiskey_disk/config/filters/hashify_domain_entries_filter.rb +29 -0
- data/lib/whiskey_disk/config/filters/localize_domains_filter.rb +24 -0
- data/lib/whiskey_disk/config/filters/modules/scope_helper.rb +11 -0
- data/lib/whiskey_disk/config/filters/normalize_ssh_options_filter.rb +29 -0
- data/lib/whiskey_disk/config/filters/project_scope_filter.rb +34 -0
- data/lib/whiskey_disk/config/filters/select_project_and_environment_filter.rb +12 -0
- data/lib/whiskey_disk/config/filters/stringify_hash_keys_filter.rb +25 -0
- data/lib/whiskey_disk/helpers.rb +50 -0
- data/lib/whiskey_disk/rake.rb +47 -0
- data/scenarios/git_repositories/config.git/HEAD +1 -0
- data/scenarios/git_repositories/config.git/config +5 -0
- data/scenarios/git_repositories/config.git/description +1 -0
- data/scenarios/git_repositories/config.git/git-daemon-export-ok +0 -0
- data/scenarios/git_repositories/config.git/hooks/applypatch-msg.sample +15 -0
- data/scenarios/git_repositories/config.git/hooks/commit-msg.sample +24 -0
- data/scenarios/git_repositories/config.git/hooks/post-commit.sample +8 -0
- data/scenarios/git_repositories/config.git/hooks/post-receive.sample +15 -0
- data/scenarios/git_repositories/config.git/hooks/post-update.sample +8 -0
- data/scenarios/git_repositories/config.git/hooks/pre-applypatch.sample +14 -0
- data/scenarios/git_repositories/config.git/hooks/pre-commit.sample +46 -0
- data/scenarios/git_repositories/config.git/hooks/pre-rebase.sample +169 -0
- data/scenarios/git_repositories/config.git/hooks/prepare-commit-msg.sample +36 -0
- data/scenarios/git_repositories/config.git/hooks/update.sample +128 -0
- data/scenarios/git_repositories/config.git/info/exclude +6 -0
- data/scenarios/git_repositories/config.git/objects/0d/b14dd6ddc54017c0a11960dcda82ed802cde69 +0 -0
- data/scenarios/git_repositories/config.git/objects/0e/e781f5ce80d64db32a74a7aae7b5248dafe112 +3 -0
- data/scenarios/git_repositories/config.git/objects/17/6bf54cf17d1d1c24556dc059c4144a5df230e8 +0 -0
- data/scenarios/git_repositories/config.git/objects/20/e9ff3feaa8ede30f707e5f1b4356e3c02bb7ec +0 -0
- data/scenarios/git_repositories/config.git/objects/45/117b1c775f0de415478dbf08ed9d667ab17d13 +0 -0
- data/scenarios/git_repositories/config.git/objects/51/3954c9aca090e6ce40359f0e9fde30ea78eb8c +0 -0
- data/scenarios/git_repositories/config.git/objects/66/947a7a11a6f5d3d561fe95de284ced3010819a +0 -0
- data/scenarios/git_repositories/config.git/objects/6b/bc79311bfac47d3ed724aa82a4814e0dda4c67 +0 -0
- data/scenarios/git_repositories/config.git/objects/71/eb5df52676e8e6efba471050b46978173af110 +1 -0
- data/scenarios/git_repositories/config.git/objects/84/17d2fe3e8fcc0825249c517b29b0f9ea8b8b31 +2 -0
- data/scenarios/git_repositories/config.git/objects/8b/384fcfcf7c0dee7c3c1d5636bee9e645d9cf38 +0 -0
- data/scenarios/git_repositories/config.git/objects/bb/59da633ba74296b0c2f9ff70784ac155ddb599 +0 -0
- data/scenarios/git_repositories/config.git/objects/cc/b86b26189afbf45d8eb9165812ab86dbdfca63 +0 -0
- data/scenarios/git_repositories/config.git/objects/d1/0bcd51fec41f854001e4d61f99d9e282a695d3 +0 -0
- data/scenarios/git_repositories/config.git/objects/d8/a8b0f5b1fd66844efb141d9544965ea0065f2d +0 -0
- data/scenarios/git_repositories/config.git/objects/e6/b02c66ad632e6b8535c4630cb8fe07732a72fc +0 -0
- data/scenarios/git_repositories/config.git/objects/e8/b8bfeeba735c0a1a873082554cb4d7256ac125 +0 -0
- data/scenarios/git_repositories/config.git/objects/f9/0181466a1a60b793ca9cc9abd584c18d4e3887 +0 -0
- data/scenarios/git_repositories/config.git/objects/f9/49d5d8a4f12c91471e34d4e277239c35ebd10d +0 -0
- data/scenarios/git_repositories/config.git/refs/heads/master +1 -0
- data/scenarios/git_repositories/project.git/HEAD +1 -0
- data/scenarios/git_repositories/project.git/config +5 -0
- data/scenarios/git_repositories/project.git/description +1 -0
- data/scenarios/git_repositories/project.git/git-daemon-export-ok +0 -0
- data/scenarios/git_repositories/project.git/hooks/applypatch-msg.sample +15 -0
- data/scenarios/git_repositories/project.git/hooks/commit-msg.sample +24 -0
- data/scenarios/git_repositories/project.git/hooks/post-commit.sample +8 -0
- data/scenarios/git_repositories/project.git/hooks/post-receive.sample +15 -0
- data/scenarios/git_repositories/project.git/hooks/post-update.sample +8 -0
- data/scenarios/git_repositories/project.git/hooks/pre-applypatch.sample +14 -0
- data/scenarios/git_repositories/project.git/hooks/pre-commit.sample +46 -0
- data/scenarios/git_repositories/project.git/hooks/pre-rebase.sample +169 -0
- data/scenarios/git_repositories/project.git/hooks/prepare-commit-msg.sample +36 -0
- data/scenarios/git_repositories/project.git/hooks/update.sample +128 -0
- data/scenarios/git_repositories/project.git/info/exclude +6 -0
- data/scenarios/git_repositories/project.git/objects/04/26e152e66c8cd42974279bdcae09be9839c172 +0 -0
- data/scenarios/git_repositories/project.git/objects/04/f4de85eaf72ef1631dc6d7424045c0a749b757 +1 -0
- data/scenarios/git_repositories/project.git/objects/06/13fe277280cbcdb2856e1eefc70bdaff011b20 +0 -0
- data/scenarios/git_repositories/project.git/objects/06/7aca89b86265eee211387434c3e50f37ccf009 +0 -0
- data/scenarios/git_repositories/project.git/objects/09/445dacc4822722612d60833c9948219ecdd8f5 +0 -0
- data/scenarios/git_repositories/project.git/objects/11/c4ec64326de35462f4e79d0f4229bf8e26e0c5 +0 -0
- data/scenarios/git_repositories/project.git/objects/20/1c7641c2e42b0b904e5c1f793489d8b858e4da +2 -0
- data/scenarios/git_repositories/project.git/objects/23/979639da60d2d31e9744468df1c1221b101e64 +0 -0
- data/scenarios/git_repositories/project.git/objects/27/a3fff2c4c45ab5513a405f694c0a042cb5d417 +1 -0
- data/scenarios/git_repositories/project.git/objects/2c/0c33cfba8e1af15df88522c0db2b10a6a94138 +2 -0
- data/scenarios/git_repositories/project.git/objects/38/b574660305ecb5fec6b2daa7ee1e0dbf1b6003 +0 -0
- data/scenarios/git_repositories/project.git/objects/4a/57abb5e4e426cfc9101b3af22ac83ccbd8e2ad +0 -0
- data/scenarios/git_repositories/project.git/objects/4c/77ebdd985e57afe7988480720c5dc77ec525c9 +0 -0
- data/scenarios/git_repositories/project.git/objects/51/c94da6f1b8aa9d2346088d3d362475b60c7f32 +0 -0
- data/scenarios/git_repositories/project.git/objects/5b/a96acf9cc9b87babe37c032676f53bf1ba9ae7 +2 -0
- data/scenarios/git_repositories/project.git/objects/5d/f555601d60f1c2a84d2364af0ad640612c3ba5 +0 -0
- data/scenarios/git_repositories/project.git/objects/71/03b5ac94940d596c2160a5cfcd55ca4ccac41f +0 -0
- data/scenarios/git_repositories/project.git/objects/73/3fc331098b03523f414f3509b9ae6e637c6866 +0 -0
- data/scenarios/git_repositories/project.git/objects/80/26076649ceccbe96a6292f2432652f08483035 +0 -0
- data/scenarios/git_repositories/project.git/objects/86/d1ef0976be4567de562224e1b51fbf9820c53a +1 -0
- data/scenarios/git_repositories/project.git/objects/87/a9d8b09b3401d21b23d90253332d6b28b47db2 +0 -0
- data/scenarios/git_repositories/project.git/objects/8b/030ba688255c917d189ae3f87d7c5ccd226bc2 +0 -0
- data/scenarios/git_repositories/project.git/objects/95/c9d5ad9b1c90e4c805516783105fc2037dedeb +2 -0
- data/scenarios/git_repositories/project.git/objects/95/d82d043af35a80eabfd56c0d705abfa3488787 +2 -0
- data/scenarios/git_repositories/project.git/objects/96/0bf34bb0b46d0aeb0be87f688f4ef06a4b35e1 +0 -0
- data/scenarios/git_repositories/project.git/objects/a3/860106dc1d148c7831cd45ae38829b4ed47702 +2 -0
- data/scenarios/git_repositories/project.git/objects/a8/506d6439b71784a72ac72d284b2ad53088f573 +0 -0
- data/scenarios/git_repositories/project.git/objects/ad/22ea6c7563777936ecfbe50d8e2cf8120fd525 +0 -0
- data/scenarios/git_repositories/project.git/objects/ae/3900de54aff557c61c81146d00f9d38e55a265 +1 -0
- data/scenarios/git_repositories/project.git/objects/bf/5e3740d52b80abb0378b3f85f93a53b1294521 +1 -0
- data/scenarios/git_repositories/project.git/objects/bf/b59811cdbc069418dee14b171e6e7e979784b7 +0 -0
- data/scenarios/git_repositories/project.git/objects/cc/5ac0afb24e727d5de344cc26a425f4fb7fd17d +3 -0
- data/scenarios/git_repositories/project.git/objects/d1/091aa2dd76885108461110c639e6b33a297fce +0 -0
- data/scenarios/git_repositories/project.git/objects/d8/913f6650eb2b7bf2a633732d8452008ca23dcb +0 -0
- data/scenarios/git_repositories/project.git/objects/db/d1b9667f1b26b13331ac0c321dced8be1aeab0 +3 -0
- data/scenarios/git_repositories/project.git/objects/e4/3b9107e9b1908ce415025e64eb83a493d329b7 +0 -0
- data/scenarios/git_repositories/project.git/objects/ef/2a88894d5421920b9dfe67a9a4d8043830e62e +0 -0
- data/scenarios/git_repositories/project.git/objects/f4/0123a1ff20c65d8dc15a38a83222647908e6f7 +0 -0
- data/scenarios/git_repositories/project.git/objects/f5/0af315b75ca0b12c720dec6d916b76b968c319 +0 -0
- data/scenarios/git_repositories/project.git/objects/f6/0215709b7b23f3738e9cbaf634b1c86bbd376a +0 -0
- data/scenarios/git_repositories/project.git/refs/heads/bad_rakefile +1 -0
- data/scenarios/git_repositories/project.git/refs/heads/hook_with_changed +1 -0
- data/scenarios/git_repositories/project.git/refs/heads/master +1 -0
- data/scenarios/git_repositories/project.git/refs/heads/no_rake_hooks +1 -0
- data/scenarios/git_repositories/project.git/refs/heads/post_rake_tasks +1 -0
- data/scenarios/invalid/deploy.yml +1 -0
- data/scenarios/local/deploy.yml.erb +17 -0
- data/scenarios/remote/deploy.yml +119 -0
- data/scenarios/setup/vagrant/.gitignore +3 -0
- data/scenarios/setup/vagrant/Vagrantfile +10 -0
- data/scenarios/setup/vagrant/manifests/integration.pp +32 -0
- data/scenarios/setup/vagrant/pids/.gitignore +1 -0
- data/spec/.bacon +0 -0
- data/spec/init_spec.rb +9 -0
- data/spec/install_spec.rb +43 -0
- data/spec/integration/branch_switching_spec.rb +41 -0
- data/spec/integration/deployment_failures_spec.rb +106 -0
- data/spec/integration/helper_spec.rb +90 -0
- data/spec/integration/invalid_configuration_spec.rb +39 -0
- data/spec/integration/local_deployments_spec.rb +230 -0
- data/spec/integration/post_rake_tasks_spec.rb +226 -0
- data/spec/integration/post_scripts_spec.rb +246 -0
- data/spec/integration/remote_deployments_spec.rb +166 -0
- data/spec/integration/staleness_checks_spec.rb +72 -0
- data/spec/spec_helper.rb +117 -0
- data/spec/wd_command_spec.rb +986 -0
- data/spec/wd_role_command_spec.rb +49 -0
- data/spec/whiskey_disk/config/filter_spec.rb +77 -0
- data/spec/whiskey_disk/config/filters/add_environment_name_filter_spec.rb +20 -0
- data/spec/whiskey_disk/config/filters/add_project_name_filter_spec.rb +19 -0
- data/spec/whiskey_disk/config/filters/check_for_duplicate_domains_filter_spec.rb +29 -0
- data/spec/whiskey_disk/config/filters/convert_role_strings_to_list_filter_spec.rb +48 -0
- data/spec/whiskey_disk/config/filters/default_config_target_filter_spec.rb +19 -0
- data/spec/whiskey_disk/config/filters/default_domain_filter_spec.rb +18 -0
- data/spec/whiskey_disk/config/filters/drop_empty_domain_roles_filter_spec.rb +60 -0
- data/spec/whiskey_disk/config/filters/environment_scope_filter_spec.rb +32 -0
- data/spec/whiskey_disk/config/filters/hashify_domain_entries_filter_spec.rb +41 -0
- data/spec/whiskey_disk/config/filters/localize_domains_filter_spec.rb +30 -0
- data/spec/whiskey_disk/config/filters/normalize_ssh_options_filter_spec.rb +56 -0
- data/spec/whiskey_disk/config/filters/project_scope_filter_spec.rb +75 -0
- data/spec/whiskey_disk/config/filters/select_project_and_environment_filter_spec.rb +30 -0
- data/spec/whiskey_disk/config/filters/stringify_hash_keys_filter_spec.rb +40 -0
- data/spec/whiskey_disk/config_spec.rb +754 -0
- data/spec/whiskey_disk/helpers_spec.rb +443 -0
- data/spec/whiskey_disk/rake_spec.rb +261 -0
- data/spec/whiskey_disk_spec.rb +1224 -0
- data/tasks/deploy.rake +2 -0
- data/whisk_deploy.gemspec +215 -0
- metadata +241 -0
|
@@ -0,0 +1,226 @@
|
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper.rb'))
|
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'whiskey_disk'))
|
|
3
|
+
|
|
4
|
+
integration_spec do
|
|
5
|
+
describe 'when configured for a remote deployment' do
|
|
6
|
+
before do
|
|
7
|
+
setup_deployment_area
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe 'with no Rakefile in the project' do
|
|
11
|
+
before do
|
|
12
|
+
@config = scenario_config('remote/deploy.yml')
|
|
13
|
+
@args = "--path=#{@config} --to=project:no_rakefile"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe 'performing a setup' do
|
|
17
|
+
it 'performs a checkout of the repository to the target path' do
|
|
18
|
+
run_setup(@args)
|
|
19
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'does not run a deploy:post_setup rake task' do
|
|
23
|
+
run_setup(@args)
|
|
24
|
+
File.read(integration_log).should.not =~ /Running a post_setup task/
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'reports the remote setup as successful' do
|
|
28
|
+
run_setup(@args)
|
|
29
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'exits with a true status' do
|
|
33
|
+
run_setup(@args).should == true
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'performing a deployment' do
|
|
38
|
+
before do
|
|
39
|
+
checkout_repo('project')
|
|
40
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'updates the checkout of the repository on the target path' do
|
|
44
|
+
run_deploy(@args)
|
|
45
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'does not run a deploy:post_deploy rake task' do
|
|
49
|
+
run_deploy(@args)
|
|
50
|
+
File.read(integration_log).should.not =~ /Running a post_deploy task/
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'reports the remote deployment as successful' do
|
|
54
|
+
run_deploy(@args)
|
|
55
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'exits with a true status' do
|
|
59
|
+
run_deploy(@args).should == true
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe 'with an unparseable Rakefile in the project' do
|
|
65
|
+
before do
|
|
66
|
+
@config = scenario_config('remote/deploy.yml')
|
|
67
|
+
@args = "--path=#{@config} --to=project:bad_rakefile"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe 'performing a setup' do
|
|
71
|
+
it 'performs a checkout of the repository to the target path' do
|
|
72
|
+
run_setup(@args)
|
|
73
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it 'does not run a deploy:post_setup rake task' do
|
|
77
|
+
run_setup(@args)
|
|
78
|
+
File.read(integration_log).should.not =~ /Running a post_setup task/
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'reports the remote setup as a failure' do
|
|
82
|
+
run_setup(@args)
|
|
83
|
+
File.read(integration_log).should =~ /vagrant => failed/
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'exits with a false status' do
|
|
87
|
+
run_setup(@args).should == false
|
|
88
|
+
end
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
describe 'performing a deployment' do
|
|
92
|
+
before do
|
|
93
|
+
checkout_repo('project', 'bad_rakefile')
|
|
94
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
95
|
+
end
|
|
96
|
+
|
|
97
|
+
it 'updates the checkout of the repository on the target path' do
|
|
98
|
+
run_deploy(@args)
|
|
99
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'does not run a deploy:post_deploy rake task' do
|
|
103
|
+
run_deploy(@args)
|
|
104
|
+
File.read(integration_log).should.not =~ /Running a post_deploy task/
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'reports the remote deployment as a failure' do
|
|
108
|
+
run_deploy(@args)
|
|
109
|
+
File.read(integration_log).should =~ /vagrant => failed/
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'exits with a false status' do
|
|
113
|
+
run_deploy(@args).should == false
|
|
114
|
+
end
|
|
115
|
+
end
|
|
116
|
+
end
|
|
117
|
+
|
|
118
|
+
describe 'with a valid Rakefile in the project with no post_setup or post_deploy hooks' do
|
|
119
|
+
before do
|
|
120
|
+
@config = scenario_config('remote/deploy.yml')
|
|
121
|
+
@args = "--path=#{@config} --to=project:no_rake_hooks"
|
|
122
|
+
end
|
|
123
|
+
|
|
124
|
+
describe 'and doing a setup' do
|
|
125
|
+
it 'performs a checkout of the repository to the target path' do
|
|
126
|
+
run_setup(@args)
|
|
127
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
128
|
+
end
|
|
129
|
+
|
|
130
|
+
it 'does not run a deploy:post_setup rake task' do
|
|
131
|
+
run_setup(@args)
|
|
132
|
+
File.read(integration_log).should.not =~ /Running a post_setup task/
|
|
133
|
+
end
|
|
134
|
+
|
|
135
|
+
it 'reports the remote setup as successful' do
|
|
136
|
+
run_setup(@args)
|
|
137
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
it 'exits with a true status' do
|
|
141
|
+
run_setup(@args).should == true
|
|
142
|
+
end
|
|
143
|
+
end
|
|
144
|
+
|
|
145
|
+
describe 'and doing a deploy' do
|
|
146
|
+
before do
|
|
147
|
+
checkout_repo('project', 'no_rake_hooks')
|
|
148
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it 'updates the checkout of the repository on the target path' do
|
|
152
|
+
run_deploy(@args)
|
|
153
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it 'does not run a deploy:post_deploy rake task' do
|
|
157
|
+
run_deploy(@args)
|
|
158
|
+
File.read(integration_log).should.not =~ /Running a post_deploy task/
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
it 'reports the remote deployment as successful' do
|
|
162
|
+
run_deploy(@args)
|
|
163
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it 'exits with a true status' do
|
|
167
|
+
run_deploy(@args).should == true
|
|
168
|
+
end
|
|
169
|
+
end
|
|
170
|
+
end
|
|
171
|
+
|
|
172
|
+
describe 'with a valid Rakefile in the project with post_setup and post_deploy hooks' do
|
|
173
|
+
before do
|
|
174
|
+
@config = scenario_config('remote/deploy.yml')
|
|
175
|
+
@args = "--path=#{@config} --to=project:with_rake_hooks"
|
|
176
|
+
end
|
|
177
|
+
|
|
178
|
+
describe 'and doing a setup' do
|
|
179
|
+
it 'performs a checkout of the repository to the target path' do
|
|
180
|
+
run_setup(@args)
|
|
181
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
182
|
+
end
|
|
183
|
+
|
|
184
|
+
it 'runs a deploy:post_setup rake task' do
|
|
185
|
+
run_setup(@args)
|
|
186
|
+
File.read(integration_log).should =~ /Running a post_setup task/
|
|
187
|
+
end
|
|
188
|
+
|
|
189
|
+
it 'reports the remote setup as successful' do
|
|
190
|
+
run_setup(@args)
|
|
191
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
192
|
+
end
|
|
193
|
+
|
|
194
|
+
it 'exits with a true status' do
|
|
195
|
+
run_setup(@args).should == true
|
|
196
|
+
end
|
|
197
|
+
end
|
|
198
|
+
|
|
199
|
+
describe 'and doing a deploy' do
|
|
200
|
+
before do
|
|
201
|
+
checkout_repo('project', 'post_rake_tasks')
|
|
202
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
203
|
+
end
|
|
204
|
+
|
|
205
|
+
it 'updates the checkout of the repository on the target path' do
|
|
206
|
+
run_deploy(@args)
|
|
207
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
208
|
+
end
|
|
209
|
+
|
|
210
|
+
it 'runs a deploy:post_deploy rake task' do
|
|
211
|
+
run_deploy(@args)
|
|
212
|
+
File.read(integration_log).should =~ /Running a post_deploy task/
|
|
213
|
+
end
|
|
214
|
+
|
|
215
|
+
it 'reports the remote deployment as successful' do
|
|
216
|
+
run_deploy(@args)
|
|
217
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
218
|
+
end
|
|
219
|
+
|
|
220
|
+
it 'exits with a true status' do
|
|
221
|
+
run_deploy(@args).should == true
|
|
222
|
+
end
|
|
223
|
+
end
|
|
224
|
+
end
|
|
225
|
+
end
|
|
226
|
+
end
|
|
@@ -0,0 +1,246 @@
|
|
|
1
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', 'spec_helper.rb'))
|
|
2
|
+
require File.expand_path(File.join(File.dirname(__FILE__), '..', '..', 'lib', 'whiskey_disk'))
|
|
3
|
+
|
|
4
|
+
integration_spec do
|
|
5
|
+
describe 'when configured for a remote deployment' do
|
|
6
|
+
before do
|
|
7
|
+
setup_deployment_area
|
|
8
|
+
end
|
|
9
|
+
|
|
10
|
+
describe 'with no post_* scripts defined' do
|
|
11
|
+
before do
|
|
12
|
+
@config = scenario_config('remote/deploy.yml')
|
|
13
|
+
@args = "--path=#{@config} --to=project:no_post_scripts"
|
|
14
|
+
end
|
|
15
|
+
|
|
16
|
+
describe 'performing a setup' do
|
|
17
|
+
it 'performs a checkout of the repository to the target path' do
|
|
18
|
+
run_setup(@args)
|
|
19
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
20
|
+
end
|
|
21
|
+
|
|
22
|
+
it 'does not run a post_setup script' do
|
|
23
|
+
run_setup(@args)
|
|
24
|
+
File.read(integration_log).should.not =~ /^Running post script/
|
|
25
|
+
end
|
|
26
|
+
|
|
27
|
+
it 'reports the remote setup as successful' do
|
|
28
|
+
run_setup(@args)
|
|
29
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
30
|
+
end
|
|
31
|
+
|
|
32
|
+
it 'exits with a true status' do
|
|
33
|
+
run_setup(@args).should == true
|
|
34
|
+
end
|
|
35
|
+
end
|
|
36
|
+
|
|
37
|
+
describe 'performing a deployment' do
|
|
38
|
+
before do
|
|
39
|
+
checkout_repo('project')
|
|
40
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
41
|
+
end
|
|
42
|
+
|
|
43
|
+
it 'updates the checkout of the repository on the target path' do
|
|
44
|
+
run_deploy(@args)
|
|
45
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
46
|
+
end
|
|
47
|
+
|
|
48
|
+
it 'does not run a post_deploy script' do
|
|
49
|
+
run_deploy(@args)
|
|
50
|
+
File.read(integration_log).should.not =~ /^Running post script/
|
|
51
|
+
end
|
|
52
|
+
|
|
53
|
+
it 'reports the remote deployment as successful' do
|
|
54
|
+
run_deploy(@args)
|
|
55
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
56
|
+
end
|
|
57
|
+
|
|
58
|
+
it 'exits with a true status' do
|
|
59
|
+
run_deploy(@args).should == true
|
|
60
|
+
end
|
|
61
|
+
end
|
|
62
|
+
end
|
|
63
|
+
|
|
64
|
+
describe 'with missing post_* scripts defined' do
|
|
65
|
+
before do
|
|
66
|
+
@config = scenario_config('remote/deploy.yml')
|
|
67
|
+
@args = "--path=#{@config} --to=project:missing_post_scripts"
|
|
68
|
+
end
|
|
69
|
+
|
|
70
|
+
describe 'performing a setup' do
|
|
71
|
+
it 'performs a checkout of the repository to the target path' do
|
|
72
|
+
run_setup(@args)
|
|
73
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
74
|
+
end
|
|
75
|
+
|
|
76
|
+
it 'attempts to run a post_setup script' do
|
|
77
|
+
run_setup(@args)
|
|
78
|
+
File.read(integration_log).should =~ /^Running post script/
|
|
79
|
+
end
|
|
80
|
+
|
|
81
|
+
it 'passes environment variable settings to the post_setup script' do
|
|
82
|
+
run_setup(@args)
|
|
83
|
+
File.read(integration_log).should =~ /FOO=BAR/
|
|
84
|
+
end
|
|
85
|
+
|
|
86
|
+
it 'reports the remote setup as a failure' do
|
|
87
|
+
run_setup(@args)
|
|
88
|
+
File.read(integration_log).should =~ /vagrant => failed/
|
|
89
|
+
end
|
|
90
|
+
|
|
91
|
+
it 'exits with a false status' do
|
|
92
|
+
run_setup(@args).should == false
|
|
93
|
+
end
|
|
94
|
+
end
|
|
95
|
+
|
|
96
|
+
describe 'performing a deployment' do
|
|
97
|
+
before do
|
|
98
|
+
checkout_repo('project')
|
|
99
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
100
|
+
end
|
|
101
|
+
|
|
102
|
+
it 'updates the checkout of the repository on the target path' do
|
|
103
|
+
run_deploy(@args)
|
|
104
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
105
|
+
end
|
|
106
|
+
|
|
107
|
+
it 'attempts to run a post_deploy script' do
|
|
108
|
+
run_deploy(@args)
|
|
109
|
+
File.read(integration_log).should =~ /^Running post script/
|
|
110
|
+
end
|
|
111
|
+
|
|
112
|
+
it 'passes environment variable settings to the post_deploy script' do
|
|
113
|
+
run_deploy(@args)
|
|
114
|
+
File.read(integration_log).should =~ /FOO='BAR'/
|
|
115
|
+
end
|
|
116
|
+
|
|
117
|
+
it 'reports the remote deployment as a failure' do
|
|
118
|
+
run_deploy(@args)
|
|
119
|
+
File.read(integration_log).should =~ /vagrant => failed/
|
|
120
|
+
end
|
|
121
|
+
|
|
122
|
+
it 'exits with a false status' do
|
|
123
|
+
run_deploy(@args).should == false
|
|
124
|
+
end
|
|
125
|
+
end
|
|
126
|
+
end
|
|
127
|
+
|
|
128
|
+
describe 'with post_* scripts specified and present' do
|
|
129
|
+
before do
|
|
130
|
+
@config = scenario_config('remote/deploy.yml')
|
|
131
|
+
@args = "--path=#{@config} --to=project:with_post_scripts"
|
|
132
|
+
end
|
|
133
|
+
|
|
134
|
+
describe 'and doing a setup' do
|
|
135
|
+
it 'performs a checkout of the repository to the target path' do
|
|
136
|
+
run_setup(@args)
|
|
137
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
138
|
+
end
|
|
139
|
+
|
|
140
|
+
describe 'and the post_setup script is successful' do
|
|
141
|
+
it 'runs the post_setup script' do
|
|
142
|
+
run_setup(@args)
|
|
143
|
+
File.read(integration_log).should =~ /^Running the post_setup script/
|
|
144
|
+
end
|
|
145
|
+
|
|
146
|
+
it 'passes environment variable settings to the post_setup script' do
|
|
147
|
+
run_setup(@args)
|
|
148
|
+
File.read(integration_log).should =~ /FOO=BAR/
|
|
149
|
+
end
|
|
150
|
+
|
|
151
|
+
it 'reports the remote setup as successful' do
|
|
152
|
+
run_setup(@args)
|
|
153
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
154
|
+
end
|
|
155
|
+
|
|
156
|
+
it 'exits with a true status' do
|
|
157
|
+
run_setup(@args).should == true
|
|
158
|
+
end
|
|
159
|
+
end
|
|
160
|
+
|
|
161
|
+
describe 'and the post_setup script fails' do
|
|
162
|
+
before do
|
|
163
|
+
@args = "--path=#{@config} --to=project:with_failing_post_scripts"
|
|
164
|
+
end
|
|
165
|
+
|
|
166
|
+
it 'runs the post_setup script' do
|
|
167
|
+
run_setup(@args)
|
|
168
|
+
File.read(integration_log).should =~ /^Running the post_setup script/
|
|
169
|
+
end
|
|
170
|
+
|
|
171
|
+
it 'passes environment variable settings to the post_setup script' do
|
|
172
|
+
run_setup(@args)
|
|
173
|
+
File.read(integration_log).should =~ /FOO=BAR/
|
|
174
|
+
end
|
|
175
|
+
|
|
176
|
+
it 'reports the remote setup as a failure' do
|
|
177
|
+
run_setup(@args)
|
|
178
|
+
File.read(integration_log).should =~ /vagrant => failed/
|
|
179
|
+
end
|
|
180
|
+
|
|
181
|
+
it 'exits with a false status' do
|
|
182
|
+
run_setup(@args).should == false
|
|
183
|
+
end
|
|
184
|
+
end
|
|
185
|
+
end
|
|
186
|
+
|
|
187
|
+
describe 'and doing a deploy' do
|
|
188
|
+
before do
|
|
189
|
+
checkout_repo('project')
|
|
190
|
+
File.unlink(deployed_file('project/README')) # modify the deployed checkout
|
|
191
|
+
end
|
|
192
|
+
|
|
193
|
+
it 'updates the checkout of the repository on the target path' do
|
|
194
|
+
run_deploy(@args)
|
|
195
|
+
File.exists?(deployed_file('project/README')).should == true
|
|
196
|
+
end
|
|
197
|
+
|
|
198
|
+
describe 'and the post_deploy script is successful' do
|
|
199
|
+
it 'runs the post_deploy script' do
|
|
200
|
+
run_deploy(@args)
|
|
201
|
+
File.read(integration_log).should =~ /^Running the post_deploy script/
|
|
202
|
+
end
|
|
203
|
+
|
|
204
|
+
it 'passes environment variable settings to the post_deploy script' do
|
|
205
|
+
run_deploy(@args)
|
|
206
|
+
File.read(integration_log).should =~ /FOO='BAR'/
|
|
207
|
+
end
|
|
208
|
+
|
|
209
|
+
it 'reports the remote deployment as successful' do
|
|
210
|
+
run_deploy(@args)
|
|
211
|
+
File.read(integration_log).should =~ /vagrant => succeeded/
|
|
212
|
+
end
|
|
213
|
+
|
|
214
|
+
it 'exits with a true status' do
|
|
215
|
+
run_deploy(@args).should == true
|
|
216
|
+
end
|
|
217
|
+
end
|
|
218
|
+
|
|
219
|
+
describe 'and the post_deploy script fails' do
|
|
220
|
+
before do
|
|
221
|
+
@args = "--path=#{@config} --to=project:with_failing_post_scripts"
|
|
222
|
+
end
|
|
223
|
+
|
|
224
|
+
it 'runs the post_deploy script' do
|
|
225
|
+
run_deploy(@args)
|
|
226
|
+
File.read(integration_log).should =~ /^Running the post_deploy script/
|
|
227
|
+
end
|
|
228
|
+
|
|
229
|
+
it 'passes environment variable settings to the post_deploy script' do
|
|
230
|
+
run_deploy(@args)
|
|
231
|
+
File.read(integration_log).should =~ /FOO='BAR'/
|
|
232
|
+
end
|
|
233
|
+
|
|
234
|
+
it 'reports the remote deployment as a failure' do
|
|
235
|
+
run_deploy(@args)
|
|
236
|
+
File.read(integration_log).should =~ /vagrant => failed/
|
|
237
|
+
end
|
|
238
|
+
|
|
239
|
+
it 'exits with a false status' do
|
|
240
|
+
run_deploy(@args).should == false
|
|
241
|
+
end
|
|
242
|
+
end
|
|
243
|
+
end
|
|
244
|
+
end
|
|
245
|
+
end
|
|
246
|
+
end
|