dolphin 0.0.9 → 0.1.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.
- checksums.yaml +4 -4
- data/README.md +36 -12
- data/lib/dolphin/base.rb +6 -2
- data/lib/dolphin/setup.rb +28 -5
- data/lib/dolphin/version.rb +1 -1
- data/lib/generators/dolphin/templates/dolphin +22 -16
- metadata +2 -2
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 0cdebd25f15c7ca3178f5b20d2fcf659ddac74c1
|
4
|
+
data.tar.gz: bd3f80a28f9c699457432c035aab9d56f741aa27
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 9a8cbd6cda2c393fc43ec56837d8945c6fa5158328b7aeddadc8a8c6143c3b0215c6e716527ac1eee52b37ad0cf427ba82047c331a0e684eb6cacfe781f1e408
|
7
|
+
data.tar.gz: 40c74e0f464376b848e2e5a099a07eb7abbbe4a5a43245451404e70238ac3d12c03d15da0edbaa83afe0109610619d31f05a7062fb30d7b66bc3feb513b9da8d
|
data/README.md
CHANGED
@@ -45,26 +45,28 @@ Edit the bin/dolphin script generated as above to adjust settings. Please refer
|
|
45
45
|
@application = 'best_app'
|
46
46
|
# on server, the user account for deploying
|
47
47
|
@user = 'deploy'
|
48
|
+
# on server, the user group for deploying
|
49
|
+
@user_group = 'deploy'
|
48
50
|
# location of git repository
|
49
51
|
@github = "git@github.com:nengxu/dolphin.git"
|
50
52
|
|
51
53
|
case @env
|
52
54
|
when 'qa'
|
53
|
-
@
|
54
|
-
'qa01.best_app.com',
|
55
|
-
'qa02.best_app.com',
|
56
|
-
|
55
|
+
@server_hash = {
|
56
|
+
q1: 'qa01.best_app.com',
|
57
|
+
q2: 'qa02.best_app.com',
|
58
|
+
}
|
57
59
|
when 'production'
|
58
|
-
@
|
59
|
-
'prod01.best_app.com',
|
60
|
-
'prod02.best_app.com',
|
61
|
-
|
60
|
+
@server_hash = {
|
61
|
+
p1: 'prod01.best_app.com',
|
62
|
+
p2: 'prod02.best_app.com',
|
63
|
+
}
|
62
64
|
else # @env == 'alpha'
|
63
65
|
# list of servers for this environment
|
64
|
-
@
|
65
|
-
'dev01.best_app.com',
|
66
|
-
'dev02.best_app.com',
|
67
|
-
|
66
|
+
@server_hash = {
|
67
|
+
d1: 'dev01.best_app.com',
|
68
|
+
d2: 'dev02.best_app.com',
|
69
|
+
}
|
68
70
|
# customized branch, default is the same as @env
|
69
71
|
@branch = 'master'
|
70
72
|
end
|
@@ -199,6 +201,28 @@ For example, you can start puma in production mode on your local machine:
|
|
199
201
|
|
200
202
|
bin/dolphin puma start -e production -l
|
201
203
|
|
204
|
+
### Deploy to one specific server
|
205
|
+
|
206
|
+
Sometimes we need to take some actions on only one specific server. Just pass the --target (or -t for short) option when issue command. Notice that in @server_hash, we difine a key-value pair for each server. So we only need to pass the key for that specific server as the -t option.
|
207
|
+
|
208
|
+
bin/dolphin nginx conf -t q2
|
209
|
+
|
210
|
+
Relevant settings in bin/dolphin are:
|
211
|
+
|
212
|
+
case @env
|
213
|
+
when 'qa'
|
214
|
+
@server_hash = {
|
215
|
+
q1: 'qa01.best_app.com',
|
216
|
+
q2: 'qa02.best_app.com',
|
217
|
+
}
|
218
|
+
|
219
|
+
# apply to one target server
|
220
|
+
if options[:target]
|
221
|
+
@servers = [
|
222
|
+
@server_hash[options[:target].to_sym],
|
223
|
+
]
|
224
|
+
end
|
225
|
+
|
202
226
|
## Extend with custom modules
|
203
227
|
|
204
228
|
To extend dolphin's functionality with your custom modules is easy. It is Ruby anyway. For example, to add Centos related functions:
|
data/lib/dolphin/base.rb
CHANGED
@@ -10,8 +10,12 @@ class Dolphin::Base < Thor
|
|
10
10
|
# class options
|
11
11
|
# =============================================================================
|
12
12
|
|
13
|
-
|
14
|
-
class_option :
|
13
|
+
# deploy environment
|
14
|
+
class_option :env, aliases: '-e', type: :string, default: 'alpha'
|
15
|
+
# deploy to one specific target server
|
16
|
+
class_option :target, aliases: '-t', type: :string, default: nil
|
17
|
+
# deploy to localhost
|
18
|
+
class_option :local, aliases: '-l', type: :boolean, default: false
|
15
19
|
|
16
20
|
def initialize(args=[], options={}, config={})
|
17
21
|
super(args, options, config)
|
data/lib/dolphin/setup.rb
CHANGED
@@ -1,8 +1,8 @@
|
|
1
1
|
# set up target servers
|
2
2
|
class Dolphin::Setup < Dolphin::Base
|
3
3
|
|
4
|
-
desc "chruby", "install chruby"
|
5
|
-
def chruby
|
4
|
+
desc "chruby", "install/update chruby"
|
5
|
+
def chruby(version='v0.3.6')
|
6
6
|
menu = [
|
7
7
|
"
|
8
8
|
# git clone
|
@@ -10,8 +10,10 @@ class Dolphin::Setup < Dolphin::Base
|
|
10
10
|
cd chruby
|
11
11
|
# update
|
12
12
|
git fetch
|
13
|
+
git checkout master
|
14
|
+
git rebase origin/master
|
13
15
|
# checkout tag
|
14
|
-
git checkout
|
16
|
+
git checkout #{version}
|
15
17
|
# install
|
16
18
|
sudo make install
|
17
19
|
",
|
@@ -20,7 +22,19 @@ class Dolphin::Setup < Dolphin::Base
|
|
20
22
|
execute menu
|
21
23
|
end
|
22
24
|
|
23
|
-
desc "
|
25
|
+
desc "app_dir", "set up app dir"
|
26
|
+
def app_dir
|
27
|
+
menu = [
|
28
|
+
"
|
29
|
+
sudo mkdir -p #{@app_dir}
|
30
|
+
sudo chown #{@user}:#{@user_group} #{@app_dir}
|
31
|
+
",
|
32
|
+
]
|
33
|
+
|
34
|
+
execute menu
|
35
|
+
end
|
36
|
+
|
37
|
+
desc "ruby_install", "install/update ruby_install"
|
24
38
|
def ruby_install(version='master')
|
25
39
|
menu = [
|
26
40
|
"
|
@@ -29,6 +43,8 @@ class Dolphin::Setup < Dolphin::Base
|
|
29
43
|
cd ruby-install
|
30
44
|
# update
|
31
45
|
git fetch
|
46
|
+
git checkout master
|
47
|
+
git rebase origin/master
|
32
48
|
# checkout tag
|
33
49
|
git checkout #{version}
|
34
50
|
# install
|
@@ -41,6 +57,13 @@ class Dolphin::Setup < Dolphin::Base
|
|
41
57
|
|
42
58
|
desc "repo", "repository set up."
|
43
59
|
def repo
|
60
|
+
# branch 'master' is always created by git
|
61
|
+
if @branch == 'master'
|
62
|
+
cmd = "git checkout master"
|
63
|
+
else
|
64
|
+
cmd = "git checkout -b #{@branch} origin/#{@branch}"
|
65
|
+
end
|
66
|
+
|
44
67
|
menu = [
|
45
68
|
"
|
46
69
|
# init git repository
|
@@ -50,7 +73,7 @@ class Dolphin::Setup < Dolphin::Base
|
|
50
73
|
"
|
51
74
|
# set up tracking branch
|
52
75
|
cd #{@deploy_dir}
|
53
|
-
|
76
|
+
#{cmd}
|
54
77
|
",
|
55
78
|
]
|
56
79
|
|
data/lib/dolphin/version.rb
CHANGED
@@ -17,6 +17,8 @@ class Dolphin::Base
|
|
17
17
|
@application = 'best_app'
|
18
18
|
# on server, the user account for deploying
|
19
19
|
@user = 'deploy'
|
20
|
+
# on server, the user group for deploying
|
21
|
+
@user_group = 'deploy'
|
20
22
|
# location of git repository
|
21
23
|
@github = "git@github.com:nengxu/dolphin.git"
|
22
24
|
|
@@ -48,29 +50,26 @@ class Dolphin::Base
|
|
48
50
|
@env = @branch =options[:env]
|
49
51
|
|
50
52
|
case @env
|
51
|
-
when 'local'
|
52
|
-
@servers = [
|
53
|
-
'localhost',
|
54
|
-
]
|
55
53
|
when 'qa'
|
56
|
-
@
|
57
|
-
'qa01.best_app.com',
|
58
|
-
'qa02.best_app.com',
|
59
|
-
|
54
|
+
@server_hash = {
|
55
|
+
q1: 'qa01.best_app.com',
|
56
|
+
q2: 'qa02.best_app.com',
|
57
|
+
}
|
60
58
|
when 'production'
|
61
|
-
@
|
62
|
-
'prod01.best_app.com',
|
63
|
-
'prod02.best_app.com',
|
64
|
-
|
59
|
+
@server_hash = {
|
60
|
+
p1: 'prod01.best_app.com',
|
61
|
+
p2: 'prod02.best_app.com',
|
62
|
+
}
|
65
63
|
else # @env == 'alpha'
|
66
64
|
# list of servers for this environment
|
67
|
-
@
|
68
|
-
'dev01.best_app.com',
|
69
|
-
'dev02.best_app.com',
|
70
|
-
|
65
|
+
@server_hash = {
|
66
|
+
d1: 'dev01.best_app.com',
|
67
|
+
d2: 'dev02.best_app.com',
|
68
|
+
}
|
71
69
|
# customized branch, default is the same as @env
|
72
70
|
@branch = 'master'
|
73
71
|
end
|
72
|
+
@servers = @server_hash.values
|
74
73
|
|
75
74
|
# running in local mode
|
76
75
|
if options[:local]
|
@@ -83,6 +82,13 @@ class Dolphin::Base
|
|
83
82
|
]
|
84
83
|
end
|
85
84
|
|
85
|
+
# apply to one target server
|
86
|
+
if options[:target]
|
87
|
+
@servers = [
|
88
|
+
@server_hash[options[:target].to_sym],
|
89
|
+
]
|
90
|
+
end
|
91
|
+
|
86
92
|
# ===================================
|
87
93
|
# settings to avoid simultaneous deployments
|
88
94
|
# ===================================
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: dolphin
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.0
|
4
|
+
version: 0.1.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Neng Xu
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2013-07-
|
11
|
+
date: 2013-07-16 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: thor
|