ms_deploy 0.0.2 → 0.0.3

Sign up to get free protection for your applications and to get access to all the features.
data/README.md ADDED
@@ -0,0 +1,12 @@
1
+ # What?
2
+
3
+ * capistrano deployment task for my projects
4
+
5
+ # Why?
6
+
7
+ * dry
8
+
9
+ # Todo
10
+
11
+ * implement onrollback
12
+ * gem 'cap-recipes'
@@ -0,0 +1,110 @@
1
+
2
+ set :application, ''
3
+ set :domain, ''
4
+ set :server_domain, ''
5
+
6
+ set :user, 'deploy'
7
+ set :group, 'deploy'
8
+
9
+ set :ruby_version, "ruby-1.9.3.rc1"
10
+ set :rails_root, File.expand_path('../../', __FILE__)
11
+
12
+ set :default_environment, {
13
+ 'PATH' => "/home/#{user}/.rbenv/shims:/home/#{user}/.rbenv/bin:$PATH"
14
+ }
15
+
16
+ set :rails_env, :production # use 'stage' to differ between stage environments
17
+ set :keep_releases, 10 # default
18
+ set :use_sudo, false
19
+
20
+ server domain, :web, :app, :db, :primary => true
21
+
22
+ set :branch do
23
+ ENV['BRANCH'] || 'xxx'
24
+ end
25
+
26
+ # Multistage settings
27
+ #set :stage_dir, File.dirname(__FILE__) + '/deploy/stages'
28
+ #set :default_stage, "vagrant"
29
+ #
30
+ #require 'capistrano/ext/multistage'
31
+
32
+ # database
33
+ set :db_name, ''
34
+ set :db_user_name, ''
35
+ set :db_user_password, ''
36
+
37
+ set :scm, :git
38
+ set :repository, '.git'
39
+ set :git_enable_submodules, 1
40
+
41
+ # set deployment strategy
42
+ set :deploy_via, :remote_cache
43
+ set :copy_exclude, %w(.git .svn .DS_Store test doc .gitkeep)
44
+
45
+ # :forward_agent allows us to avoid using and distributing a deploy key.
46
+ # On problems run 'ssh-add' locally
47
+ # In your /etc/ssh/ssh_config or ~/.ssh/config you need to have ForwardAgent enabled for this to work.
48
+ set :ssh_options, { :port => fetch(:ssh_port, 22), :forward_agent => true, :paranoid => true }
49
+
50
+ default_run_options[:pty] = true
51
+
52
+ # set application folder
53
+ set(:deploy_to) { "/var/projects/#{application}/#{fetch(:stage, 'production')}" }
54
+
55
+ require 'ms_deploy/recipes/nginx'
56
+ require 'ms_deploy/recipes/bundler'
57
+ require 'ms_deploy/recipes/deploy/symlink'
58
+ require 'ms_deploy/recipes/deploy/unicorn'
59
+ require 'ms_deploy/recipes/deploy/setup'
60
+ require 'ms_deploy/recipes/deploy/assets'
61
+
62
+ before 'deploy:setup', 'deploy:prepare:database';
63
+ after 'deploy:update", "deploy:cleanup'
64
+
65
+ set(:shared_directories_to_create) {
66
+ [
67
+ "#{shared_path}/vendor/bundle",
68
+ "#{shared_path}/vendor/cache",
69
+ "#{shared_path}/uploads"
70
+ ]
71
+ }
72
+
73
+ set(:shared_directories_to_link) {
74
+ {
75
+ "#{shared_path}/bundle/" => "#{release_path}/vendor/bundle",
76
+ "#{shared_path}/solr/" => "#{release_path}/solr"
77
+ }
78
+ }
79
+
80
+ set(:directories_to_create) {
81
+ [
82
+ "#{release_path}/tmp",
83
+ "#{release_path}/vendor"
84
+ ]
85
+ }
86
+
87
+ set(:files_to_link) {
88
+ {
89
+ "#{shared_path}/config/config.production.yml" => "#{release_path}/config/config.local.yml",
90
+ "#{shared_path}/config/unicorn.production.rb" => "#{release_path}/config/unicorn.production.rb"
91
+ }
92
+ }
93
+
94
+ set(:config_file_to_setup) {
95
+ [
96
+ "config.production.yml",
97
+ "unicorn.production.rb"
98
+ ]
99
+ }
100
+
101
+ set(:files_to_delete) {
102
+ [
103
+ ]
104
+ }
105
+
106
+ set(:chmods_to_set) {
107
+ {
108
+ # "#{shared_path}/data/pdf" => 755
109
+ }
110
+ }
@@ -17,7 +17,7 @@ Capistrano::Configuration.instance.load do
17
17
 
