eventhub-command 0.2.1 → 0.2.2
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/.gitignore +17 -17
- data/Gemfile +2 -2
- data/README.md +91 -91
- data/Rakefile +44 -44
- data/bin/eh +35 -35
- data/eh.gemspec +29 -31
- data/eh.rdoc +4 -4
- data/lib/deployer/base_deployer.rb +149 -136
- data/lib/deployer/executor.rb +113 -113
- data/lib/deployer/mule_deployer.rb +85 -85
- data/lib/deployer/net_ssh_extension.rb +37 -37
- data/lib/deployer/ruby_deployer.rb +111 -111
- data/lib/deployer/stage.rb +27 -27
- data/lib/deployer.rb +11 -11
- data/lib/eh/commands/copy_config.rb +51 -51
- data/lib/eh/commands/deploy.rb +38 -38
- data/lib/eh/commands/deploy_mule.rb +23 -23
- data/lib/eh/commands/deploy_ruby.rb +25 -25
- data/lib/eh/commands/generate_processor.rb +90 -90
- data/lib/eh/commands/package_ruby.rb +104 -104
- data/lib/eh/settings.rb +113 -113
- data/lib/eh/version.rb +3 -3
- data/lib/eh-commands.rb +17 -17
- data/lib/eh.rb +11 -11
- data/test/default_test.rb +14 -14
- data/test/test_helper.rb +9 -9
- data/todo.txt +8 -8
- metadata +12 -11
@@ -1,85 +1,85 @@
|
|
1
|
-
class Deployer::MuleDeployer < Deployer::BaseDeployer
|
2
|
-
attr_reader :adapter_names
|
3
|
-
|
4
|
-
def initialize(adapter_names, options)
|
5
|
-
super(options)
|
6
|
-
@adapter_names = adapter_names
|
7
|
-
end
|
8
|
-
|
9
|
-
def adapter_cached_copy(adapter_name)
|
10
|
-
cached_copy_dir('mule', "#{adapter_name}.zip")
|
11
|
-
end
|
12
|
-
|
13
|
-
def config_source_dir(adapter_name)
|
14
|
-
super('mule', adapter_name)
|
15
|
-
end
|
16
|
-
|
17
|
-
def deploy!
|
18
|
-
puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
|
19
|
-
|
20
|
-
Deployer::Executor.new(stage, verbose: verbose?) do |executor|
|
21
|
-
create_base_dirs(executor)
|
22
|
-
|
23
|
-
# update
|
24
|
-
update_cached_copy(executor)
|
25
|
-
|
26
|
-
adapter_names_to_deploy = resolve_adapter_names(executor, options)
|
27
|
-
|
28
|
-
adapter_names_to_deploy.each do |adapter_name|
|
29
|
-
puts
|
30
|
-
puts "Deploying #{adapter_name}".light_blue.on_blue
|
31
|
-
log_deployment(executor, "Deploying #{adapter_name} via #{deploy_via} from #{cached_copy_dir}")
|
32
|
-
# make a copy of the zip files to merge them with config
|
33
|
-
cached_copy_source = adapter_cached_copy(adapter_name)
|
34
|
-
configuration_target = File.join(base_dir, 'mule', "#{adapter_name}.zip")
|
35
|
-
executor.execute("cp #{cached_copy_source} #{configuration_target}")
|
36
|
-
|
37
|
-
# copy config
|
38
|
-
config_source = config_source_dir(adapter_name)
|
39
|
-
executor.execute("if [[ -d #{config_source} ]] ; then cd #{config_source} ; zip -r #{configuration_target} . ; fi")
|
40
|
-
|
41
|
-
# deploy
|
42
|
-
executor.execute("cp #{adapter_cached_copy(adapter_name)} $MULE_HOME/apps")
|
43
|
-
end
|
44
|
-
end
|
45
|
-
end
|
46
|
-
|
47
|
-
|
48
|
-
private
|
49
|
-
|
50
|
-
def resolve_adapter_names(executor, options)
|
51
|
-
available = remote_ls(executor, options, cached_copy_dir('mule', '*.zip')).map do |name|
|
52
|
-
File.basename(name, '.zip')
|
53
|
-
end
|
54
|
-
|
55
|
-
fetched = Array(adapter_names).map do |name|
|
56
|
-
if name.include?('*') # resolve pattern on remote machine
|
57
|
-
remote_ls(executor, options, cached_copy_dir('mule', "#{name}.zip"))
|
58
|
-
else
|
59
|
-
name
|
60
|
-
end
|
61
|
-
end
|
62
|
-
if fetched.empty? # then fetch all
|
63
|
-
fetched = available
|
64
|
-
end
|
65
|
-
|
66
|
-
fetched = fetched.flatten.map do |name|
|
67
|
-
File.basename(name, '.zip')
|
68
|
-
end
|
69
|
-
|
70
|
-
verify_deployment_list!(fetched, available)
|
71
|
-
|
72
|
-
fetched
|
73
|
-
end
|
74
|
-
|
75
|
-
def update_cached_copy(executor)
|
76
|
-
if via_scp?
|
77
|
-
source = Eh::Settings.current.releases_dir('mule', '*.zip')
|
78
|
-
target_dir = cached_copy_dir('mule')
|
79
|
-
executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
|
80
|
-
executor.upload(source, target_dir)
|
81
|
-
else
|
82
|
-
update_scm(executor)
|
83
|
-
end
|
84
|
-
end
|
85
|
-
end
|
1
|
+
class Deployer::MuleDeployer < Deployer::BaseDeployer
|
2
|
+
attr_reader :adapter_names
|
3
|
+
|
4
|
+
def initialize(adapter_names, options)
|
5
|
+
super(options)
|
6
|
+
@adapter_names = adapter_names
|
7
|
+
end
|
8
|
+
|
9
|
+
def adapter_cached_copy(adapter_name)
|
10
|
+
cached_copy_dir('mule', "#{adapter_name}.zip")
|
11
|
+
end
|
12
|
+
|
13
|
+
def config_source_dir(adapter_name)
|
14
|
+
super('mule', adapter_name)
|
15
|
+
end
|
16
|
+
|
17
|
+
def deploy!
|
18
|
+
puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
|
19
|
+
|
20
|
+
Deployer::Executor.new(stage, verbose: verbose?) do |executor|
|
21
|
+
create_base_dirs(executor)
|
22
|
+
|
23
|
+
# update
|
24
|
+
update_cached_copy(executor)
|
25
|
+
|
26
|
+
adapter_names_to_deploy = resolve_adapter_names(executor, options)
|
27
|
+
|
28
|
+
adapter_names_to_deploy.each do |adapter_name|
|
29
|
+
puts
|
30
|
+
puts "Deploying #{adapter_name}".light_blue.on_blue
|
31
|
+
log_deployment(executor, "Deploying #{adapter_name} via #{deploy_via} from #{cached_copy_dir}")
|
32
|
+
# make a copy of the zip files to merge them with config
|
33
|
+
cached_copy_source = adapter_cached_copy(adapter_name)
|
34
|
+
configuration_target = File.join(base_dir, 'mule', "#{adapter_name}.zip")
|
35
|
+
executor.execute("cp #{cached_copy_source} #{configuration_target}")
|
36
|
+
|
37
|
+
# copy config
|
38
|
+
config_source = config_source_dir(adapter_name)
|
39
|
+
executor.execute("if [[ -d #{config_source} ]] ; then cd #{config_source} ; zip -r #{configuration_target} . ; fi")
|
40
|
+
|
41
|
+
# deploy
|
42
|
+
executor.execute("cp #{adapter_cached_copy(adapter_name)} $MULE_HOME/apps")
|
43
|
+
end
|
44
|
+
end
|
45
|
+
end
|
46
|
+
|
47
|
+
|
48
|
+
private
|
49
|
+
|
50
|
+
def resolve_adapter_names(executor, options)
|
51
|
+
available = remote_ls(executor, options, cached_copy_dir('mule', '*.zip')).map do |name|
|
52
|
+
File.basename(name, '.zip')
|
53
|
+
end
|
54
|
+
|
55
|
+
fetched = Array(adapter_names).map do |name|
|
56
|
+
if name.include?('*') # resolve pattern on remote machine
|
57
|
+
remote_ls(executor, options, cached_copy_dir('mule', "#{name}.zip"))
|
58
|
+
else
|
59
|
+
name
|
60
|
+
end
|
61
|
+
end
|
62
|
+
if fetched.empty? # then fetch all
|
63
|
+
fetched = available
|
64
|
+
end
|
65
|
+
|
66
|
+
fetched = fetched.flatten.map do |name|
|
67
|
+
File.basename(name, '.zip')
|
68
|
+
end
|
69
|
+
|
70
|
+
verify_deployment_list!(fetched, available)
|
71
|
+
|
72
|
+
fetched
|
73
|
+
end
|
74
|
+
|
75
|
+
def update_cached_copy(executor)
|
76
|
+
if via_scp?
|
77
|
+
source = Eh::Settings.current.releases_dir('mule', '*.zip')
|
78
|
+
target_dir = cached_copy_dir('mule')
|
79
|
+
executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
|
80
|
+
executor.upload(source, target_dir)
|
81
|
+
else
|
82
|
+
update_scm(executor)
|
83
|
+
end
|
84
|
+
end
|
85
|
+
end
|
@@ -1,37 +1,37 @@
|
|
1
|
-
class Net::SSH::Connection::Session
|
2
|
-
|
3
|
-
def exec_sc!(command)
|
4
|
-
stdout_data,stderr_data = "",""
|
5
|
-
exit_code, exit_signal = nil,nil
|
6
|
-
self.open_channel do |channel|
|
7
|
-
channel.exec(command) do |_, success|
|
8
|
-
raise "Command \"#{command}\" was unable to execute" unless success
|
9
|
-
|
10
|
-
channel.on_data do |_, data|
|
11
|
-
stdout_data += data
|
12
|
-
end
|
13
|
-
|
14
|
-
channel.on_extended_data do |_, _, data|
|
15
|
-
stderr_data += data
|
16
|
-
end
|
17
|
-
|
18
|
-
channel.on_request("exit-status") do |_, data|
|
19
|
-
exit_code = data.read_long
|
20
|
-
end
|
21
|
-
|
22
|
-
channel.on_request("exit-signal") do |_, data|
|
23
|
-
exit_signal = data.read_long
|
24
|
-
end
|
25
|
-
end
|
26
|
-
end
|
27
|
-
self.loop
|
28
|
-
raise stderr_data unless exit_code == 0
|
29
|
-
|
30
|
-
{
|
31
|
-
stdout: stdout_data,
|
32
|
-
stderr: stderr_data,
|
33
|
-
exit_code: exit_code,
|
34
|
-
exit_signal: exit_signal
|
35
|
-
}
|
36
|
-
end
|
37
|
-
end
|
1
|
+
class Net::SSH::Connection::Session
|
2
|
+
|
3
|
+
def exec_sc!(command)
|
4
|
+
stdout_data,stderr_data = "",""
|
5
|
+
exit_code, exit_signal = nil,nil
|
6
|
+
self.open_channel do |channel|
|
7
|
+
channel.exec(command) do |_, success|
|
8
|
+
raise "Command \"#{command}\" was unable to execute" unless success
|
9
|
+
|
10
|
+
channel.on_data do |_, data|
|
11
|
+
stdout_data += data
|
12
|
+
end
|
13
|
+
|
14
|
+
channel.on_extended_data do |_, _, data|
|
15
|
+
stderr_data += data
|
16
|
+
end
|
17
|
+
|
18
|
+
channel.on_request("exit-status") do |_, data|
|
19
|
+
exit_code = data.read_long
|
20
|
+
end
|
21
|
+
|
22
|
+
channel.on_request("exit-signal") do |_, data|
|
23
|
+
exit_signal = data.read_long
|
24
|
+
end
|
25
|
+
end
|
26
|
+
end
|
27
|
+
self.loop
|
28
|
+
raise stderr_data unless exit_code == 0
|
29
|
+
|
30
|
+
{
|
31
|
+
stdout: stdout_data,
|
32
|
+
stderr: stderr_data,
|
33
|
+
exit_code: exit_code,
|
34
|
+
exit_signal: exit_signal
|
35
|
+
}
|
36
|
+
end
|
37
|
+
end
|
@@ -1,111 +1,111 @@
|
|
1
|
-
class Deployer::RubyDeployer < Deployer::BaseDeployer
|
2
|
-
attr_accessor :processor_names
|
3
|
-
|
4
|
-
def initialize(processor_names, options)
|
5
|
-
super(options)
|
6
|
-
@processor_names = processor_names
|
7
|
-
end
|
8
|
-
|
9
|
-
def deploy!
|
10
|
-
puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
|
11
|
-
|
12
|
-
Deployer::Executor.new(stage, verbose: verbose?) do |executor|
|
13
|
-
create_base_dirs(executor)
|
14
|
-
|
15
|
-
|
16
|
-
update_cached_copy(executor)
|
17
|
-
|
18
|
-
|
19
|
-
# fetch processor_names unless they have been passed as an argument to the initializer
|
20
|
-
processor_names_to_deploy = resolve_processor_names(executor, options)
|
21
|
-
processor_names_to_deploy.each do |processor_name|
|
22
|
-
puts
|
23
|
-
puts "Deploying #{processor_name}".light_blue.on_blue
|
24
|
-
log_deployment(executor, "Deploying #{processor_name} via #{deploy_via} from #{cached_copy_dir}")
|
25
|
-
# stop old one
|
26
|
-
executor.execute("kill -s TERM $(cat #{File.join(pids_dir, processor_name)}.pid)", abort_on_error: false, comment: "This is not sooo important")
|
27
|
-
|
28
|
-
# unzip package
|
29
|
-
target = deploy_dir('ruby')
|
30
|
-
source = cached_copy_dir('ruby',"#{processor_name}.zip")
|
31
|
-
executor.execute("rm -rf #{processor_dir(processor_name)} && unzip -o -d #{target} #{source}")
|
32
|
-
|
33
|
-
# copy config
|
34
|
-
executor.execute("if [[ -d #{config_source_dir(processor_name)} ]] ; then cp -r #{config_source_dir(processor_name)}/* #{processor_dir(processor_name)}; fi")
|
35
|
-
|
36
|
-
# symlink log dir
|
37
|
-
executor.execute("ln -s #{logs_dir} #{processor_dir(processor_name, 'logs')}")
|
38
|
-
|
39
|
-
# symlink pids dir
|
40
|
-
executor.execute("ln -s #{pids_dir} #{processor_dir(processor_name, 'pids')}")
|
41
|
-
|
42
|
-
# install gems
|
43
|
-
executor.execute("cd #{processor_dir(processor_name)} && bundle install --without test")
|
44
|
-
|
45
|
-
# start new one
|
46
|
-
executor.execute("cd #{processor_dir(processor_name)} && bundle exec ruby #{processor_name}.rb -d -e $EH_ENV")
|
47
|
-
end
|
48
|
-
end
|
49
|
-
end
|
50
|
-
|
51
|
-
private
|
52
|
-
|
53
|
-
def update_cached_copy(executor)
|
54
|
-
if via_scp?
|
55
|
-
source = Eh::Settings.current.releases_dir('ruby', '*.zip')
|
56
|
-
target_dir = File.join(cached_copy_dir, 'ruby')
|
57
|
-
executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
|
58
|
-
executor.upload(source, target_dir)
|
59
|
-
else
|
60
|
-
update_scm(executor)
|
61
|
-
end
|
62
|
-
end
|
63
|
-
|
64
|
-
def logs_dir
|
65
|
-
File.join(
|
66
|
-
end
|
67
|
-
|
68
|
-
def pids_dir
|
69
|
-
File.join(
|
70
|
-
end
|
71
|
-
|
72
|
-
def deploy_dir(*extra_paths)
|
73
|
-
File.join(base_dir, *extra_paths)
|
74
|
-
end
|
75
|
-
|
76
|
-
def processor_dir(*extra_paths)
|
77
|
-
File.join(deploy_dir, 'ruby', *extra_paths)
|
78
|
-
end
|
79
|
-
|
80
|
-
def config_source_dir(processor_name)
|
81
|
-
super('ruby', processor_name)
|
82
|
-
end
|
83
|
-
|
84
|
-
# Detect what processors to deploy
|
85
|
-
#
|
86
|
-
def resolve_processor_names(executor, options)
|
87
|
-
available = remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', '*.zip')).map do |name|
|
88
|
-
File.basename(name, '.zip')
|
89
|
-
end
|
90
|
-
|
91
|
-
fetched = Array(processor_names).map do |name|
|
92
|
-
if name.include?('*') # resolve pattern on remote machine
|
93
|
-
remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', "#{name}.zip"))
|
94
|
-
else
|
95
|
-
name
|
96
|
-
end
|
97
|
-
end
|
98
|
-
if fetched.empty? # then fetch all
|
99
|
-
fetched = available
|
100
|
-
end
|
101
|
-
|
102
|
-
fetched = fetched.flatten.map do |name|
|
103
|
-
File.basename(name, '.zip')
|
104
|
-
end
|
105
|
-
|
106
|
-
verify_deployment_list!(fetched, available)
|
107
|
-
|
108
|
-
fetched
|
109
|
-
end
|
110
|
-
|
111
|
-
end
|
1
|
+
class Deployer::RubyDeployer < Deployer::BaseDeployer
|
2
|
+
attr_accessor :processor_names
|
3
|
+
|
4
|
+
def initialize(processor_names, options)
|
5
|
+
super(options)
|
6
|
+
@processor_names = processor_names
|
7
|
+
end
|
8
|
+
|
9
|
+
def deploy!
|
10
|
+
puts "deploying to #{stage.name} via #{deploy_via}".light_blue.on_blue
|
11
|
+
|
12
|
+
Deployer::Executor.new(stage, verbose: verbose?) do |executor|
|
13
|
+
create_base_dirs(executor)
|
14
|
+
|
15
|
+
|
16
|
+
update_cached_copy(executor)
|
17
|
+
|
18
|
+
|
19
|
+
# fetch processor_names unless they have been passed as an argument to the initializer
|
20
|
+
processor_names_to_deploy = resolve_processor_names(executor, options)
|
21
|
+
processor_names_to_deploy.each do |processor_name|
|
22
|
+
puts
|
23
|
+
puts "Deploying #{processor_name}".light_blue.on_blue
|
24
|
+
log_deployment(executor, "Deploying #{processor_name} via #{deploy_via} from #{cached_copy_dir}")
|
25
|
+
# stop old one
|
26
|
+
executor.execute("kill -s TERM $(cat #{File.join(pids_dir, processor_name)}.pid)", abort_on_error: false, comment: "This is not sooo important")
|
27
|
+
|
28
|
+
# unzip package
|
29
|
+
target = deploy_dir('ruby')
|
30
|
+
source = cached_copy_dir('ruby',"#{processor_name}.zip")
|
31
|
+
executor.execute("rm -rf #{processor_dir(processor_name)} && unzip -o -d #{target} #{source}")
|
32
|
+
|
33
|
+
# copy config
|
34
|
+
executor.execute("if [[ -d #{config_source_dir(processor_name)} ]] ; then cp -r #{config_source_dir(processor_name)}/* #{processor_dir(processor_name)}; fi")
|
35
|
+
|
36
|
+
# symlink log dir
|
37
|
+
executor.execute("ln -s #{logs_dir} #{processor_dir(processor_name, 'logs')}")
|
38
|
+
|
39
|
+
# symlink pids dir
|
40
|
+
executor.execute("ln -s #{pids_dir} #{processor_dir(processor_name, 'pids')}")
|
41
|
+
|
42
|
+
# install gems
|
43
|
+
executor.execute("cd #{processor_dir(processor_name)} && bundle install --without test")
|
44
|
+
|
45
|
+
# start new one
|
46
|
+
executor.execute("cd #{processor_dir(processor_name)} && bundle exec ruby #{processor_name}.rb -d -e $EH_ENV")
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
50
|
+
|
51
|
+
private
|
52
|
+
|
53
|
+
def update_cached_copy(executor)
|
54
|
+
if via_scp?
|
55
|
+
source = Eh::Settings.current.releases_dir('ruby', '*.zip')
|
56
|
+
target_dir = File.join(cached_copy_dir, 'ruby')
|
57
|
+
executor.execute("rm -rf #{target_dir}/*.zip && mkdir -p #{target_dir}")
|
58
|
+
executor.upload(source, target_dir)
|
59
|
+
else
|
60
|
+
update_scm(executor)
|
61
|
+
end
|
62
|
+
end
|
63
|
+
|
64
|
+
def logs_dir
|
65
|
+
File.join(shared_dir, 'logs')
|
66
|
+
end
|
67
|
+
|
68
|
+
def pids_dir
|
69
|
+
File.join(shared_dir, 'pids')
|
70
|
+
end
|
71
|
+
|
72
|
+
def deploy_dir(*extra_paths)
|
73
|
+
File.join(base_dir, *extra_paths)
|
74
|
+
end
|
75
|
+
|
76
|
+
def processor_dir(*extra_paths)
|
77
|
+
File.join(deploy_dir, 'ruby', *extra_paths)
|
78
|
+
end
|
79
|
+
|
80
|
+
def config_source_dir(processor_name)
|
81
|
+
super('ruby', processor_name)
|
82
|
+
end
|
83
|
+
|
84
|
+
# Detect what processors to deploy
|
85
|
+
#
|
86
|
+
def resolve_processor_names(executor, options)
|
87
|
+
available = remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', '*.zip')).map do |name|
|
88
|
+
File.basename(name, '.zip')
|
89
|
+
end
|
90
|
+
|
91
|
+
fetched = Array(processor_names).map do |name|
|
92
|
+
if name.include?('*') # resolve pattern on remote machine
|
93
|
+
remote_ls(executor, options, File.join(cached_copy_dir, 'ruby', "#{name}.zip"))
|
94
|
+
else
|
95
|
+
name
|
96
|
+
end
|
97
|
+
end
|
98
|
+
if fetched.empty? # then fetch all
|
99
|
+
fetched = available
|
100
|
+
end
|
101
|
+
|
102
|
+
fetched = fetched.flatten.map do |name|
|
103
|
+
File.basename(name, '.zip')
|
104
|
+
end
|
105
|
+
|
106
|
+
verify_deployment_list!(fetched, available)
|
107
|
+
|
108
|
+
fetched
|
109
|
+
end
|
110
|
+
|
111
|
+
end
|
data/lib/deployer/stage.rb
CHANGED
@@ -1,27 +1,27 @@
|
|
1
|
-
class Deployer::Stage
|
2
|
-
attr_reader :name, :hosts
|
3
|
-
|
4
|
-
def initialize(name)
|
5
|
-
@name = name
|
6
|
-
@hosts = []
|
7
|
-
end
|
8
|
-
|
9
|
-
def host(host, port, user)
|
10
|
-
@hosts << {
|
11
|
-
host: host,
|
12
|
-
port: port,
|
13
|
-
user: user
|
14
|
-
}
|
15
|
-
end
|
16
|
-
|
17
|
-
def self.load(file)
|
18
|
-
data = YAML.load_file(file)
|
19
|
-
data.map do |name, config|
|
20
|
-
stage = Deployer::Stage.new(name)
|
21
|
-
config['hosts'].each do |host|
|
22
|
-
stage.host(host['host'], host['port'], host['user'])
|
23
|
-
end
|
24
|
-
stage
|
25
|
-
end.first
|
26
|
-
end
|
27
|
-
end
|
1
|
+
class Deployer::Stage
|
2
|
+
attr_reader :name, :hosts
|
3
|
+
|
4
|
+
def initialize(name)
|
5
|
+
@name = name
|
6
|
+
@hosts = []
|
7
|
+
end
|
8
|
+
|
9
|
+
def host(host, port, user)
|
10
|
+
@hosts << {
|
11
|
+
host: host,
|
12
|
+
port: port,
|
13
|
+
user: user
|
14
|
+
}
|
15
|
+
end
|
16
|
+
|
17
|
+
def self.load(file)
|
18
|
+
data = YAML.load_file(file)
|
19
|
+
data.map do |name, config|
|
20
|
+
stage = Deployer::Stage.new(name)
|
21
|
+
config['hosts'].each do |host|
|
22
|
+
stage.host(host['host'], host['port'], host['user'])
|
23
|
+
end
|
24
|
+
stage
|
25
|
+
end.first
|
26
|
+
end
|
27
|
+
end
|
data/lib/deployer.rb
CHANGED
@@ -1,11 +1,11 @@
|
|
1
|
-
module Deployer
|
2
|
-
end
|
3
|
-
|
4
|
-
require_relative 'deployer/executor'
|
5
|
-
require_relative 'deployer/net_ssh_extension'
|
6
|
-
require_relative 'deployer/stage'
|
7
|
-
|
8
|
-
require_relative 'deployer/base_deployer'
|
9
|
-
require_relative 'deployer/mule_deployer'
|
10
|
-
require_relative 'deployer/ruby_deployer'
|
11
|
-
require_relative 'deployer/config_deployer'
|
1
|
+
module Deployer
|
2
|
+
end
|
3
|
+
|
4
|
+
require_relative 'deployer/executor'
|
5
|
+
require_relative 'deployer/net_ssh_extension'
|
6
|
+
require_relative 'deployer/stage'
|
7
|
+
|
8
|
+
require_relative 'deployer/base_deployer'
|
9
|
+
require_relative 'deployer/mule_deployer'
|
10
|
+
require_relative 'deployer/ruby_deployer'
|
11
|
+
require_relative 'deployer/config_deployer'
|
@@ -1,51 +1,51 @@
|
|
1
|
-
desc 'Copies the config directory of a given processor to remote'
|
2
|
-
command :copy_config do |c|
|
3
|
-
c.flag([:s, :source], :desc => "Source config directory", :default_value => Eh::Settings.current.source_config_dir, :long_desc => "A local directory containing subfolders for each of the processors")
|
4
|
-
c.flag([:p, :processors], :desc => "Specify what processors' configs to copy", :type => Array, :long_desc => "You can specify multiple processors by providing a comma-separated list.")
|
5
|
-
|
6
|
-
c.action do |global_options, options, args|
|
7
|
-
source_config_dir = options['s']
|
8
|
-
repository_deployment_dir = File.join(Eh::Settings.current.repository_root_dir, "branches", "master", "src", "deployment")
|
9
|
-
|
10
|
-
processor_names = Dir["#{source_config_dir}/*"].map do |dir|
|
11
|
-
File.basename(dir)
|
12
|
-
end
|
13
|
-
|
14
|
-
included_processor_names = processor_names
|
15
|
-
|
16
|
-
# only include processors specified by -p option, if option is given
|
17
|
-
if options['p']
|
18
|
-
included_processor_names = included_processor_names.select do |processor_name|
|
19
|
-
options['p'].include?(processor_name)
|
20
|
-
end
|
21
|
-
end
|
22
|
-
|
23
|
-
# make sure we have at least one processor
|
24
|
-
if included_processor_names.empty?
|
25
|
-
raise "There are no processor configs to copy. Either there is nothing in #{source_config_dir} or the processor(s) specified with -p don't exist."
|
26
|
-
end
|
27
|
-
|
28
|
-
included_processor_names.each do |processor_name|
|
29
|
-
processor_config_source_dir = File.join(source_config_dir, processor_name)
|
30
|
-
|
31
|
-
cmd = "cd #{repository_deployment_dir} && COPY_FROM_DIR=#{processor_config_source_dir} bundle exec cap event_hub:scp_copy_config"
|
32
|
-
|
33
|
-
puts "Will copy config files from #{processor_config_source_dir} to remote."
|
34
|
-
puts "WARNING: This will overwrite any existing files with the same name!"
|
35
|
-
puts "Do you really want to do this?"
|
36
|
-
input = STDIN.gets.chomp
|
37
|
-
|
38
|
-
unless ['y', 'Y'].include?(input)
|
39
|
-
raise "Not confirmed. Stop."
|
40
|
-
end
|
41
|
-
|
42
|
-
puts "Command: #{cmd}" if global_options['v']
|
43
|
-
|
44
|
-
Bundler.with_clean_env do
|
45
|
-
system cmd
|
46
|
-
end
|
47
|
-
end
|
48
|
-
|
49
|
-
puts "Done."
|
50
|
-
end
|
51
|
-
end
|
1
|
+
desc 'Copies the config directory of a given processor to remote'
|
2
|
+
command :copy_config do |c|
|
3
|
+
c.flag([:s, :source], :desc => "Source config directory", :default_value => Eh::Settings.current.source_config_dir, :long_desc => "A local directory containing subfolders for each of the processors")
|
4
|
+
c.flag([:p, :processors], :desc => "Specify what processors' configs to copy", :type => Array, :long_desc => "You can specify multiple processors by providing a comma-separated list.")
|
5
|
+
|
6
|
+
c.action do |global_options, options, args|
|
7
|
+
source_config_dir = options['s']
|
8
|
+
repository_deployment_dir = File.join(Eh::Settings.current.repository_root_dir, "branches", "master", "src", "deployment")
|
9
|
+
|
10
|
+
processor_names = Dir["#{source_config_dir}/*"].map do |dir|
|
11
|
+
File.basename(dir)
|
12
|
+
end
|
13
|
+
|
14
|
+
included_processor_names = processor_names
|
15
|
+
|
16
|
+
# only include processors specified by -p option, if option is given
|
17
|
+
if options['p']
|
18
|
+
included_processor_names = included_processor_names.select do |processor_name|
|
19
|
+
options['p'].include?(processor_name)
|
20
|
+
end
|
21
|
+
end
|
22
|
+
|
23
|
+
# make sure we have at least one processor
|
24
|
+
if included_processor_names.empty?
|
25
|
+
raise "There are no processor configs to copy. Either there is nothing in #{source_config_dir} or the processor(s) specified with -p don't exist."
|
26
|
+
end
|
27
|
+
|
28
|
+
included_processor_names.each do |processor_name|
|
29
|
+
processor_config_source_dir = File.join(source_config_dir, processor_name)
|
30
|
+
|
31
|
+
cmd = "cd #{repository_deployment_dir} && COPY_FROM_DIR=#{processor_config_source_dir} bundle exec cap event_hub:scp_copy_config"
|
32
|
+
|
33
|
+
puts "Will copy config files from #{processor_config_source_dir} to remote."
|
34
|
+
puts "WARNING: This will overwrite any existing files with the same name!"
|
35
|
+
puts "Do you really want to do this?"
|
36
|
+
input = STDIN.gets.chomp
|
37
|
+
|
38
|
+
unless ['y', 'Y'].include?(input)
|
39
|
+
raise "Not confirmed. Stop."
|
40
|
+
end
|
41
|
+
|
42
|
+
puts "Command: #{cmd}" if global_options['v']
|
43
|
+
|
44
|
+
Bundler.with_clean_env do
|
45
|
+
system cmd
|
46
|
+
end
|
47
|
+
end
|
48
|
+
|
49
|
+
puts "Done."
|
50
|
+
end
|
51
|
+
end
|