bc-cap-recipes 0.0.1
Sign up to get free protection for your applications and to get access to all the features.
- data/Manifest +7 -0
- data/README +45 -0
- data/bc-cap-recipes.gemspec +29 -0
- data/lib/apache.rb +33 -0
- data/lib/base.rb +72 -0
- data/lib/bc-cap-recipes.rb +8 -0
- metadata +60 -0
data/Manifest
ADDED
data/README
ADDED
@@ -0,0 +1,45 @@
|
|
1
|
+
Provides common tasks and environment to deploy Byclosure apps
|
2
|
+
|
3
|
+
documented as of 2010-01-20
|
4
|
+
|
5
|
+
== generate the gem ==
|
6
|
+
|
7
|
+
gem build bc-cap-recipes.gemspec
|
8
|
+
|
9
|
+
== get the gem from gemcutter ==
|
10
|
+
|
11
|
+
sudo gem install bc-cap-recipes
|
12
|
+
|
13
|
+
== sample minimal config.rb using this ==
|
14
|
+
|
15
|
+
set :application, "foobar"
|
16
|
+
|
17
|
+
require 'bc-cap-recipes'
|
18
|
+
|
19
|
+
case rails_env
|
20
|
+
when :production
|
21
|
+
set :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/trunk/#{application}"
|
22
|
+
when :staging
|
23
|
+
set :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/trunk/#{application}"
|
24
|
+
else
|
25
|
+
puts "Unknown deploy environment: '#{rails_env}'"
|
26
|
+
return
|
27
|
+
end
|
28
|
+
|
29
|
+
== base.rb ==
|
30
|
+
|
31
|
+
sets up environment (user, server) for staging / production. Does not set repository
|
32
|
+
|
33
|
+
cap deploy:start # passenger version
|
34
|
+
cap deploy:restart # passenger version
|
35
|
+
cap deploy:cleanup # overridden to not use sudo
|
36
|
+
cap deploy:clear_cached_copy # useful when scm path changes
|
37
|
+
|
38
|
+
== apache.rb ==
|
39
|
+
|
40
|
+
cap apache:bootstrap # Create virtual host configuration file
|
41
|
+
cap apache:disable_site # disables site
|
42
|
+
cap apache:enable_site # Enables site
|
43
|
+
cap apache:reload # Reloads apache
|
44
|
+
cap apache:setup # Setup apache on server to support the new site
|
45
|
+
|
@@ -0,0 +1,29 @@
|
|
1
|
+
Gem::Specification.new do |s|
|
2
|
+
s.name = %q{bc-cap-recipes}
|
3
|
+
s.version = `cat VERSION`
|
4
|
+
|
5
|
+
s.required_rubygems_version = Gem::Requirement.new(">= 1.2") if s.respond_to? :required_rubygems_version=
|
6
|
+
s.authors = ["Byclosure"]
|
7
|
+
s.date = %q{2010-01-19}
|
8
|
+
s.description = %q{Common capistrano tasks}
|
9
|
+
s.email = %q{info@byclosure.com}
|
10
|
+
#s.extra_rdoc_files = ["README.rdoc", "lib/uniquify.rb"]
|
11
|
+
s.files = ["Manifest", "README", "lib/base.rb", "lib/apache.rb", "lib/bc-cap-recipes.rb", "bc-cap-recipes.gemspec"]
|
12
|
+
s.has_rdoc = false
|
13
|
+
s.homepage = %q{http://byclosure.com}
|
14
|
+
#s.rdoc_options = ["--line-numbers", "--inline-source", "--title", "Uniquify", "--main", "README.rdoc"]
|
15
|
+
s.require_paths = ["lib"]
|
16
|
+
#s.rubyforge_project = %q{}
|
17
|
+
s.rubygems_version = %q{1.3.4}
|
18
|
+
s.summary = %q{Common capistrano tasks}
|
19
|
+
|
20
|
+
if s.respond_to? :specification_version then
|
21
|
+
current_version = Gem::Specification::CURRENT_SPECIFICATION_VERSION
|
22
|
+
s.specification_version = 3
|
23
|
+
|
24
|
+
if Gem::Version.new(Gem::RubyGemsVersion) >= Gem::Version.new('1.2.0') then
|
25
|
+
else
|
26
|
+
end
|
27
|
+
else
|
28
|
+
end
|
29
|
+
end
|
data/lib/apache.rb
ADDED
@@ -0,0 +1,33 @@
|
|
1
|
+
configuration = Capistrano::Configuration.respond_to?(:instance) ?
|
2
|
+
Capistrano::Configuration.instance(:must_exist) :
|
3
|
+
Capistrano.configuration(:must_exist)
|
4
|
+
|
5
|
+
configuration.load do
|
6
|
+
namespace :apache do
|
7
|
+
desc "Create virtual host configuration file"
|
8
|
+
task :bootstrap do
|
9
|
+
sudo "[ -f /etc/apache2/sites-available/#{application} ] || echo -e \"<VirtualHost *:80>\n ServerName #{application}.byclosure.com\n DocumentRoot #{deploy_to}/current/public\n</VirtualHost>\" > /etc/apache2/sites-available/#{application}"
|
10
|
+
end
|
11
|
+
|
12
|
+
desc "Enables site"
|
13
|
+
task :enable_site do
|
14
|
+
sudo "a2ensite #{application}"
|
15
|
+
end
|
16
|
+
|
17
|
+
desc "disables site"
|
18
|
+
task :disable_site do
|
19
|
+
sudo "a2dissite #{application}"
|
20
|
+
end
|
21
|
+
|
22
|
+
desc "Reloads apache"
|
23
|
+
task :reload do
|
24
|
+
sudo "/etc/init.d/apache2 reload"
|
25
|
+
end
|
26
|
+
|
27
|
+
desc "Setup apache on server to support the new site"
|
28
|
+
task :setup do ; end
|
29
|
+
after 'apache:setup', 'apache:bootstrap', 'apache:enable_site', 'apache:reload'
|
30
|
+
end
|
31
|
+
after 'deploy:setup', 'apache:setup'
|
32
|
+
end
|
33
|
+
|
data/lib/base.rb
ADDED
@@ -0,0 +1,72 @@
|
|
1
|
+
configuration = Capistrano::Configuration.respond_to?(:instance) ?
|
2
|
+
Capistrano::Configuration.instance(:must_exist) :
|
3
|
+
Capistrano.configuration(:must_exist)
|
4
|
+
|
5
|
+
configuration.load do
|
6
|
+
_cset :rails_env, (ENV["DEPLOY_ENV"].nil? || ENV["DEPLOY_ENV"] == "") ? :staging : ENV["DEPLOY_ENV"].to_sym
|
7
|
+
|
8
|
+
case rails_env
|
9
|
+
when :production
|
10
|
+
_cset :user, "deploy"
|
11
|
+
_cset :runner, "deploy"
|
12
|
+
server "cullion.vps.byclosure.com", :app, :web
|
13
|
+
role :db, "cullion.vps.byclosure.com", :primary => true
|
14
|
+
#_cset :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/branches/#{application}/production"
|
15
|
+
when :staging
|
16
|
+
_cset :user, "deploy"
|
17
|
+
_cset :runner, "deploy"
|
18
|
+
server "erestor.vps.byclosure.com", :app, :web
|
19
|
+
role :db, "erestor.vps.byclosure.com", :primary => true
|
20
|
+
#_cset :repository, "svn+ssh://deploy@code.byclosure.com/var/svn/projects/trunk/#{application}"
|
21
|
+
end
|
22
|
+
|
23
|
+
_cset :deploy_to, "/var/www/#{application}"
|
24
|
+
_cset :deploy_via, :remote_cache
|
25
|
+
_cset :keep_releases, 4
|
26
|
+
|
27
|
+
namespace :deploy do
|
28
|
+
|
29
|
+
[:start, :restart].each do |t|
|
30
|
+
desc "restarts application" # there's no start with passenger
|
31
|
+
task t do
|
32
|
+
run "touch #{current_path}/tmp/restart.txt"
|
33
|
+
end
|
34
|
+
end
|
35
|
+
|
36
|
+
# redefined to not use sudo
|
37
|
+
desc <<-DESC
|
38
|
+
Clean up old releases. By default, the last 5 releases are kept on each server (though you can change this with the keep_releases variable). All other deployed revisions are removed from the servers. By default, this will use sudo to clean up the old releases, but if sudo is not available for your environment, set the :use_sudo variable to false instead.
|
39
|
+
DESC
|
40
|
+
task :cleanup, :except => { :no_release => true } do
|
41
|
+
count = fetch(:keep_releases, 5).to_i
|
42
|
+
if count >= releases.length
|
43
|
+
logger.important "no old releases to clean up"
|
44
|
+
else
|
45
|
+
logger.info "keeping #{count} of #{releases.length} deployed releases"
|
46
|
+
|
47
|
+
directories = (releases - releases.last(count)).map { |release|
|
48
|
+
File.join(releases_path, release) }.join(" ")
|
49
|
+
|
50
|
+
run "rm -rf #{directories}" #try_sudo "rm -rf #{directories}" # byclosure: no need for sudo
|
51
|
+
end
|
52
|
+
end
|
53
|
+
|
54
|
+
desc "Clears the cached copy: useful for changes of branches"
|
55
|
+
task :clear_cached_copy do
|
56
|
+
run "rm -rf #{shared_path}/cached-copy"
|
57
|
+
end
|
58
|
+
|
59
|
+
task :set_environment do
|
60
|
+
run %(sed -e '1 i ENV["RAILS_ENV"] = "#{rails_env}"' -i.bak #{release_path}/config/environment.rb)
|
61
|
+
end
|
62
|
+
|
63
|
+
task :mkdirs do
|
64
|
+
run "mkdir -p /var/www/#{application}"
|
65
|
+
sudo "chown -R root:#{user} /var/www/#{application}"
|
66
|
+
sudo "chmod -R g+w /var/www/#{application}"
|
67
|
+
end
|
68
|
+
end
|
69
|
+
after "deploy", "deploy:cleanup"
|
70
|
+
after 'deploy:setup', 'deploy:mkdirs'
|
71
|
+
after 'deploy:update_code', 'deploy:set_environment' if rails_env != :production
|
72
|
+
end
|
metadata
ADDED
@@ -0,0 +1,60 @@
|
|
1
|
+
--- !ruby/object:Gem::Specification
|
2
|
+
name: bc-cap-recipes
|
3
|
+
version: !ruby/object:Gem::Version
|
4
|
+
version: 0.0.1
|
5
|
+
platform: ruby
|
6
|
+
authors:
|
7
|
+
- Byclosure
|
8
|
+
autorequire:
|
9
|
+
bindir: bin
|
10
|
+
cert_chain: []
|
11
|
+
|
12
|
+
date: 2010-01-19 00:00:00 +00:00
|
13
|
+
default_executable:
|
14
|
+
dependencies: []
|
15
|
+
|
16
|
+
description: Common capistrano tasks
|
17
|
+
email: info@byclosure.com
|
18
|
+
executables: []
|
19
|
+
|
20
|
+
extensions: []
|
21
|
+
|
22
|
+
extra_rdoc_files: []
|
23
|
+
|
24
|
+
files:
|
25
|
+
- Manifest
|
26
|
+
- README
|
27
|
+
- lib/base.rb
|
28
|
+
- lib/apache.rb
|
29
|
+
- lib/bc-cap-recipes.rb
|
30
|
+
- bc-cap-recipes.gemspec
|
31
|
+
has_rdoc: false
|
32
|
+
homepage: http://byclosure.com
|
33
|
+
licenses: []
|
34
|
+
|
35
|
+
post_install_message:
|
36
|
+
rdoc_options: []
|
37
|
+
|
38
|
+
require_paths:
|
39
|
+
- lib
|
40
|
+
required_ruby_version: !ruby/object:Gem::Requirement
|
41
|
+
requirements:
|
42
|
+
- - ">="
|
43
|
+
- !ruby/object:Gem::Version
|
44
|
+
version: "0"
|
45
|
+
version:
|
46
|
+
required_rubygems_version: !ruby/object:Gem::Requirement
|
47
|
+
requirements:
|
48
|
+
- - ">="
|
49
|
+
- !ruby/object:Gem::Version
|
50
|
+
version: "1.2"
|
51
|
+
version:
|
52
|
+
requirements: []
|
53
|
+
|
54
|
+
rubyforge_project:
|
55
|
+
rubygems_version: 1.3.2
|
56
|
+
signing_key:
|
57
|
+
specification_version: 3
|
58
|
+
summary: Common capistrano tasks
|
59
|
+
test_files: []
|
60
|
+
|