18
18
  namespace :bundler do
19
19
  task :install_gem do
20
- run "cd #{current_path} && gem install bundler --pre --no-ri --no-rdoc"
20
+ run "cd #{release_path} && gem install bundler --pre --no-ri --no-rdoc"
21
21
  end
22
22
  end
23
23
 
@@ -2,14 +2,11 @@ Capistrano::Configuration.instance.load do
2
2
 
3
3
  namespace :deploy do
4
4
  namespace :prepare do
5
- task :create_config do
5
+ task :create_config_files do
6
6
  run "mkdir -p #{shared_path}/config/"
7
- put(File.read(database_config_file), "#{shared_path}/config/#{fetch(:configuration_file_prefix, 'config')}.production.yml", :via => :scp)
8
- end
9
-
10
- task :create_database_config do
11
- run "mkdir -p #{shared_path}/config/"
12
- put(File.read(database_config_file), "#{shared_path}/config/database.yml", :via => :scp)
7
+ config_file_to_setup.each do |config_file|
8
+ put(File.read(config_file_path(config_file)), "#{shared_path}/config/#{config_file}", :via => :scp)
9
+ end
13
10
  end
14
11
 
15
12
  desc "Set up shared directory structure"
@@ -17,21 +14,56 @@ Capistrano::Configuration.instance.load do
17
14
  shared_directories_to_create.each { |directory| run "mkdir -p #{directory}" }
18
15
  end
19
16
 
20
- #desc "Rebuilds css and js asset packages"
21
- #task :rebuild_asset_cache, :roles => :app do
22
- # run "cd #{current_path} && #{rake_path} RAILS_ENV=#{fetch(:rails_env, "production")} asset:packager:build_all"
23
- #end
17
+ task :database do
18
+ set :db_admin_user, 'root' unless fetch(:db_admin_user, nil)
19
+ set :db_admin_password, Capistrano::CLI.password_prompt("Type your mysql password for user '#{db_admin_user}' (not set if empty): ") unless fetch(:db_admin_password, nil)
20
+ set :db_name, application.gsub(/\W+/, '')[0..5] + '_' + rails_env.to_s unless fetch(:db_name, nil)
21
+ set :db_user_name, application unless fetch(:db_user_name, nil)
22
+ set :db_user_password, '' unless fetch(:db_user_password, nil)
23
+
24
+ unless db_admin_password.to_s.empty?
25
+ unless database_exits?
26
+ create_database
27
+ end
28
+ setup_database_permissions
29
+ end
30
+ end
24
31
  end
25
32
  end
26
33
 
27
- before :"deploy:setup", :"deploy:prepare:create_config";
28
- before :"deploy:setup", :"deploy:prepare:create_database_config";
34
+ before :"deploy:setup", :"deploy:prepare:create_config_files";
29
35
  before :"deploy:setup", :"deploy:prepare:create_shared_folders";
30
36
 
31
37
  end
32
38
 
33
- def database_config_file
34
- config_file = "#{rails_root}/config/#{fetch(:configuration_file_prefix, 'config')}.#{fetch(:stage, 'production')}.yml"
35
- raise "No config file '#{config_file}' for '#{fetch(:stage, 'production')}'" unless File.exists? config_file
39
+ def config_file_path(config_file_name)
40
+ config_file = "#{rails_root}/config/#{config_file_name}"
41
+ raise "No config file '#{config_file}'" unless File.exists? config_file
36
42
  config_file
37
43
  end
44
+
45
+ def database_exits?
46
+ exists = false
47
+
48
+ run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"show databases;\"" do |channel, stream, data|
49
+ exists = exists || data.include?(db_name)
50
+ end
51
+
52
+ exists
53
+ end
54
+
55
+ def create_database
56
+ create_sql = <<-SQL
57
+ CREATE DATABASE #{db_name};
58
+ SQL
59
+
60
+ run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{create_sql}\""
61
+ end
62
+
63
+ def setup_database_permissions
64
+ grant_sql = <<-SQL
65
+ GRANT ALL PRIVILEGES ON #{db_name}.* TO #{db_user_name}@localhost IDENTIFIED BY '#{db_user_password}';
66
+ SQL
67
+
68
+ run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{grant_sql}\""
69
+ end
@@ -19,7 +19,6 @@ Capistrano::Configuration.instance.load do
19
19
  end
