dolphin 0.0.3 → 0.0.4
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/README.md +78 -1
- data/dolphin.gemspec +2 -2
- data/lib/dolphin/lock.rb +1 -2
- data/lib/dolphin/version.rb +1 -1
- data/lib/generators/dolphin/install_generator.rb +14 -0
- data/lib/generators/dolphin/templates/dolphin +92 -0
- metadata +6 -5
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f57b22721a91a02e69fcd6d356ece041a59215cc
|
4
|
+
data.tar.gz: 68fa17486f27058ec05277c34dd814f12e242ef1
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 4f93b35088ea62118f1c33fa44f2c5f8fca4ba43de04e90f1f4b4717685b891f937c09a731d1581605cf6ad60c1c2adc7e949e40ce2132c22cfd0d4153fa2506
|
7
|
+
data.tar.gz: e70d4ffcf6d3ab66d9d79d36d0a4fbf4258591d5a347caef49f723b132e20e470831c05b5d9c7fd7a6270155b4413aed46b0df8a1cf4ba92f18dfee1226d66f6
|
data/README.md
CHANGED
@@ -16,9 +16,78 @@ Or install it yourself as:
|
|
16
16
|
|
17
17
|
$ gem install dolphin
|
18
18
|
|
19
|
+
## Rails generator
|
20
|
+
|
21
|
+
Run generator from your Rails application:
|
22
|
+
|
23
|
+
$ bin/rails g dolphin:install
|
24
|
+
|
25
|
+
This will create an executable script as bin/dolphin.
|
26
|
+
|
27
|
+
## Configuration
|
28
|
+
|
29
|
+
Edit the bin/dolphin script generated as above to adjust settings. Please refer to detailed comments inside the script. Minimum config would require the following:
|
30
|
+
|
31
|
+
# settings require user input
|
32
|
+
# -----------------------------
|
33
|
+
# name of this application
|
34
|
+
@application = 'best_app'
|
35
|
+
# on server, the user account for deploying
|
36
|
+
@user = 'deploy'
|
37
|
+
# location of git repository
|
38
|
+
@github = "git@github.com:nengxu/dolphin.git"
|
39
|
+
# which ruby, for chruby
|
40
|
+
@ruby_version = 'ruby-2.0.0-p195'
|
41
|
+
|
42
|
+
case @env
|
43
|
+
when 'qa'
|
44
|
+
@servers = [
|
45
|
+
'qa01.best_app.com',
|
46
|
+
'qa02.best_app.com',
|
47
|
+
]
|
48
|
+
when 'production'
|
49
|
+
@servers = [
|
50
|
+
'prod01.best_app.com',
|
51
|
+
'prod02.best_app.com',
|
52
|
+
]
|
53
|
+
else # @env == 'alpha'
|
54
|
+
# list of servers for this environment
|
55
|
+
@servers = [
|
56
|
+
'dev01.best_app.com',
|
57
|
+
'dev02.best_app.com',
|
58
|
+
]
|
59
|
+
# customized branch, default is the same as @env
|
60
|
+
@branch = 'master'
|
61
|
+
end
|
62
|
+
|
19
63
|
## Usage
|
20
64
|
|
21
|
-
|
65
|
+
Show top level command modules:
|
66
|
+
|
67
|
+
$ bin/dolphin
|
68
|
+
|
69
|
+
Show subcommands under one module:
|
70
|
+
|
71
|
+
$ bin/dolphin deploy
|
72
|
+
$ bin/dolphin git
|
73
|
+
$ bin/dolphin lock
|
74
|
+
$ bin/dolphin nginx
|
75
|
+
$ bin/dolphin puma
|
76
|
+
$ bin/dolphin setup
|
77
|
+
|
78
|
+
Execute a subcommand, for example, normal deployment:
|
79
|
+
|
80
|
+
$ bin/dolphin deploy go -e production
|
81
|
+
|
82
|
+
## Related gems
|
83
|
+
|
84
|
+
* [capistrano]
|
85
|
+
* [chruby]
|
86
|
+
* [git-deploy]
|
87
|
+
* [hell]
|
88
|
+
* [mina]
|
89
|
+
* [moonshine]
|
90
|
+
* [strano]
|
22
91
|
|
23
92
|
## Contributing
|
24
93
|
|
@@ -27,3 +96,11 @@ TODO: Write usage instructions here
|
|
27
96
|
3. Commit your changes (`git commit -am 'Add some feature'`)
|
28
97
|
4. Push to the branch (`git push origin my-new-feature`)
|
29
98
|
5. Create new Pull Request
|
99
|
+
|
100
|
+
[capistrano]: https://github.com/capistrano/capistrano
|
101
|
+
[chruby]: https://github.com/postmodern/chruby
|
102
|
+
[git-deploy]: https://github.com/mislav/git-deploy
|
103
|
+
[hell]: https://github.com/seatgeek/hell
|
104
|
+
[mina]: https://github.com/nadarei/mina
|
105
|
+
[moonshine]: https://github.com/railsmachine/moonshine
|
106
|
+
[strano]: https://github.com/joelmoss/strano
|
data/dolphin.gemspec
CHANGED
@@ -6,11 +6,11 @@ require 'dolphin/version'
|
|
6
6
|
Gem::Specification.new do |spec|
|
7
7
|
spec.name = "dolphin"
|
8
8
|
spec.version = Dolphin::VERSION
|
9
|
-
spec.authors = ["Neng Xu
|
9
|
+
spec.authors = ["Neng Xu"]
|
10
10
|
spec.email = ["neng2.xu2@gmail.com"]
|
11
11
|
spec.description = %q{Dolphin: deploy smartly}
|
12
12
|
spec.summary = %q{Dolphin: deploy smartly}
|
13
|
-
spec.homepage = ""
|
13
|
+
spec.homepage = "https://github.com/nengxu/dolphin"
|
14
14
|
spec.license = "MIT"
|
15
15
|
|
16
16
|
spec.files = `git ls-files`.split($/)
|
data/lib/dolphin/lock.rb
CHANGED
@@ -15,8 +15,7 @@ class Dolphin::Lock < Dolphin::Base
|
|
15
15
|
|
16
16
|
desc "create", "Create lock"
|
17
17
|
def create
|
18
|
-
|
19
|
-
command = "echo '#{lock_message}' > #{@lock_file}"
|
18
|
+
command = "echo '#{@lock_message}' > #{@lock_file}"
|
20
19
|
puts capture(command, @lead_server)
|
21
20
|
end
|
22
21
|
|
data/lib/dolphin/version.rb
CHANGED
@@ -0,0 +1,14 @@
|
|
1
|
+
require 'rails/generators'
|
2
|
+
|
3
|
+
class Dolphin::InstallGenerator < Rails::Generators::Base
|
4
|
+
source_root File.expand_path("../templates", __FILE__)
|
5
|
+
|
6
|
+
def setup
|
7
|
+
target = "bin/dolphin"
|
8
|
+
copy_file "dolphin", target
|
9
|
+
# make it executable
|
10
|
+
chmod(target, 0755)
|
11
|
+
puts "Now edit bin/dolphin to adjust deployment settings\nThen run bin/dolphin to deploy."
|
12
|
+
end
|
13
|
+
|
14
|
+
end
|
@@ -0,0 +1,92 @@
|
|
1
|
+
#!/usr/bin/env ruby
|
2
|
+
require "dolphin"
|
3
|
+
|
4
|
+
class Dolphin::Base
|
5
|
+
|
6
|
+
private
|
7
|
+
|
8
|
+
# deployment environments
|
9
|
+
def env
|
10
|
+
# ===================================
|
11
|
+
# common options for all environments
|
12
|
+
# ===================================
|
13
|
+
|
14
|
+
# settings require user input
|
15
|
+
# -----------------------------
|
16
|
+
# name of this application
|
17
|
+
@application = 'best_app'
|
18
|
+
# on server, the user account for deploying
|
19
|
+
@user = 'deploy'
|
20
|
+
# location of git repository
|
21
|
+
@github = "git@github.com:nengxu/dolphin.git"
|
22
|
+
# which ruby, for chruby
|
23
|
+
@ruby_version = 'ruby-2.0.0-p195'
|
24
|
+
|
25
|
+
# settings with default values
|
26
|
+
# -----------------------------
|
27
|
+
# on servers, the directory where Rails applications reside
|
28
|
+
@app_dir = '/rails'
|
29
|
+
# on servers under @app_dir, the directory where this application resides
|
30
|
+
@deploy_dir = "#{@app_dir}/#{@application}"
|
31
|
+
# puma related settings
|
32
|
+
@sockets = "#{@deploy_dir}/tmp/sockets"
|
33
|
+
@pids = "#{@deploy_dir}/tmp/pids"
|
34
|
+
|
35
|
+
# internal variables, no need to change by user
|
36
|
+
# -----------------------------
|
37
|
+
# ssh sessions
|
38
|
+
@sessions = {}
|
39
|
+
|
40
|
+
# ===================================
|
41
|
+
# environment specific options
|
42
|
+
# ===================================
|
43
|
+
|
44
|
+
# when deploy, need to specify the environment by using "-e env_name"
|
45
|
+
# for example: bin/dolphin deploy go -e alpha
|
46
|
+
|
47
|
+
# @env is the environment as specified
|
48
|
+
# @branch is the git branch for this environment
|
49
|
+
# by default @branch is the same as @env
|
50
|
+
@env = @branch =options[:env]
|
51
|
+
|
52
|
+
case @env
|
53
|
+
when 'qa'
|
54
|
+
@servers = [
|
55
|
+
'qa01.best_app.com',
|
56
|
+
'qa02.best_app.com',
|
57
|
+
]
|
58
|
+
when 'production'
|
59
|
+
@servers = [
|
60
|
+
'prod01.best_app.com',
|
61
|
+
'prod02.best_app.com',
|
62
|
+
]
|
63
|
+
else # @env == 'alpha'
|
64
|
+
# list of servers for this environment
|
65
|
+
@servers = [
|
66
|
+
'dev01.best_app.com',
|
67
|
+
'dev02.best_app.com',
|
68
|
+
]
|
69
|
+
# customized branch, default is the same as @env
|
70
|
+
@branch = 'master'
|
71
|
+
end
|
72
|
+
|
73
|
+
# ===================================
|
74
|
+
# settings to avoid simultaneous deployments
|
75
|
+
# ===================================
|
76
|
+
|
77
|
+
# current deployment will abort when another deployment is still in progress
|
78
|
+
|
79
|
+
# lead server for lock status
|
80
|
+
@lead_server = @servers[0]
|
81
|
+
# name and location of the lock file
|
82
|
+
@lock_file = "#{@deploy_dir}/tmp/pids/dolphin.lock"
|
83
|
+
# format of date/time for lock file
|
84
|
+
@deploy_date = Time.now.strftime("%m%d%H%M")
|
85
|
+
# custom content for the lock file
|
86
|
+
@lock_message = "Deploy started at #{@deploy_date} in progress\n"
|
87
|
+
|
88
|
+
end
|
89
|
+
end
|
90
|
+
|
91
|
+
# start the CLI
|
92
|
+
Dolphin::CLI.start
|
metadata
CHANGED
@@ -1,15 +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.0.4
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
|
-
-
|
8
|
-
Neng Xu
|
7
|
+
- Neng Xu
|
9
8
|
autorequire:
|
10
9
|
bindir: bin
|
11
10
|
cert_chain: []
|
12
|
-
date: 2013-06-
|
11
|
+
date: 2013-06-14 00:00:00.000000000 Z
|
13
12
|
dependencies:
|
14
13
|
- !ruby/object:Gem::Dependency
|
15
14
|
name: thor
|
@@ -99,7 +98,9 @@ files:
|
|
99
98
|
- lib/dolphin/deploy.rb
|
100
99
|
- lib/dolphin/lock.rb
|
101
100
|
- lib/dolphin/version.rb
|
102
|
-
|
101
|
+
- lib/generators/dolphin/install_generator.rb
|
102
|
+
- lib/generators/dolphin/templates/dolphin
|
103
|
+
homepage: https://github.com/nengxu/dolphin
|
103
104
|
licenses:
|
104
105
|
- MIT
|
105
106
|
metadata: {}
|