capistrano-didi 0.2.3 → 0.3.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- data/README.rdoc +23 -0
- data/VERSION +1 -1
- data/capistrano-didi.gemspec +2 -2
- data/lib/didi/recipes/didi.rb +134 -35
- metadata +4 -4
data/README.rdoc
CHANGED
@@ -17,3 +17,26 @@ Description goes here.
|
|
17
17
|
Copyright (c) 2011 Koen Van Winckel. See LICENSE.txt for
|
18
18
|
further details.
|
19
19
|
|
20
|
+
|
21
|
+
|
22
|
+
= TODO
|
23
|
+
|
24
|
+
* set :site, "apache vhost here" => not clear what this is
|
25
|
+
* set :sitesubdir, "default" => use :site here ?
|
26
|
+
* create default + multisite with :site
|
27
|
+
* sensible default: adminpass => default is admin admin
|
28
|
+
* server app, web, db => hide this db depends on settings.php so specified else where
|
29
|
+
* set :scm, "subversion" => document options => with svn url needs to be location of cap file
|
30
|
+
* set :baseline => should not be mandatory
|
31
|
+
* set :sitemail => should not be mandatory
|
32
|
+
* stages => reserverd names (eg. test)
|
33
|
+
* set :deploy_to => needs to be absolute (+what with trailing slash?)
|
34
|
+
* requirements: drush
|
35
|
+
* deploy:check => uitbreiden met control of repostioryu (svn / git) bereikbaar is) see "depend"
|
36
|
+
* deploy:check => ook mysql connectie controleren
|
37
|
+
* svn: problem with acceptance voor certificate
|
38
|
+
* scm_username, scm_password
|
39
|
+
* drush:si => ook feature revert all doen
|
40
|
+
* apache vhost opgeven en gesymlinked word
|
41
|
+
* railslessdeploy: run_locally
|
42
|
+
* robots.txt disallow all
|
data/VERSION
CHANGED
@@ -1 +1 @@
|
|
1
|
-
0.
|
1
|
+
0.3.0
|
data/capistrano-didi.gemspec
CHANGED
@@ -5,11 +5,11 @@
|
|
5
5
|
|
6
6
|
Gem::Specification.new do |s|
|
7
7
|
s.name = "capistrano-didi"
|
8
|
-
s.version = "0.
|
8
|
+
s.version = "0.3.0"
|
9
9
|
|
10
10
|
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
11
|
s.authors = ["Koen Van Winckel"]
|
12
|
-
s.date = "2011-11-
|
12
|
+
s.date = "2011-11-24"
|
13
13
|
s.description = "didi is a collection of recipes for capistrano that allow drupal to be deployed, tested and used in a CI environment"
|
14
14
|
s.email = "koenvw@gmail.com"
|
15
15
|
s.executables = ["didify", "didi"]
|
data/lib/didi/recipes/didi.rb
CHANGED
@@ -1,13 +1,15 @@
|
|
1
1
|
Capistrano::Configuration.instance.load do
|
2
|
+
|
3
|
+
require 'FileUtils'
|
2
4
|
|
3
|
-
#
|
4
|
-
#
|
5
|
-
#
|
5
|
+
# =========================================================================
|
6
|
+
# These variables MUST be set in the client capfiles. If they are not set,
|
7
|
+
# the deploy will fail with an error.
|
8
|
+
# =========================================================================
|
6
9
|
_cset(:db_type) { abort "Please specify the Drupal database type (:db_type)." }
|
7
10
|
_cset(:db_name) { abort "Please specify the Drupal database name (:db_name)." }
|
8
11
|
_cset(:db_username) { abort "Please specify the Drupal database username (:db_username)." }
|
9
12
|
_cset(:db_password) { abort "Please specify the Drupal database password (:db_password)." }
|
10
|
-
_cset(:drupal_version) { abort "Please specify the Drupal version (6 or 7) (:drupal_version)." }
|
11
13
|
|
12
14
|
_cset(:profile) { abort "Please specify the Drupal install profile (:profile)." }
|
13
15
|
_cset(:site) { abort "Please specify the Drupal site (:site)." }
|
@@ -17,32 +19,33 @@ _cset(:sitesubdir) { abort "Please specify the Drupal site subdir (:sitemai
|
|
17
19
|
_cset(:baseline) { abort "Please specify the Baseline feature (:baseline)." }
|
18
20
|
|
19
21
|
|
20
|
-
#
|
22
|
+
# =========================================================================
|
23
|
+
# These variables may be set in the client capfile if their default values
|
24
|
+
# are not sufficient.
|
25
|
+
# =========================================================================
|
21
26
|
set :scm, :git
|
22
27
|
set :deploy_via, :remote_cache
|
23
28
|
set :drupal_version, '7'
|
24
|
-
# Only bother to keep the last five releases
|
25
29
|
set :keep_releases, 5
|
26
30
|
set :use_sudo, false
|
27
31
|
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
|
32
|
+
set :domain, 'default'
|
33
|
+
set :db_host, 'localhost'
|
34
|
+
set :drupal_path, 'drupal'
|
35
|
+
set :srv_usr, 'www-data'
|
36
|
+
|
32
37
|
ssh_options[:forward_agent] = true
|
33
|
-
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
#
|
38
|
-
|
39
|
-
#
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
set :dbbackups, 'db_backups'
|
45
|
-
set :shared_children, [domain, File.join(domain, files)]
|
38
|
+
#ssh_options[:verbose] = :debug #FIXME
|
39
|
+
|
40
|
+
# =========================================================================
|
41
|
+
# These variables should NOT be changed unless you are very confident in
|
42
|
+
# what you are doing. Make sure you understand all the implications of your
|
43
|
+
# changes if you do decide to muck with these!
|
44
|
+
# =========================================================================
|
45
|
+
_cset :settings, 'settings.php'
|
46
|
+
_cset :files, 'files'
|
47
|
+
_cset :dbbackups, 'db_backups'
|
48
|
+
_cset :shared_children, [domain, File.join(domain, files)]
|
46
49
|
|
47
50
|
_cset(:shared_settings) { File.join(shared_path, domain, settings) }
|
48
51
|
_cset(:shared_files) { File.join(shared_path, domain, files) }
|
@@ -70,21 +73,26 @@ namespace :deploy do
|
|
70
73
|
DESC
|
71
74
|
task :default do
|
72
75
|
update
|
76
|
+
manage.dbdump_previous
|
73
77
|
cleanup
|
74
78
|
end
|
75
|
-
after "deploy
|
79
|
+
after "deploy", "drush:update"
|
76
80
|
|
77
81
|
desc "Setup a drupal site from scratch"
|
78
82
|
task :cold do
|
79
|
-
|
80
|
-
|
81
|
-
|
83
|
+
transaction do
|
84
|
+
setup
|
85
|
+
update_code
|
86
|
+
symlink
|
87
|
+
end
|
82
88
|
end
|
83
89
|
after "deploy:cold", "drush:si"
|
84
90
|
|
85
91
|
desc "Deploys latest code and rebuild the database"
|
86
92
|
task :rebuild do
|
87
|
-
|
93
|
+
update_code
|
94
|
+
symlink
|
95
|
+
manage.dbdump_previous
|
88
96
|
end
|
89
97
|
after "deploy:rebuild", "drush:si"
|
90
98
|
|
@@ -109,7 +117,7 @@ namespace :deploy do
|
|
109
117
|
put configuration, shared_settings
|
110
118
|
end
|
111
119
|
|
112
|
-
desc "Rebuild files and settings symlinks"
|
120
|
+
desc "[internal] Rebuild files and settings symlinks"
|
113
121
|
task :finalize_update, :except => { :no_release => true } do
|
114
122
|
on_rollback do
|
115
123
|
if previous_release
|
@@ -136,6 +144,78 @@ namespace :deploy do
|
|
136
144
|
end
|
137
145
|
end
|
138
146
|
|
147
|
+
desc <<-DESC
|
148
|
+
Removes old releases and corresponding DB backups.
|
149
|
+
DESC
|
150
|
+
task :cleanup, :except => { :no_release => true } do
|
151
|
+
count = fetch(:keep_releases, 5).to_i
|
152
|
+
if count >= releases.length
|
153
|
+
logger.important "No old releases to clean up"
|
154
|
+
else
|
155
|
+
logger.info "keeping #{count} of #{releases.length} deployed releases"
|
156
|
+
old_releases = (releases - releases.last(count))
|
157
|
+
directories = old_releases.map { |release| File.join(releases_path, release) }.join(" ")
|
158
|
+
databases = old_releases.map { |release| File.join(dbbackups_path, "#{release}.sql") }.join(" ")
|
159
|
+
|
160
|
+
run "rm -rf #{directories} #{databases}"
|
161
|
+
end
|
162
|
+
end
|
163
|
+
|
164
|
+
namespace :rollback do
|
165
|
+
|
166
|
+
desc <<-DESC
|
167
|
+
[internal] Removes the most recently deployed release.
|
168
|
+
This is called by the rollback sequence, and should rarely
|
169
|
+
(if ever) need to be called directly.
|
170
|
+
DESC
|
171
|
+
task :cleanup, :except => { :no_release => true } do
|
172
|
+
# chmod 777 #{release_settings} #{release_files} &&
|
173
|
+
run "if [ `readlink #{current_path}` != #{current_release} ]; then rm -rf #{current_release}; fi"
|
174
|
+
end
|
175
|
+
|
176
|
+
desc <<-DESC
|
177
|
+
[internal] Points the current, files, and settings symlinks at the previous revision.
|
178
|
+
DESC
|
179
|
+
task :revision, :except => { :no_release => true } do
|
180
|
+
if previous_release
|
181
|
+
run <<-CMD
|
182
|
+
rm #{current_path};
|
183
|
+
ln -s #{previous_release} #{current_path};
|
184
|
+
ln -nfs #{shared_files} #{previous_release_files};
|
185
|
+
ln -nfs #{shared_settings} #{previous_release_settings}
|
186
|
+
CMD
|
187
|
+
else
|
188
|
+
abort "could not rollback the code because there is no prior release"
|
189
|
+
end
|
190
|
+
end
|
191
|
+
|
192
|
+
|
193
|
+
desc <<-DESC
|
194
|
+
[internal] If a database backup from the previous release is found, dump the current
|
195
|
+
database and import the backup. This task should NEVER be called standalone.
|
196
|
+
DESC
|
197
|
+
task :db_rollback, :except => { :no_release => true } do
|
198
|
+
if previous_release
|
199
|
+
logger.info "Dumping current database and importing previous one (If one is found)."
|
200
|
+
previous_db = File.join(dbbackups_path, "#{releases[-2]}.sql")
|
201
|
+
import_cmd = "cd #{previous_release}/#{drupal_path} && drush sql-drop -y && drush sql-cli < #{previous_db} && rm #{previous_db}"
|
202
|
+
run "if [ -e #{previous_db} ]; then #{import_cmd}; fi"
|
203
|
+
else
|
204
|
+
abort "could not rollback the database because there is no prior release db backups"
|
205
|
+
end
|
206
|
+
end
|
207
|
+
|
208
|
+
desc <<-DESC
|
209
|
+
go back to the previous release (code and database)
|
210
|
+
DESC
|
211
|
+
task :default do
|
212
|
+
revision
|
213
|
+
db_rollback
|
214
|
+
cleanup
|
215
|
+
end
|
216
|
+
|
217
|
+
end
|
218
|
+
|
139
219
|
end
|
140
220
|
|
141
221
|
# =========================
|
@@ -148,7 +228,7 @@ namespace :drush do
|
|
148
228
|
run "cd #{current_path}/#{drupal_path} && drush cache-clear all"
|
149
229
|
end
|
150
230
|
|
151
|
-
desc "Revert all enabled feature
|
231
|
+
desc "Revert all enabled feature modules on your site"
|
152
232
|
task :fra do
|
153
233
|
run "cd #{current_path}/#{drupal_path} && drush features-revert-all -y"
|
154
234
|
end
|
@@ -160,12 +240,12 @@ namespace :drush do
|
|
160
240
|
bl
|
161
241
|
end
|
162
242
|
|
163
|
-
desc "Enable the baseline feature"
|
243
|
+
desc "[internal] Enable the baseline feature"
|
164
244
|
task :bl do
|
165
245
|
run "cd #{current_path}/#{drupal_path} && drush pm-enable #{baseline} -y"
|
166
246
|
cc
|
167
247
|
end
|
168
|
-
desc "Enable the simpletest feature"
|
248
|
+
desc "[internal] Enable the simpletest feature"
|
169
249
|
task :enst do
|
170
250
|
run "cd #{current_path}/#{drupal_path} && drush pm-enable simpletest -y"
|
171
251
|
cc
|
@@ -178,12 +258,11 @@ namespace :drush do
|
|
178
258
|
|
179
259
|
desc "Update via drush, runs fra, updb and cc"
|
180
260
|
task :update do
|
181
|
-
fra
|
182
261
|
updb
|
262
|
+
fra
|
183
263
|
cc
|
184
264
|
end
|
185
265
|
|
186
|
-
|
187
266
|
end
|
188
267
|
|
189
268
|
# =========================
|
@@ -221,7 +300,7 @@ namespace :tests do
|
|
221
300
|
test_files.map! {|f| f.sub!(drupal_path + "/","")}
|
222
301
|
if test_files.any?
|
223
302
|
test_files.each do |test_file|
|
224
|
-
run "cd #{current_path}/#{drupal_path} && php scripts/run-tests.sh --url http://#{site} --xml '../build/simpletest' --file '#{test_file}'"
|
303
|
+
run "cd #{current_path}/#{drupal_path} && php scripts/run-tests.sh --url http://#{site} --xml '../build/simpletest' --file '#{test_file}'" unless test_file.include?('/contrib/')
|
225
304
|
end
|
226
305
|
end
|
227
306
|
run "cd #{current_path}/build && tar czf simpletest.tgz simpletest"
|
@@ -233,6 +312,26 @@ namespace :tests do
|
|
233
312
|
|
234
313
|
end
|
235
314
|
|
315
|
+
# =========================
|
316
|
+
# Manage methods
|
317
|
+
# =========================
|
318
|
+
|
319
|
+
namespace :manage do
|
320
|
+
|
321
|
+
task :block_robots do
|
322
|
+
put "User-agent: *\nDisallow: /", "#{current_path}/#{drupal_path}/robots.txt"
|
323
|
+
end
|
324
|
+
|
325
|
+
task :dbdump_previous do
|
326
|
+
#Backup the previous release's database
|
327
|
+
if previous_release
|
328
|
+
run "cd #{current_path}/#{drupal_path} && drush sql-dump > #{ File.join(dbbackups_path, "#{releases[-2]}.sql") }"
|
329
|
+
end
|
330
|
+
end
|
331
|
+
|
332
|
+
end
|
333
|
+
|
334
|
+
|
236
335
|
# =========================
|
237
336
|
# Helper methods
|
238
337
|
# =========================
|
metadata
CHANGED
@@ -1,13 +1,13 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-didi
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
hash:
|
4
|
+
hash: 19
|
5
5
|
prerelease:
|
6
6
|
segments:
|
7
7
|
- 0
|
8
|
-
- 2
|
9
8
|
- 3
|
10
|
-
|
9
|
+
- 0
|
10
|
+
version: 0.3.0
|
11
11
|
platform: ruby
|
12
12
|
authors:
|
13
13
|
- Koen Van Winckel
|
@@ -15,7 +15,7 @@ autorequire:
|
|
15
15
|
bindir: bin
|
16
16
|
cert_chain: []
|
17
17
|
|
18
|
-
date: 2011-11-
|
18
|
+
date: 2011-11-24 00:00:00 Z
|
19
19
|
dependencies:
|
20
20
|
- !ruby/object:Gem::Dependency
|
21
21
|
requirement: &id001 !ruby/object:Gem::Requirement
|