20
20
  end
21
21
 
22
- before 'deploy:finalize_update', 'deploy:symlink'
23
22
  after 'deploy:symlink', 'deploy:symlink_dependencies'
24
23
 
25
24
  end
@@ -2,7 +2,7 @@ require "ms_deploy/render"
2
2
 
3
3
  Capistrano::Configuration.instance.load do
4
4
 
5
- namespace :deploy do
5
+ namespace :service do
6
6
  namespace :nginx do
7
7
  desc <<-DESC
8
8
  Starts the nginx web-server.
@@ -30,7 +30,7 @@ Capistrano::Configuration.instance.load do
30
30
 
31
31
  task :install do
32
32
  template_path = File.expand_path('../../templates/vhost.erb', __FILE__)
33
- vars = {'application'=> application, 'project_root' => deploy_to + '/current', 'server_name' => server_name}
33
+ vars = {'application'=> application, 'project_root' => deploy_to + '/current', 'domain' => domain}
34
34
  config_path = "#{shared_path}/config/#{application}_vhost.conf"
35
35
 
36
36
  put(render_erb_template(template_path, vars), config_path)
@@ -44,6 +44,6 @@ Capistrano::Configuration.instance.load do
44
44
  end
45
45
  end
46
46
 
47
- after :"deploy:setup", :"deploy:nginx:install";
47
+ after :"deploy:setup", :"service:nginx:install";
48
48
 
49
49
  end
