mina 1.0.0.beta2 → 1.0.0.beta3
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/CHANGELOG.md +384 -0
- data/Readme.md +3 -3
- data/data/deploy.rb +8 -6
- data/data/deploy.sh.erb +1 -1
- data/docs/3rd_party_plugins.md +2 -0
- data/docs/getting_started.md +22 -0
- data/docs/migrating.md +1 -1
- data/lib/mina.rb +3 -3
- data/lib/mina/application.rb +1 -0
- data/lib/mina/backend/remote.rb +6 -6
- data/lib/mina/commands.rb +4 -3
- data/lib/mina/configuration.rb +2 -1
- data/lib/mina/dsl.rb +8 -1
- data/lib/mina/helpers/internal.rb +8 -3
- data/lib/mina/helpers/output.rb +4 -0
- data/lib/mina/runner/pretty.rb +1 -1
- data/lib/mina/runner/printer.rb +1 -0
- data/lib/mina/version.rb +1 -1
- data/mina.gemspec +1 -1
- data/spec/lib/mina/application_spec.rb +35 -35
- data/spec/lib/mina/backend/local_spec.rb +1 -0
- data/spec/lib/mina/backend/remote_spec.rb +2 -0
- data/spec/lib/mina/commands_spec.rb +6 -7
- data/spec/lib/mina/configuration_spec.rb +1 -1
- data/spec/lib/mina/helpers/internal_spec.rb +3 -1
- data/spec/lib/mina/helpers/output_spec.rb +5 -20
- data/spec/lib/mina/runner_spec.rb +1 -4
- data/spec/spec_helper.rb +14 -3
- data/spec/support/outputs/bundle_clean.txt +2 -0
- data/spec/support/outputs/bundle_install.txt +2 -0
- data/spec/support/outputs/chruby.txt +9 -0
- data/spec/support/outputs/console.txt +1 -0
- data/spec/support/outputs/deploy_cleanup.txt +2 -0
- data/spec/support/outputs/deploy_force_unlock.txt +2 -0
- data/spec/support/outputs/deploy_link_shared_paths.txt +13 -0
- data/spec/support/outputs/git_clone.txt +1 -0
- data/spec/support/outputs/git_clone_commit.txt +1 -0
- data/spec/support/outputs/git_revision.txt +1 -0
- data/spec/support/outputs/log.txt +1 -0
- data/spec/support/outputs/rails_assets_precompile.txt +1 -0
- data/spec/support/outputs/rails_db_create.txt +2 -0
- data/spec/support/outputs/rails_db_migrate.txt +1 -0
- data/spec/support/outputs/rails_db_rollback.txt +2 -0
- data/spec/support/outputs/rbenv_load.txt +1 -0
- data/spec/support/outputs/rollback.txt +2 -0
- data/spec/support/outputs/run.txt +1 -0
- data/spec/support/outputs/rvm_use.txt +1 -0
- data/spec/support/outputs/ry.txt +15 -0
- data/spec/support/outputs/setup.txt +14 -0
- data/spec/support/outputs/ssh_keyscan.txt +3 -0
- data/spec/support/rake_example_group.rb +30 -0
- data/spec/tasks/bundler_spec.rb +15 -0
- data/spec/tasks/default_spec.rb +35 -0
- data/spec/tasks/deploy_spec.rb +33 -0
- data/spec/tasks/git_spec.rb +21 -0
- data/spec/tasks/init_spec.rb +16 -0
- data/spec/tasks/rails_spec.rb +45 -0
- data/spec/tasks/ruby_managers_spec.rb +33 -0
- data/tasks/mina/bundler.rb +5 -5
- data/tasks/mina/chruby.rb +8 -10
- data/tasks/mina/default.rb +5 -1
- data/tasks/mina/deploy.rb +33 -29
- data/tasks/mina/git.rb +20 -8
- data/tasks/mina/install.rb +1 -0
- data/tasks/mina/rails.rb +15 -15
- data/tasks/mina/rbenv.rb +6 -8
- data/tasks/mina/rvm.rb +16 -20
- data/tasks/mina/ry.rb +10 -14
- data/test_env/config/deploy.rb +5 -5
- metadata +35 -6
- data/spec/lib/mina_spec.rb +0 -7
- data/spec/support/run_helper.rb +0 -36
data/data/deploy.sh.erb
CHANGED
@@ -32,7 +32,7 @@ fi
|
|
32
32
|
|
33
33
|
# Determine $previous_path and other variables
|
34
34
|
[ -h "<%= fetch(:current_path) %>" ] && [ -d "<%= fetch(:current_path) %>" ] && previous_path=$(cd "<%= fetch(:current_path) %>" >/dev/null && pwd -LP)
|
35
|
-
build_path="./tmp/build
|
35
|
+
build_path="./tmp/build-$(date +%s)$RANDOM"
|
36
36
|
|
37
37
|
version="<%= next_version %>"
|
38
38
|
release_path="<%= fetch(:releases_path) %>/$version"
|
data/docs/3rd_party_plugins.md
CHANGED
data/docs/getting_started.md
CHANGED
@@ -30,6 +30,28 @@ set :domain, 'your.server.com'
|
|
30
30
|
set :deploy_to, '/var/www/flipstack.com'
|
31
31
|
...
|
32
32
|
```
|
33
|
+
**Notes:** You may be using a ruby versioning tool (rbenv or RVM) to manage ruby and gems. If you are using one of them, don't forget to uncomment these settings:
|
34
|
+
```
|
35
|
+
...
|
36
|
+
require 'mina/bundler'
|
37
|
+
require 'mina/rails'
|
38
|
+
require 'mina/git'
|
39
|
+
# require 'mina/rbenv' # for rbenv support. (http://rbenv.org)
|
40
|
+
# require 'mina/rvm' # for rvm support. (http://rvm.io)
|
41
|
+
...
|
42
|
+
```
|
43
|
+
``` ruby
|
44
|
+
...
|
45
|
+
task :environment do
|
46
|
+
# If you're using rbenv, use this to load the rbenv environment.
|
47
|
+
# Be sure to commit your .ruby-version or .rbenv-version to your repository.
|
48
|
+
# invoke :'rbenv:load'
|
49
|
+
|
50
|
+
# For those using RVM, use this to load an RVM version@gemset.
|
51
|
+
# invoke :'rvm:use', 'ruby-1.9.3-p125@default'
|
52
|
+
end
|
53
|
+
...
|
54
|
+
```
|
33
55
|
|
34
56
|
### Step 2: Run 'mina setup'
|
35
57
|
|
data/docs/migrating.md
CHANGED
@@ -9,7 +9,7 @@ Migrating from 0.3.x to 1.0
|
|
9
9
|
* `in_directory` -> `in_path` # wraps commands to be run in specified path
|
10
10
|
|
11
11
|
## new
|
12
|
-
* `run` # runs commands on a specified backend
|
12
|
+
* `run` # runs commands on a specified backend, this has replaced old before and after hooks
|
13
13
|
* `comment` # adds a 'echo -----> #{command}' to queue
|
14
14
|
|
15
15
|
**Other commands have been removed!**
|
data/lib/mina.rb
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
require 'rake'
|
2
2
|
Rake.application.options.trace = true
|
3
3
|
|
4
|
-
|
4
|
+
require 'pry'
|
5
5
|
# require 'awesome_print'
|
6
6
|
|
7
7
|
require 'forwardable'
|
@@ -10,10 +10,10 @@ require 'singleton'
|
|
10
10
|
require 'open4'
|
11
11
|
|
12
12
|
require 'mina/version'
|
13
|
-
require 'mina/configuration'
|
14
|
-
require 'mina/dsl'
|
15
13
|
require 'mina/helpers/output'
|
16
14
|
require 'mina/helpers/internal'
|
15
|
+
require 'mina/configuration'
|
16
|
+
require 'mina/dsl'
|
17
17
|
require 'mina/commands'
|
18
18
|
require 'mina/runner'
|
19
19
|
require 'mina/runner/pretty'
|
data/lib/mina/application.rb
CHANGED
data/lib/mina/backend/remote.rb
CHANGED
@@ -21,14 +21,14 @@ module Mina
|
|
21
21
|
end
|
22
22
|
|
23
23
|
def ssh
|
24
|
-
|
24
|
+
ensure!(:domain)
|
25
25
|
args = fetch(:domain)
|
26
26
|
args = "#{fetch(:user)}@#{fetch(:domain)}" if set?(:user)
|
27
|
-
args
|
28
|
-
args
|
29
|
-
args
|
30
|
-
args
|
31
|
-
args
|
27
|
+
args += " -i #{fetch(:identity_file)}" if set?(:identity_file)
|
28
|
+
args += " -p #{fetch(:port)}" if set?(:port)
|
29
|
+
args += ' -A' if set?(:forward_agent)
|
30
|
+
args += " #{fetch(:ssh_options)}" if set?(:ssh_options)
|
31
|
+
args += ' -tt'
|
32
32
|
"ssh #{args}"
|
33
33
|
end
|
34
34
|
|
data/lib/mina/commands.rb
CHANGED
@@ -31,8 +31,8 @@ module Mina
|
|
31
31
|
|
32
32
|
def process(path = nil)
|
33
33
|
if path
|
34
|
-
queue[stage].unshift(
|
35
|
-
|
34
|
+
queue[stage].unshift(%(echo "$ cd #{path}")) if fetch(:verbose)
|
35
|
+
%((cd #{path} && #{queue[stage].join(' && ')}))
|
36
36
|
else
|
37
37
|
queue[stage].join("\n")
|
38
38
|
end
|
@@ -40,7 +40,8 @@ module Mina
|
|
40
40
|
|
41
41
|
def run(backend)
|
42
42
|
report_time do
|
43
|
-
Mina::Runner.new(process, backend).run
|
43
|
+
status = Mina::Runner.new(process, backend).run
|
44
|
+
error! 'Run Error' unless status
|
44
45
|
end
|
45
46
|
end
|
46
47
|
end
|
data/lib/mina/configuration.rb
CHANGED
@@ -1,6 +1,7 @@
|
|
1
1
|
module Mina
|
2
2
|
class Configuration
|
3
3
|
include Singleton
|
4
|
+
include Helpers::Internal
|
4
5
|
|
5
6
|
module DSL
|
6
7
|
def self.included(base)
|
@@ -36,7 +37,7 @@ module Mina
|
|
36
37
|
end
|
37
38
|
|
38
39
|
def ensure!(key)
|
39
|
-
|
40
|
+
error! "#{key} must be defined!" unless set?(key)
|
40
41
|
end
|
41
42
|
|
42
43
|
def reset!
|
data/lib/mina/dsl.rb
CHANGED
@@ -19,10 +19,15 @@ module Mina
|
|
19
19
|
@commands ||= Commands.new
|
20
20
|
end
|
21
21
|
|
22
|
+
def reset!
|
23
|
+
@commands = Commands.new
|
24
|
+
end
|
25
|
+
|
22
26
|
def run(backend)
|
23
27
|
@commands = Commands.new
|
24
28
|
yield
|
25
29
|
commands.run(backend)
|
30
|
+
@commands = Commands.new
|
26
31
|
end
|
27
32
|
|
28
33
|
def on(stage)
|
@@ -40,7 +45,9 @@ module Mina
|
|
40
45
|
end
|
41
46
|
|
42
47
|
def deploy(&block)
|
43
|
-
|
48
|
+
run :remote do
|
49
|
+
command deploy_script(&block), quiet: true
|
50
|
+
end
|
44
51
|
end
|
45
52
|
end
|
46
53
|
end
|
@@ -1,7 +1,7 @@
|
|
1
1
|
module Mina
|
2
2
|
module Helpers
|
3
3
|
module Internal
|
4
|
-
|
4
|
+
include Helpers::Output
|
5
5
|
|
6
6
|
def deploy_script
|
7
7
|
yield
|
@@ -29,7 +29,7 @@ module Mina
|
|
29
29
|
def report_time
|
30
30
|
time_start = Time.now
|
31
31
|
output = yield
|
32
|
-
|
32
|
+
print_info "Elapsed time: %.2f seconds" % [Time.now - time_start]
|
33
33
|
output
|
34
34
|
end
|
35
35
|
|
@@ -40,9 +40,14 @@ module Mina
|
|
40
40
|
when :sequence
|
41
41
|
"$((`ls -1 #{fetch(:releases_path)} | sort -n | tail -n 1`+1))"
|
42
42
|
else
|
43
|
-
|
43
|
+
error! 'Unrecognizes version scheme. Use :datetime or :sequence'
|
44
44
|
end
|
45
45
|
end
|
46
|
+
|
47
|
+
def error!(message)
|
48
|
+
print_error message
|
49
|
+
exit 1
|
50
|
+
end
|
46
51
|
end
|
47
52
|
end
|
48
53
|
end
|
data/lib/mina/helpers/output.rb
CHANGED
data/lib/mina/runner/pretty.rb
CHANGED
data/lib/mina/runner/printer.rb
CHANGED
data/lib/mina/version.rb
CHANGED
data/mina.gemspec
CHANGED
@@ -23,7 +23,7 @@ Gem::Specification.new do |spec|
|
|
23
23
|
|
24
24
|
spec.add_dependency 'rake'
|
25
25
|
spec.add_dependency 'open4', '~> 1.3.4'
|
26
|
-
spec.add_development_dependency 'rspec', '~> 3.
|
26
|
+
spec.add_development_dependency 'rspec', '~> 3.5.0'
|
27
27
|
spec.add_development_dependency 'pry-byebug'
|
28
28
|
spec.add_development_dependency 'awesome_print'
|
29
29
|
spec.add_development_dependency 'codeclimate-test-reporter'
|
@@ -1,39 +1,39 @@
|
|
1
1
|
require 'spec_helper'
|
2
2
|
|
3
3
|
describe Mina::Application do
|
4
|
-
|
5
|
-
|
6
|
-
|
7
|
-
|
8
|
-
|
9
|
-
|
10
|
-
|
11
|
-
end
|
12
|
-
|
13
|
-
it 'runs adds two default tasks to the task list' do
|
14
|
-
|
15
|
-
|
16
|
-
end
|
17
|
-
|
18
|
-
it 'overrides the rake method, but still prints the rake version' do
|
19
|
-
|
20
|
-
|
21
|
-
|
22
|
-
|
23
|
-
|
24
|
-
end
|
25
|
-
|
26
|
-
it 'enables simulation mode, and sets the backend Mina::Runner::Printer' do
|
27
|
-
|
28
|
-
|
29
|
-
|
30
|
-
|
31
|
-
end
|
32
|
-
|
33
|
-
it 'enables printing all config variables on command line parameter' do
|
34
|
-
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
end
|
4
|
+
# let(:app) { Rake.application }
|
5
|
+
#
|
6
|
+
# %w(quiet silent dry-run).each do |switch|
|
7
|
+
# it "doesn't include --#{switch} in help" do
|
8
|
+
# binding.pry
|
9
|
+
# expect(out).not_to match(/--#{switch}/)
|
10
|
+
# end
|
11
|
+
# end
|
12
|
+
#
|
13
|
+
# it 'runs adds two default tasks to the task list' do
|
14
|
+
# expect(subject.top_level_tasks).to include(:debug_configuration_variables)
|
15
|
+
# expect(subject.top_level_tasks).to include(:run_commands)
|
16
|
+
# end
|
17
|
+
#
|
18
|
+
# it 'overrides the rake method, but still prints the rake version' do
|
19
|
+
# out = capture_io do
|
20
|
+
# flags '--version', '-V'
|
21
|
+
# end
|
22
|
+
# expect(out).to match(/\bMina, version\b/)
|
23
|
+
# expect(out).to match(/\bv#{Mina::VERSION}\b/)
|
24
|
+
# end
|
25
|
+
#
|
26
|
+
# it 'enables simulation mode, and sets the backend Mina::Runner::Printer' do
|
27
|
+
# capture_io do
|
28
|
+
# flags '--simulate', '-s'
|
29
|
+
# end
|
30
|
+
# expect(Mina::Configuration.instance.fetch(:simulate)).to be true
|
31
|
+
# end
|
32
|
+
#
|
33
|
+
# it 'enables printing all config variables on command line parameter' do
|
34
|
+
# capture_io do
|
35
|
+
# flags '--debug-configuration-variables', '-d'
|
36
|
+
# end
|
37
|
+
# expect(Mina::Configuration.instance.fetch(:debug_configuration_variables)).to be true
|
38
|
+
# end
|
39
39
|
end
|
@@ -3,6 +3,7 @@ require 'spec_helper'
|
|
3
3
|
describe Mina::Backend::Remote do
|
4
4
|
let(:backend) { Mina::Backend::Remote.new ['ls -al'] }
|
5
5
|
before { Mina::Configuration.instance.set(:domain, 'localhost') }
|
6
|
+
after { Mina::Configuration.instance.remove(:domain) }
|
6
7
|
|
7
8
|
describe '#prepare' do
|
8
9
|
it 'escpaces shellwords' do
|
@@ -12,6 +13,7 @@ describe Mina::Backend::Remote do
|
|
12
13
|
it 'adds debug if simualte' do
|
13
14
|
Mina::Configuration.instance.set(:simulate, true)
|
14
15
|
expect(backend.prepare).to eq("#!/usr/bin/env bash\n# Executing the following via 'ssh localhost -tt':\n#\nls -al\n ")
|
16
|
+
Mina::Configuration.instance.remove(:simulate)
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
@@ -18,6 +18,7 @@ describe Mina::Commands do
|
|
18
18
|
|
19
19
|
context 'when verbose' do
|
20
20
|
before { Mina::Configuration.instance.set(:verbose, true) }
|
21
|
+
after { Mina::Configuration.instance.remove(:verbose) }
|
21
22
|
|
22
23
|
it 'adds a echo command to the queue' do
|
23
24
|
commands.command('ls -al')
|
@@ -72,22 +73,20 @@ describe Mina::Commands do
|
|
72
73
|
|
73
74
|
context 'when verbose' do
|
74
75
|
before { Mina::Configuration.instance.set(:verbose, true) }
|
76
|
+
after { Mina::Configuration.instance.remove(:verbose) }
|
75
77
|
|
76
78
|
it 'joins all the commands within a path and echoes it' do
|
77
|
-
expect(commands.process('some/path')).to eq("(cd some/path && echo
|
79
|
+
expect(commands.process('some/path')).to eq("(cd some/path && echo \"$ cd some/path\" && ls -al && pwd)")
|
78
80
|
end
|
79
81
|
end
|
80
82
|
end
|
81
83
|
|
82
84
|
describe '#run' do
|
83
|
-
|
85
|
+
it 'calls run on a backend' do
|
84
86
|
runner = double(:runner)
|
85
87
|
allow(Mina::Runner).to receive(:new).and_return(runner)
|
86
|
-
|
87
|
-
|
88
|
-
|
89
|
-
it 'calls run on a backend' do
|
90
|
-
expect(commands.run(:local)).to eq(:ran)
|
88
|
+
expect(runner).to receive(:run).and_return(true)
|
89
|
+
commands.run(:local)
|
91
90
|
end
|
92
91
|
end
|
93
92
|
end
|
@@ -21,7 +21,8 @@ describe Mina::Helpers::Internal do
|
|
21
21
|
|
22
22
|
describe '#erb' do
|
23
23
|
before { Mina::Configuration.instance.set(:version_scheme, :sequence) }
|
24
|
-
|
24
|
+
after { Mina::Configuration.instance.remove(:version_scheme) }
|
25
|
+
|
25
26
|
it 'returns whole script' do
|
26
27
|
expect(helper.erb('data/deploy.sh.erb')).to_not be_empty
|
27
28
|
end
|
@@ -36,6 +37,7 @@ describe Mina::Helpers::Internal do
|
|
36
37
|
|
37
38
|
context 'when verbose' do
|
38
39
|
before { Mina::Configuration.instance.set(:verbose, true) }
|
40
|
+
after { Mina::Configuration.instance.remove(:verbose) }
|
39
41
|
|
40
42
|
it 'modifies code' do
|
41
43
|
expect(helper.echo_cmd('ls -al')).to eq("echo \\$\\ ls\\ -al &&\nls -al")
|
@@ -9,40 +9,25 @@ describe Mina::Helpers::Output do
|
|
9
9
|
|
10
10
|
describe '#print_line' do
|
11
11
|
it 'prints normally' do
|
12
|
-
|
13
|
-
helper.print_line('ls -al')
|
14
|
-
end
|
15
|
-
expect(out).to eq(" ls -al\n")
|
12
|
+
expect{ helper.print_line('ls -al') }.to output(" ls -al\n").to_stdout
|
16
13
|
end
|
17
14
|
|
18
15
|
it 'prints comment' do
|
19
|
-
|
20
|
-
helper.print_line('-> ls -al')
|
21
|
-
end
|
22
|
-
expect(out).to eq("\e[32m----->\e[0m ls -al\n")
|
16
|
+
expect{ helper.print_line('-> ls -al') }.to output("\e[32m----->\e[0m ls -al\n").to_stdout
|
23
17
|
end
|
24
18
|
|
25
19
|
it 'prints error' do
|
26
|
-
|
27
|
-
helper.print_line('! ls -al')
|
28
|
-
end
|
29
|
-
expect(out).to eq(" \e[33m!\e[0m \e[31mls -al\e[0m\n")
|
20
|
+
expect{ helper.print_line('! ls -al') }.to output(" \e[33m!\e[0m \e[31mls -al\e[0m\n").to_stdout
|
30
21
|
end
|
31
22
|
|
32
23
|
it 'prints command' do
|
33
|
-
|
34
|
-
helper.print_line('$ ls -al')
|
35
|
-
end
|
36
|
-
expect(out).to eq(" \e[36m$\e[0m \e[36mls -al\e[0m\n")
|
24
|
+
expect{ helper.print_line('$ ls -al') }.to output(" \e[36m$\e[0m \e[36mls -al\e[0m\n").to_stdout
|
37
25
|
end
|
38
26
|
end
|
39
27
|
|
40
28
|
describe '#print_stderr' do
|
41
29
|
it 'prints stderr' do
|
42
|
-
|
43
|
-
helper.print_stderr('ls -al')
|
44
|
-
end
|
45
|
-
expect(out).to eq(" \e[31mls -al\e[0m\n")
|
30
|
+
expect{ helper.print_stderr('ls -al') }.to output(" \e[31mls -al\e[0m\n").to_stdout
|
46
31
|
end
|
47
32
|
end
|
48
33
|
end
|