app-deploy 0.7.2 → 0.8.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/CHANGES +3 -0
- data/README +42 -41
- data/example/bin/README +11 -0
- data/example/bin/install.sh +1 -0
- data/example/bin/remote_install.sh +10 -6
- data/example/bin/remote_restart.sh +5 -0
- data/example/bin/remote_sh.sh +5 -0
- data/example/bin/remote_update.sh +3 -1
- data/example/bin/restart.sh +4 -0
- data/example/bin/start.sh +2 -0
- data/example/bin/update.sh +1 -2
- data/lib/app-deploy.rb +2 -1
- data/lib/app-deploy/install.rake +1 -61
- data/lib/app-deploy/remote.rake +5 -5
- data/lib/app-deploy/unicorn.rake +8 -3
- data/lib/app-deploy/version.rb +1 -1
- metadata +29 -10
data/CHANGES
CHANGED
data/README
CHANGED
@@ -14,47 +14,48 @@ by Lin Jen-Shin (aka godfat-真常[http://godfat.org])
|
|
14
14
|
|
15
15
|
$ rake -T app
|
16
16
|
(in /Users/godfat/project/godfat/app-deploy)
|
17
|
-
rake app:daemon:restart[config]
|
18
|
-
rake app:daemon:start[config]
|
19
|
-
rake app:daemon:stop[config]
|
20
|
-
rake app:deploy
|
21
|
-
rake app:deploy:after
|
22
|
-
rake app:deploy:before
|
23
|
-
rake app:gem:install
|
24
|
-
rake app:gem:reinstall
|
25
|
-
rake app:gem:uninstall
|
26
|
-
rake app:git[cmd]
|
27
|
-
rake app:git:clone
|
28
|
-
rake app:git:pull
|
29
|
-
rake app:git:stash
|
30
|
-
rake app:git:submodule
|
31
|
-
rake app:install
|
32
|
-
rake app:install:after
|
33
|
-
rake app:install:before
|
34
|
-
rake app:install:remote[hosts,git,cd,branch,script]
|
35
|
-
rake app:
|
36
|
-
rake app:
|
37
|
-
rake app:
|
38
|
-
rake app:
|
39
|
-
rake app:nginx:
|
40
|
-
rake app:
|
41
|
-
rake app:
|
42
|
-
rake app:
|
43
|
-
rake app:
|
44
|
-
rake app:
|
45
|
-
rake app:
|
46
|
-
rake app:
|
47
|
-
rake app:server:
|
48
|
-
rake app:
|
49
|
-
rake app:signal:
|
50
|
-
rake app:signal:
|
51
|
-
rake app:signal:
|
52
|
-
rake app:signal:
|
53
|
-
rake app:
|
54
|
-
rake app:unicorn:
|
55
|
-
rake app:unicorn:
|
56
|
-
rake app:unicorn:
|
57
|
-
rake app:unicorn:
|
17
|
+
rake app:daemon:restart[config] # restart the daemon cluster
|
18
|
+
rake app:daemon:start[config] # start the daemon cluster
|
19
|
+
rake app:daemon:stop[config] # stop the daemon cluster
|
20
|
+
rake app:deploy # deploy to master state
|
21
|
+
rake app:deploy:after # after deploy hook for you to override
|
22
|
+
rake app:deploy:before # before deploy hook for you to override
|
23
|
+
rake app:gem:install # install gems
|
24
|
+
rake app:gem:reinstall # reinstall gems
|
25
|
+
rake app:gem:uninstall # uninstall gems
|
26
|
+
rake app:git[cmd] # generic git cmd walk through all dependency
|
27
|
+
rake app:git:clone # clone repoitory from github
|
28
|
+
rake app:git:pull # pull anything from origin
|
29
|
+
rake app:git:stash # make anything reflect master state
|
30
|
+
rake app:git:submodule # init and update submodule
|
31
|
+
rake app:install # install this application
|
32
|
+
rake app:install:after # after install hook for you to override
|
33
|
+
rake app:install:before # before install hook for you to override
|
34
|
+
rake app:install:remote[hosts,git,cd,branch,script] # remote installation
|
35
|
+
rake app:nginx:kill[signal] # send a signal to nginx
|
36
|
+
rake app:nginx:reload # reload config
|
37
|
+
rake app:nginx:restart[config,nginx,timeout] # restart nginx
|
38
|
+
rake app:nginx:start[config,nginx] # start nginx, default config is config/nginx.conf
|
39
|
+
rake app:nginx:stop[timeout] # stop nginx
|
40
|
+
rake app:rack:restart[config] # restart the rack cluster
|
41
|
+
rake app:rack:start[config] # start the rack cluster
|
42
|
+
rake app:rack:stop[config] # stop the rack cluster
|
43
|
+
rake app:remote:setup[user,file,hosts,script] # upload a tarball and untar to user home, then useradd
|
44
|
+
rake app:remote:sh[hosts,script] # invoke a shell script on remote machines
|
45
|
+
rake app:remote:upload[file,hosts,path] # upload a file to remote machines
|
46
|
+
rake app:remote:useradd[user,hosts,script] # create a user on remote machines
|
47
|
+
rake app:server:reload # reload nginx(passenger)
|
48
|
+
rake app:server:restart # please define your server:restart task
|
49
|
+
rake app:signal:kill[signal,pidfile,name] # send a signal to a process with a pidfile
|
50
|
+
rake app:signal:reload[pidfile,name] # send HUP to a process with a pidfile
|
51
|
+
rake app:signal:restart[script,pidfile,name,timeout] # restart a process with a pidfile
|
52
|
+
rake app:signal:start[script,pidfile] # execute a script if pidfile is not existed
|
53
|
+
rake app:signal:stop[pidfile,name,timeout] # terminate a process with a pidfile
|
54
|
+
rake app:unicorn:kill[signal] # send a signal to unicorn
|
55
|
+
rake app:unicorn:reload # reload config
|
56
|
+
rake app:unicorn:restart[config,env,unicorn,timeout] # restart unicorn
|
57
|
+
rake app:unicorn:start[config,env,unicorn] # start unicorn, default config is config/unicorn.rb
|
58
|
+
rake app:unicorn:stop[timeout] # stop unicorn
|
58
59
|
|
59
60
|
== SYNOPSIS:
|
60
61
|
|
data/example/bin/README
ADDED
@@ -0,0 +1,11 @@
|
|
1
|
+
|
2
|
+
$ ./bin/start.sh # start or restart server with git HEAD
|
3
|
+
$ ./bin/restart.sh # restart server with local modification
|
4
|
+
|
5
|
+
$ ./bin/update.sh # update to latest version, and call ./bin/start.sh
|
6
|
+
$ ./bin/install.sh # install the entire application, and call ./bin/start.sh
|
7
|
+
|
8
|
+
$ ./bin/remote_install.sh # useradd on each node and execute ./bin/install.sh on them
|
9
|
+
$ ./bin/remote_update.sh # call ./bin/update.sh on each node
|
10
|
+
|
11
|
+
$ ./bin/remote_sh.sh 'command' # execute `command' on each node
|
data/example/bin/install.sh
CHANGED
@@ -1,9 +1,13 @@
|
|
1
1
|
#!/bin/sh
|
2
2
|
|
3
|
-
|
3
|
+
source .bash_profile
|
4
4
|
|
5
|
-
rake app:
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
5
|
+
rake app:remote:useradd user=$project hosts=$nodes
|
6
|
+
|
7
|
+
rake app:remote:install hosts=$nodes \
|
8
|
+
git=git@github.com:godfat/$project.git \
|
9
|
+
cd=/home/$project \
|
10
|
+
branch=origin/$branch \
|
11
|
+
script="git submodule init; git submodule update; gem install rake; ./roodo-rc/install.rb; chown $project:$project -R ."
|
12
|
+
|
13
|
+
rake app:remote:sh hosts=$hosts script='./bin/install.sh'
|
data/example/bin/start.sh
CHANGED
data/example/bin/update.sh
CHANGED
data/lib/app-deploy.rb
CHANGED
data/lib/app-deploy/install.rake
CHANGED
@@ -18,67 +18,7 @@ namespace :app do
|
|
18
18
|
:after]
|
19
19
|
|
20
20
|
desc 'remote installation'
|
21
|
-
task :remote, [:hosts, :git, :cd, :branch, :script] => 'remote:
|
21
|
+
task :remote, [:hosts, :git, :cd, :branch, :script] => 'remote:install'
|
22
22
|
|
23
|
-
namespace :remote do
|
24
|
-
task :default, [:hosts, :git, :cd, :branch, :script] do |t, args|
|
25
|
-
unless [args[:hosts], args[:git]].all?
|
26
|
-
puts 'please fill your arguments like:'
|
27
|
-
puts " > rake app:install:remote[#{args.names.join(',').upcase}]"
|
28
|
-
exit(1)
|
29
|
-
end
|
30
|
-
|
31
|
-
cd = args[:cd] || '~'
|
32
|
-
branch = args[:branch] || 'master'
|
33
|
-
tmp = "app-deploy-#{Time.now.to_i}"
|
34
|
-
|
35
|
-
chdir = "cd #{cd}"
|
36
|
-
clone = "git clone #{args[:git]} /tmp/#{tmp}"
|
37
|
-
setup = "find /tmp/#{tmp} -maxdepth 1 '!' -name #{tmp} -exec mv -f '{}' #{cd} ';'"
|
38
|
-
rmdir = "rmdir /tmp/#{tmp}"
|
39
|
-
check = "git checkout #{branch}"
|
40
|
-
|
41
|
-
script = "#{chdir}; #{clone}; #{setup}; #{rmdir}; #{check}; #{args[:script]}"
|
42
|
-
Rake::Task['app:install:remote:sh'].invoke(args[:hosts], script)
|
43
|
-
end
|
44
|
-
|
45
|
-
desc 'invoke a shell script on remote machines'
|
46
|
-
task :sh, [:hosts, :script] do |t, args|
|
47
|
-
args[:hosts].split(',').map{ |host|
|
48
|
-
script = args[:script].gsub('"', '\\"')
|
49
|
-
Thread.new{ sh "ssh #{host} \"#{script}\"" }
|
50
|
-
}.each(&:join)
|
51
|
-
end
|
52
|
-
|
53
|
-
desc 'upload a file to remote machines'
|
54
|
-
task :upload, [:file, :hosts, :path] do |t, args|
|
55
|
-
args[:hosts].split(',').each{ |host|
|
56
|
-
sh "scp #{args[:file]} #{host}:#{args[:path]}"
|
57
|
-
}
|
58
|
-
end
|
59
|
-
|
60
|
-
desc 'create a user on remote machines'
|
61
|
-
task :useradd, [:user, :hosts, :script] do |t, args|
|
62
|
-
useradd = "sudo useradd -m #{args[:user]}"
|
63
|
-
args[:hosts].split(',').each{ |host|
|
64
|
-
script = "#{useradd}; #{args[:script]}".gsub('"', '\\"')
|
65
|
-
sh "ssh #{host} \"#{script}\""
|
66
|
-
}
|
67
|
-
end
|
68
|
-
|
69
|
-
desc 'upload a tarball and untar to user home, then useradd'
|
70
|
-
task :setup, [:user, :file, :hosts, :script] do |t, args|
|
71
|
-
path = "/tmp/app-deploy-#{Time.now.to_i}"
|
72
|
-
Rake::Task['app:install:remote:upload'].invoke(
|
73
|
-
args[:file], args[:hosts], path)
|
74
|
-
|
75
|
-
script = "sudo -u #{args[:user]} tar -zxf #{path}" +
|
76
|
-
" -C /home/#{args[:user]};" +
|
77
|
-
" rm #{path}; #{args[:script]}"
|
78
|
-
Rake::Task['app:install:remote:useradd'].invoke(
|
79
|
-
args[:user], args[:hosts], script)
|
80
|
-
end
|
81
|
-
|
82
|
-
end # of remote
|
83
23
|
end # of install
|
84
24
|
end # of app
|
data/lib/app-deploy/remote.rake
CHANGED
@@ -1,10 +1,10 @@
|
|
1
1
|
|
2
2
|
namespace :app do
|
3
3
|
namespace :remote do
|
4
|
-
task :
|
4
|
+
task :install, [:hosts, :git, :cd, :branch, :script] do |t, args|
|
5
5
|
unless [args[:hosts], args[:git]].all?
|
6
6
|
puts 'please fill your arguments like:'
|
7
|
-
puts " > rake app:install
|
7
|
+
puts " > rake app:remote:install[#{args.names.join(',').upcase}]"
|
8
8
|
exit(1)
|
9
9
|
end
|
10
10
|
|
@@ -19,7 +19,7 @@ namespace :app do
|
|
19
19
|
check = "git checkout #{branch}"
|
20
20
|
|
21
21
|
script = "#{chdir}; #{clone}; #{setup}; #{rmdir}; #{check}; #{args[:script]}"
|
22
|
-
Rake::Task['app:
|
22
|
+
Rake::Task['app:remote:sh'].invoke(args[:hosts], script)
|
23
23
|
end
|
24
24
|
|
25
25
|
desc 'invoke a shell script on remote machines'
|
@@ -49,13 +49,13 @@ namespace :app do
|
|
49
49
|
desc 'upload a tarball and untar to user home, then useradd'
|
50
50
|
task :setup, [:user, :file, :hosts, :script] do |t, args|
|
51
51
|
path = "/tmp/app-deploy-#{Time.now.to_i}"
|
52
|
-
Rake::Task['app:
|
52
|
+
Rake::Task['app:remote:upload'].invoke(
|
53
53
|
args[:file], args[:hosts], path)
|
54
54
|
|
55
55
|
script = "sudo -u #{args[:user]} tar -zxf #{path}" +
|
56
56
|
" -C /home/#{args[:user]};" +
|
57
57
|
" rm #{path}; #{args[:script]}"
|
58
|
-
Rake::Task['app:
|
58
|
+
Rake::Task['app:remote:useradd'].invoke(
|
59
59
|
args[:user], args[:hosts], script)
|
60
60
|
end
|
61
61
|
|
data/lib/app-deploy/unicorn.rake
CHANGED
@@ -4,9 +4,14 @@ ns = namespace :app do
|
|
4
4
|
|
5
5
|
desc 'start unicorn, default config is config/unicorn.rb'
|
6
6
|
task :start, [:config, :env, :unicorn] do |t, args|
|
7
|
-
|
8
|
-
|
9
|
-
|
7
|
+
env = if args[:env]
|
8
|
+
" -E #{args[:env]}"
|
9
|
+
else
|
10
|
+
''
|
11
|
+
end
|
12
|
+
|
13
|
+
script = "#{args[:unicorn] || 'unicorn'} -D" +
|
14
|
+
" -c #{args[:config] || 'config/unicorn.rb'}#{env}"
|
10
15
|
Rake::Task['app:signal:start'].invoke(script, 'tmp/pids/unicorn.pid')
|
11
16
|
end
|
12
17
|
|
data/lib/app-deploy/version.rb
CHANGED
metadata
CHANGED
@@ -1,7 +1,12 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: app-deploy
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
|
4
|
+
prerelease: false
|
5
|
+
segments:
|
6
|
+
- 0
|
7
|
+
- 8
|
8
|
+
- 0
|
9
|
+
version: 0.8.0
|
5
10
|
platform: ruby
|
6
11
|
authors:
|
7
12
|
- "Lin Jen-Shin (aka godfat \xE7\x9C\x9F\xE5\xB8\xB8)"
|
@@ -9,19 +14,23 @@ autorequire:
|
|
9
14
|
bindir: bin
|
10
15
|
cert_chain: []
|
11
16
|
|
12
|
-
date:
|
17
|
+
date: 2010-03-22 00:00:00 +08:00
|
13
18
|
default_executable:
|
14
19
|
dependencies:
|
15
20
|
- !ruby/object:Gem::Dependency
|
16
21
|
name: bones
|
17
|
-
|
18
|
-
|
19
|
-
version_requirements: !ruby/object:Gem::Requirement
|
22
|
+
prerelease: false
|
23
|
+
requirement: &id001 !ruby/object:Gem::Requirement
|
20
24
|
requirements:
|
21
25
|
- - ">="
|
22
26
|
- !ruby/object:Gem::Version
|
23
|
-
|
24
|
-
|
27
|
+
segments:
|
28
|
+
- 3
|
29
|
+
- 4
|
30
|
+
- 1
|
31
|
+
version: 3.4.1
|
32
|
+
type: :development
|
33
|
+
version_requirements: *id001
|
25
34
|
description: " rake tasks for deployment"
|
26
35
|
email: godfat (XD) godfat.org
|
27
36
|
executables: []
|
@@ -35,9 +44,13 @@ extra_rdoc_files:
|
|
35
44
|
- TODO
|
36
45
|
- app-deploy.gemspec
|
37
46
|
- example/Rakefile
|
47
|
+
- example/bin/README
|
38
48
|
- example/bin/install.sh
|
39
49
|
- example/bin/remote_install.sh
|
50
|
+
- example/bin/remote_restart.sh
|
51
|
+
- example/bin/remote_sh.sh
|
40
52
|
- example/bin/remote_update.sh
|
53
|
+
- example/bin/restart.sh
|
41
54
|
- example/bin/start.sh
|
42
55
|
- example/bin/update.sh
|
43
56
|
- example/daemon_cluster.yaml
|
@@ -63,9 +76,13 @@ files:
|
|
63
76
|
- TODO
|
64
77
|
- app-deploy.gemspec
|
65
78
|
- example/Rakefile
|
79
|
+
- example/bin/README
|
66
80
|
- example/bin/install.sh
|
67
81
|
- example/bin/remote_install.sh
|
82
|
+
- example/bin/remote_restart.sh
|
83
|
+
- example/bin/remote_sh.sh
|
68
84
|
- example/bin/remote_update.sh
|
85
|
+
- example/bin/restart.sh
|
69
86
|
- example/bin/start.sh
|
70
87
|
- example/bin/update.sh
|
71
88
|
- example/daemon_cluster.yaml
|
@@ -104,18 +121,20 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
104
121
|
requirements:
|
105
122
|
- - ">="
|
106
123
|
- !ruby/object:Gem::Version
|
124
|
+
segments:
|
125
|
+
- 0
|
107
126
|
version: "0"
|
108
|
-
version:
|
109
127
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
110
128
|
requirements:
|
111
129
|
- - ">="
|
112
130
|
- !ruby/object:Gem::Version
|
131
|
+
segments:
|
132
|
+
- 0
|
113
133
|
version: "0"
|
114
|
-
version:
|
115
134
|
requirements: []
|
116
135
|
|
117
136
|
rubyforge_project: app-deploy
|
118
|
-
rubygems_version: 1.3.
|
137
|
+
rubygems_version: 1.3.6
|
119
138
|
signing_key:
|
120
139
|
specification_version: 3
|
121
140
|
summary: rake tasks for deployment
|