@@ -16,7 +16,7 @@ upstream <%= application %>_server {
16
16
  server {
17
17
 
18
18
  listen 443;
19
- server_name <%= server_name %>;
19
+ server_name <%= domain %>;
20
20
 
21
21
  ssl on;
22
22
  ssl_certificate /usr/local/nginx/conf/cert.pem;
@@ -16,7 +16,7 @@ upstream <%= application %>_server {
16
16
  server {
17
17
 
18
18
  listen 80;
19
- server_name <%= server_name %>;
19
+ server_name <%= domain %>;
20
20
 
21
21
  client_max_body_size 4G;
22
22
 
@@ -1,3 +1,3 @@
1
1
  module MsDeploy
2
- VERSION = "0.0.2"
2
+ VERSION = "0.0.3"
3
3
  end
data/ms_deploy.gemspec CHANGED
@@ -18,7 +18,5 @@ Gem::Specification.new do |gem|
18
18
  gem.add_dependency('capistrano-ext')
19
19
  gem.add_dependency('erubis')
20
20
 
21
- #gem 'cap-recipes', '>= 0.3.36', :require => false # http://github.com/nesquena/cap-recipes
22
-
23
21
  gem.version = MsDeploy::VERSION
24
22
  end
metadata CHANGED
@@ -1,7 +1,7 @@
1
1
  --- !ruby/object:Gem::Specification
2
2
  name: ms_deploy
3
3
  version: !ruby/object:Gem::Version
4
- version: 0.0.2
4
+ version: 0.0.3
5
5
  prerelease:
6
6
  platform: ruby
7
7
  authors:
@@ -13,7 +13,7 @@ date: 2011-12-02 00:00:00.000000000 Z
13
13
  dependencies:
14
14
  - !ruby/object:Gem::Dependency
15
15
  name: capistrano
16
- requirement: &75236870 !ruby/object:Gem::Requirement
16
+ requirement: &79221250 !ruby/object:Gem::Requirement
17
17
  none: false
18
18
  requirements:
19
19
  - - ! '>='
@@ -21,10 +21,10 @@ dependencies:
21
21
  version: '0'
22
22
  type: :runtime
23
23
  prerelease: false
24
- version_requirements: *75236870
24
+ version_requirements: *79221250
25
25
  - !ruby/object:Gem::Dependency
26
26
  name: capistrano-ext
27
- requirement: &75236330 !ruby/object:Gem::Requirement
27
+ requirement: &79220690 !ruby/object:Gem::Requirement
28
28
  none: false
29
29
  requirements:
30
30
  - - ! '>='
@@ -32,10 +32,10 @@ dependencies:
32
32
  version: '0'
33
33
  type: :runtime
34
34
  prerelease: false
35
- version_requirements: *75236330
35
+ version_requirements: *79220690
36
36
  - !ruby/object:Gem::Dependency
37
37
  name: erubis
38
- requirement: &75333520 !ruby/object:Gem::Requirement
38
+ requirement: &79220470 !ruby/object:Gem::Requirement
39
39
  none: false
40
40
  requirements:
41
41
  - - ! '>='
@@ -43,7 +43,7 @@ dependencies:
43
43
  version: '0'
44
44
  type: :runtime
45
45
  prerelease: false
46
- version_requirements: *75333520
46
+ version_requirements: *79220470
47
47
  description: capistrano deployment task for my projects
48
48
  email:
49
49
  - michael.schiller@gmx.de
@@ -53,22 +53,22 @@ extra_rdoc_files: []
53
53
  files:
54
54
  - .gitignore
55
55
  - Gemfile
56
+ - README.md
56
57
  - Rakefile
57
- - TODO
58
+ - lib/examples/deploy.rb
58
59
  - lib/ms_deploy.rb
59
60
  - lib/ms_deploy/recipes/bundler.rb
60
61
  - lib/ms_deploy/recipes/deploy/assets.rb
61
- - lib/ms_deploy/recipes/deploy/nginx.rb
62
62
  - lib/ms_deploy/recipes/deploy/setup.rb
63
63
  - lib/ms_deploy/recipes/deploy/symlink.rb
64
64
  - lib/ms_deploy/recipes/deploy/unicorn.rb
65
65
  - lib/ms_deploy/recipes/info.rb
66
- - lib/ms_deploy/recipes/mysql.rb
66
+ - lib/ms_deploy/recipes/nginx.rb
67
67
  - lib/ms_deploy/recipes/redis.rb
68
- - lib/ms_deploy/recipes/templates/ssl_vhost.erb
69
- - lib/ms_deploy/recipes/templates/vhost.erb
70
68
  - lib/ms_deploy/recipes/whenever.rb
71
69
  - lib/ms_deploy/render.rb
70
+ - lib/ms_deploy/templates/ssl_vhost.erb
71
+ - lib/ms_deploy/templates/vhost.erb
72
72
  - lib/ms_deploy/version.rb
73
73
  - ms_deploy.gemspec
74
74
  homepage: https://github.com/mschiller/ms_deploy
data/TODO DELETED
@@ -1,3 +0,0 @@
1
- # Todo
2
-
3
- * implement onrollback
@@ -1,48 +0,0 @@
1
- require 'yaml'
2
-
3
- Capistrano::Configuration.instance.load do
4
-
5
- namespace :deploy do
6
- namespace :prepare do
7
- task :database do
8
- set :db_admin_user, 'root' unless fetch(:db_admin_user, nil)
9
- set :db_admin_password, Capistrano::CLI.password_prompt("Type your mysql password for user '#{db_admin_user}': ") unless fetch(:db_admin_password, nil)
10
- set :db_name, application.gsub(/\W+/, '')[0..5] + '_' + rails_env.to_s unless fetch(:db_name, nil)
11
- set :db_user_name, 'root' unless fetch(:db_user_name, nil)
12
- set :db_user_password, '' unless fetch(:db_user_password, nil)
13
-
14
- unless database_exits?
15
- create_database
16
- end
17
- setup_database_permissions
18
- end
19
- end
20
- end
21
-
22
- def database_exits?
23
- exists = false
24
-
25
- run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"show databases;\"" do |channel, stream, data|
26
- exists = exists || data.include?(db_name)
27
- end
28
-
29
- exists
30
- end
31
-
32
- def create_database
33
- create_sql = <<-SQL
34
- CREATE DATABASE #{db_name};
35
- SQL
36
-
37
- run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{create_sql}\""
38
- end
39
-
40
- def setup_database_permissions
41
- grant_sql = <<-SQL
42
- GRANT ALL PRIVILEGES ON #{db_name}.* TO #{db_user_name}@localhost IDENTIFIED BY '#{db_user_password}';
43
- SQL
44
-
45
- run "mysql --user=#{db_admin_user} --password=#{db_admin_password} --execute=\"#{grant_sql}\""
46
- end
47
-
48
- end