capistrano-drupal 0.0.9
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/.gitignore +2 -0
- data/README.markdown +22 -0
- data/Rakefile +13 -0
- data/VERSION +1 -0
- data/capistrano-drupal.gemspec +42 -0
- data/lib/capistrano-drupal.rb +132 -0
- metadata +72 -0
data/.gitignore
ADDED
data/README.markdown
ADDED
@@ -0,0 +1,22 @@
|
|
1
|
+
# Capistrano Drupal
|
2
|
+
|
3
|
+
This gem provides a number of tasks which are useful for deploying Drupal projects.
|
4
|
+
|
5
|
+
Credit goes to railsless-deploy for many ideas here.
|
6
|
+
|
7
|
+
## Installation
|
8
|
+
|
9
|
+
# gem install capistrano-drupal
|
10
|
+
|
11
|
+
## Usage
|
12
|
+
|
13
|
+
Open your application's `Capfile` and make it begin like this:
|
14
|
+
|
15
|
+
require 'rubygems'
|
16
|
+
require 'railsless-deploy'
|
17
|
+
require 'capistrano-drupal
|
18
|
+
load 'config/deploy'
|
19
|
+
|
20
|
+
You should then be able to proceed as you would usually, you may want to familiarise yourself with the truncated list of tasks, you can get a full list with:
|
21
|
+
|
22
|
+
$ cap -T
|
data/Rakefile
ADDED
@@ -0,0 +1,13 @@
|
|
1
|
+
begin
|
2
|
+
require 'jeweler'
|
3
|
+
Jeweler::Tasks.new do |gemspec|
|
4
|
+
gemspec.name = "capistrano-drupal"
|
5
|
+
gemspec.summary = "A set of tasks for deploying Drupal projects with Capistrano"
|
6
|
+
gemspec.description = "A set of tasks for deploying Drupal projects with Capistrano. Includes tasks for configuring apache and mysql"
|
7
|
+
gemspec.email = "kim@previousnext.com.au"
|
8
|
+
gemspec.homepage = "http://github.com/previousnext/capistrano-drupal/"
|
9
|
+
gemspec.authors = ["Kim Pepper"]
|
10
|
+
end
|
11
|
+
rescue LoadError
|
12
|
+
puts "Jeweler not available. Install it with: sudo gem install jeweler"
|
13
|
+
end
|
data/VERSION
ADDED
@@ -0,0 +1 @@
|
|
1
|
+
0.0.9
|
@@ -0,0 +1,42 @@
|
|
1
|
+
# Generated by jeweler
|
2
|
+
# DO NOT EDIT THIS FILE DIRECTLY
|
3
|
+
# Instead, edit Jeweler::Tasks in Rakefile, and run the gemspec command
|
4
|
+
# -*- encoding: utf-8 -*-
|
5
|
+
|
6
|
+
Gem::Specification.new do |s|
|
7
|
+
s.name = %q{capistrano-drupal}
|
8
|
+
s.version = "0.0.9"
|
9
|
+
|
10
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 0") if s.respond_to? :required_rubygems_version=
|
11
|
+
s.authors = ["Kim Pepper"]
|
12
|
+
s.date = %q{2010-06-17}
|
13
|
+
s.description = %q{A set of tasks for deploying Drupal projects with Capistrano. Includes tasks for configuring apache and mysql}
|
14
|
+
s.email = %q{kim@previousnext.com.au}
|
15
|
+
s.extra_rdoc_files = [
|
16
|
+
"README.markdown"
|
17
|
+
]
|
18
|
+
s.files = [
|
19
|
+
".gitignore",
|
20
|
+
"README.markdown",
|
21
|
+
"Rakefile",
|
22
|
+
"VERSION",
|
23
|
+
"capistrano-drupal.gemspec",
|
24
|
+
"lib/capistrano-drupal.rb"
|
25
|
+
]
|
26
|
+
s.homepage = %q{http://github.com/previousnext/capistrano-drupal/}
|
27
|
+
s.rdoc_options = ["--charset=UTF-8"]
|
28
|
+
s.require_paths = ["lib"]
|
29
|
+
s.rubygems_version = %q{1.3.7}
|
30
|
+
s.summary = %q{A set of tasks for deploying Drupal projects with Capistrano}
|
31
|
+
|
32
|
+
if s.respond_to? :specification_version then
|
33
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
34
|
+
s.specification_version = 3
|
35
|
+
|
36
|
+
if Gem::Version.new(Gem::VERSION) >= Gem::Version.new('1.2.0') then
|
37
|
+
else
|
38
|
+
end
|
39
|
+
else
|
40
|
+
end
|
41
|
+
end
|
42
|
+
|
@@ -0,0 +1,132 @@
|
|
1
|
+
Capistrano::Configuration.instance(:must_exist).load do
|
2
|
+
|
3
|
+
require 'capistrano/recipes/deploy/scm'
|
4
|
+
require 'capistrano/recipes/deploy/strategy'
|
5
|
+
|
6
|
+
# =========================================================================
|
7
|
+
# These variables may be set in the client capfile if their default values
|
8
|
+
# are not sufficient.
|
9
|
+
# =========================================================================
|
10
|
+
|
11
|
+
set :scm, :git
|
12
|
+
set :deploy_via, :remote_cache
|
13
|
+
_cset :branch, "master"
|
14
|
+
set :git_enable_submodules, true
|
15
|
+
set :runner_group, "www-data"
|
16
|
+
|
17
|
+
set(:deploy_to) { "/var/www/#{application}" }
|
18
|
+
set :shared_children, ['files']
|
19
|
+
|
20
|
+
set(:db_root_password) {
|
21
|
+
Capistrano::CLI.ui.ask("MySQL root password:")
|
22
|
+
}
|
23
|
+
|
24
|
+
set(:db_username) {
|
25
|
+
Capistrano::CLI.ui.ask("MySQL username:")
|
26
|
+
}
|
27
|
+
|
28
|
+
set(:db_password) {
|
29
|
+
Capistrano::CLI.ui.ask("MySQL password:")
|
30
|
+
}
|
31
|
+
|
32
|
+
after "deploy:symlink", "drupal:symlink_shared"
|
33
|
+
after "deploy:setup", "drush:createdb"
|
34
|
+
after "deploy:setup", "drush:init_settings"
|
35
|
+
before "drush:updatedb", "drush:backupdb"
|
36
|
+
after "deploy:update_code", "drush:updatedb"
|
37
|
+
after "deploy:finalize_update", "drush:cache_clear"
|
38
|
+
after "deploy:finalize_update", "git:push_deploy_tag"
|
39
|
+
after "deploy:cleanup", "git:cleanup_deploy_tag"
|
40
|
+
|
41
|
+
namespace :deploy do
|
42
|
+
desc <<-DESC
|
43
|
+
Prepares one or more servers for deployment. Before you can use any \
|
44
|
+
of the Capistrano deployment tasks with your project, you will need to \
|
45
|
+
make sure all of your servers have been prepared with `cap deploy:setup'. When \
|
46
|
+
you add a new server to your cluster, you can easily run the setup task \
|
47
|
+
on just that server by specifying the HOSTS environment variable:
|
48
|
+
|
49
|
+
$ cap HOSTS=new.server.com deploy:setup
|
50
|
+
|
51
|
+
It is safe to run this task on servers that have already been set up; it \
|
52
|
+
will not destroy any deployed revisions or data.
|
53
|
+
DESC
|
54
|
+
task :setup, :except => { :no_release => true } do
|
55
|
+
dirs = [deploy_to, releases_path, shared_path]
|
56
|
+
dirs += shared_children.map { |d| File.join(shared_path, d) }
|
57
|
+
run "#{try_sudo} mkdir -p #{dirs.join(' ')} && #{try_sudo} chown #{runner}:#{runner_group} #{dirs.join(' ')} && #{try_sudo} chmod g+w #{dirs.join(' ')}"
|
58
|
+
end
|
59
|
+
end
|
60
|
+
|
61
|
+
namespace :drupal do
|
62
|
+
desc "Symlink settings and files to shared directory. This allows the settings.php and \
|
63
|
+
and sites/default/files directory to be correctly linked to the shared directory on a new deployment."
|
64
|
+
task :symlink_shared do
|
65
|
+
["files", "settings.php"].each do |asset|
|
66
|
+
run "rm -rf #{app_path}/#{asset} && ln -nfs #{shared_path}/#{asset} #{app_path}/sites/default/#{asset}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
end
|
70
|
+
|
71
|
+
namespace :git do
|
72
|
+
|
73
|
+
desc "Place release tag into Git and push it to origin server."
|
74
|
+
task :push_deploy_tag do
|
75
|
+
user = `git config --get user.name`
|
76
|
+
email = `git config --get user.email`
|
77
|
+
|
78
|
+
puts `git tag release_#{release_name} #{revision} -m "Deployed by #{user} <#{email}>"`
|
79
|
+
puts `git push --tags`
|
80
|
+
end
|
81
|
+
|
82
|
+
desc "Place release tag into Git and push it to server."
|
83
|
+
task :cleanup_deploy_tag do
|
84
|
+
count = fetch(:keep_releases, 5).to_i
|
85
|
+
if count >= releases.length
|
86
|
+
logger.important "no old release tags to clean up"
|
87
|
+
else
|
88
|
+
logger.info "keeping #{count} of #{releases.length} release tags"
|
89
|
+
|
90
|
+
tags = (releases - releases.last(count)).map { |release| "release_#{release}" }
|
91
|
+
|
92
|
+
tags.each do |tag|
|
93
|
+
`git tag -d #{tag}`
|
94
|
+
`git push origin :refs/tags/#{tag}`
|
95
|
+
end
|
96
|
+
end
|
97
|
+
end
|
98
|
+
end
|
99
|
+
|
100
|
+
namespace :drush do
|
101
|
+
|
102
|
+
desc "Backup the database"
|
103
|
+
task :backupdb, :on_error => :continue do
|
104
|
+
t = Time.now.utc.strftime("%Y-%m-%dT%H-%M-%S")
|
105
|
+
run "drush -r #{current_path}/pressflow sql-dump --result-file=/tmp/#{application}-#{t}.sql"
|
106
|
+
end
|
107
|
+
|
108
|
+
desc "Run Drupal database migrations if required"
|
109
|
+
task :updatedb, :on_error => :continue do
|
110
|
+
run "drush -r #{app_path} updatedb -y"
|
111
|
+
end
|
112
|
+
|
113
|
+
desc "Clear the drupal cache"
|
114
|
+
task :cache_clear, :on_error => :continue do
|
115
|
+
run "drush -r #{app_path} cc all"
|
116
|
+
end
|
117
|
+
|
118
|
+
desc "Create the database"
|
119
|
+
task :createdb, :on_error => :continue do
|
120
|
+
run "mysqladmin -uroot -p#{db_root_password} create #{app_name}"
|
121
|
+
run "mysql -uroot -p#{db_root_password} #{app_name} -e \"grant all on #{app_name}.* to '#{db_username}'@'localhost' identified by '#{db_password}'\""
|
122
|
+
end
|
123
|
+
|
124
|
+
desc "Initialise settings.php"
|
125
|
+
task :init_settings do
|
126
|
+
upload "pressflow/sites/default/default.settings.php", "#{shared_path}/settings.php"
|
127
|
+
run "chmod 664 #{shared_path}/settings.php"
|
128
|
+
end
|
129
|
+
|
130
|
+
end
|
131
|
+
|
132
|
+
end
|
metadata
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: capistrano-drupal
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
hash: 13
|
5
|
+
prerelease: false
|
6
|
+
segments:
|
7
|
+
- 0
|
8
|
+
- 0
|
9
|
+
- 9
|
10
|
+
version: 0.0.9
|
11
|
+
platform: ruby
|
12
|
+
authors:
|
13
|
+
- Kim Pepper
|
14
|
+
autorequire:
|
15
|
+
bindir: bin
|
16
|
+
cert_chain: []
|
17
|
+
|
18
|
+
date: 2010-06-17 00:00:00 +10:00
|
19
|
+
default_executable:
|
20
|
+
dependencies: []
|
21
|
+
|
22
|
+
description: A set of tasks for deploying Drupal projects with Capistrano. Includes tasks for configuring apache and mysql
|
23
|
+
email: kim@previousnext.com.au
|
24
|
+
executables: []
|
25
|
+
|
26
|
+
extensions: []
|
27
|
+
|
28
|
+
extra_rdoc_files:
|
29
|
+
- README.markdown
|
30
|
+
files:
|
31
|
+
- .gitignore
|
32
|
+
- README.markdown
|
33
|
+
- Rakefile
|
34
|
+
- VERSION
|
35
|
+
- capistrano-drupal.gemspec
|
36
|
+
- lib/capistrano-drupal.rb
|
37
|
+
has_rdoc: true
|
38
|
+
homepage: http://github.com/previousnext/capistrano-drupal/
|
39
|
+
licenses: []
|
40
|
+
|
41
|
+
post_install_message:
|
42
|
+
rdoc_options:
|
43
|
+
- --charset=UTF-8
|
44
|
+
require_paths:
|
45
|
+
- lib
|
46
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
47
|
+
none: false
|
48
|
+
requirements:
|
49
|
+
- - ">="
|
50
|
+
- !ruby/object:Gem::Version
|
51
|
+
hash: 3
|
52
|
+
segments:
|
53
|
+
- 0
|
54
|
+
version: "0"
|
55
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
56
|
+
none: false
|
57
|
+
requirements:
|
58
|
+
- - ">="
|
59
|
+
- !ruby/object:Gem::Version
|
60
|
+
hash: 3
|
61
|
+
segments:
|
62
|
+
- 0
|
63
|
+
version: "0"
|
64
|
+
requirements: []
|
65
|
+
|
66
|
+
rubyforge_project:
|
67
|
+
rubygems_version: 1.3.7
|
68
|
+
signing_key:
|
69
|
+
specification_version: 3
|
70
|
+
summary: A set of tasks for deploying Drupal projects with Capistrano
|
71
|
+
test_files: []
|
72
|
+
|