negroku 2.0.0.pre7 → 2.0.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/lib/negroku/cli.rb +1 -1
- data/lib/negroku/deploy.rb +2 -0
- data/lib/negroku/helpers/watch.rb +4 -4
- data/lib/negroku/tasks/delayed_job.rake +2 -0
- data/lib/negroku/tasks/eye/delayed_job.rake +41 -13
- data/lib/negroku/tasks/eye/unicorn.rake +7 -1
- data/lib/negroku/tasks/eye.rake +12 -16
- data/lib/negroku/tasks/unicorn.rake +1 -1
- data/lib/negroku/templates/negroku/stage.rb.erb +5 -0
- data/lib/negroku/templates/tasks/eye/_delayed_job.erb +14 -21
- data/lib/negroku/templates/tasks/eye/_unicorn.erb +1 -4
- data/lib/negroku/templates/tasks/eye/application.eye.erb +9 -10
- data/lib/negroku/version.rb +1 -1
- data/negroku.gemspec +4 -4
- metadata +12 -12
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 24cc285eb9ad2b4813daa33d542768b9d5b847d0
|
4
|
+
data.tar.gz: 7d75f4b9772ef0e518da35a78123fa87ff1a07ff
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: fe22dc6821c831de3b2ca26cd7cf45720ecb6eadaff61f9f89f37303dfdfeb3b7ad63c52be882e601022274f1b1f631d1327742ce4c2314dc81ff5c3ba201da0
|
7
|
+
data.tar.gz: 0699cbe9a573d0e0ca403e579e6686ebb8bb50450319e3d595f173618cc340c202a1297d8466c52aee04ff776acdcb4294da0beeb37a7a2241f18e768f3a515b
|
data/lib/negroku/cli.rb
CHANGED
@@ -3,7 +3,7 @@ require 'capistrano/setup'
|
|
3
3
|
require 'capistrano/deploy'
|
4
4
|
|
5
5
|
# Load applications deploy config if it exists
|
6
|
-
require './config/deploy' if File.exists? "./config/deploy"
|
6
|
+
require './config/deploy' if File.exists? "./config/deploy.rb"
|
7
7
|
|
8
8
|
require 'gli'
|
9
9
|
require 'inquirer'
|
data/lib/negroku/deploy.rb
CHANGED
@@ -1,9 +1,9 @@
|
|
1
|
-
def watch_process(name,
|
1
|
+
def watch_process(name, options = {})
|
2
2
|
processes = fetch(:eye_watched_processes, {})
|
3
3
|
|
4
|
-
|
5
|
-
|
6
|
-
|
4
|
+
options[:template] ||= "tasks/eye/_#{name}.erb"
|
5
|
+
|
6
|
+
processes[name] = options
|
7
7
|
|
8
8
|
set :eye_watched_processes, processes
|
9
9
|
end
|
@@ -1,21 +1,49 @@
|
|
1
1
|
#########
|
2
2
|
## Adds support to monitor delayed_job processes through eye
|
3
3
|
#########
|
4
|
+
def delayed_job_args
|
5
|
+
args = []
|
6
|
+
args << "--queues=#{fetch(:delayed_job_queues).join(',')}" unless fetch(:delayed_job_queues).nil?
|
7
|
+
args << "--prefix=#{fetch(:delayed_job_prefix)}" unless fetch(:delayed_job_prefix).nil?
|
8
|
+
args << fetch(:delayed_job_pools, {}).map {|k,v| "--pool=#{k}:#{v}"}.join(' ') unless fetch(:delayed_job_pools).nil?
|
9
|
+
args.join(' ')
|
10
|
+
end
|
11
|
+
|
12
|
+
def delayed_job_bin
|
13
|
+
"#{fetch(:delayed_job_bin_path)}/delayed_job"
|
14
|
+
end
|
15
|
+
|
16
|
+
def delayed_job_start_command
|
17
|
+
"#{fetch(:rbenv_prefix)} bundle exec #{delayed_job_bin} #{delayed_job_args} -i \#{i} start"
|
18
|
+
end
|
19
|
+
|
20
|
+
def delayed_job_stop_command
|
21
|
+
"#{fetch(:rbenv_prefix)} bundle exec #{delayed_job_bin} -i \#{i} stop"
|
22
|
+
end
|
4
23
|
|
5
24
|
# Watch the delayed_job processes using the build in template
|
6
|
-
|
25
|
+
namespace :eye do
|
26
|
+
task :watch_process do
|
27
|
+
|
28
|
+
watch_process(:delayed_job, {
|
29
|
+
start_command: delayed_job_start_command,
|
30
|
+
stop_command: delayed_job_stop_command
|
31
|
+
})
|
32
|
+
|
33
|
+
end
|
34
|
+
end
|
7
35
|
|
8
36
|
# Override start, restart and stop delayed_job tasks to so they call
|
9
37
|
# the eye equivalents
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
14
|
-
#
|
15
|
-
|
16
|
-
|
17
|
-
|
18
|
-
|
19
|
-
|
20
|
-
|
21
|
-
|
38
|
+
namespace :delayed_job do
|
39
|
+
['start','restart','stop'].each do |cmd|
|
40
|
+
if Rake::Task.task_defined?("delayed_job:#{cmd}")
|
41
|
+
Rake::Task["delayed_job:#{cmd}"].clear_actions
|
42
|
+
# Reload or restart delayed_job after the application is published
|
43
|
+
desc "using eye"
|
44
|
+
task cmd do
|
45
|
+
invoke "eye:#{cmd}", 'delayed-job'
|
46
|
+
end
|
47
|
+
end
|
48
|
+
end
|
49
|
+
end
|
@@ -3,7 +3,13 @@
|
|
3
3
|
#########
|
4
4
|
|
5
5
|
# Watch the unicorn processes using the build in template
|
6
|
-
|
6
|
+
namespace :eye do
|
7
|
+
task :watch_process do
|
8
|
+
|
9
|
+
watch_process(:unicorn);
|
10
|
+
|
11
|
+
end
|
12
|
+
end
|
7
13
|
|
8
14
|
# Override start, restart and stop unicorn tasks to so they call
|
9
15
|
# the eye equivalents
|
data/lib/negroku/tasks/eye.rake
CHANGED
@@ -12,6 +12,10 @@ namespace :load do
|
|
12
12
|
# Local path to look for custom config template
|
13
13
|
set :eye_application_template, -> { "config/deploy/#{fetch(:stage)}/eye.rb.erb" }
|
14
14
|
|
15
|
+
# Application level notifications
|
16
|
+
set :eye_notification_contact, -> { :monitor }
|
17
|
+
set :eye_notification_level, -> { :error }
|
18
|
+
|
15
19
|
# Add eye to :rbenv_map_bins
|
16
20
|
fetch(:rbenv_map_bins) << 'eye'
|
17
21
|
end
|
@@ -23,28 +27,20 @@ namespace :eye do
|
|
23
27
|
desc "Loads eye config and starts monitoring"
|
24
28
|
task :load do
|
25
29
|
on release_roles fetch(:eye_roles) do
|
26
|
-
within
|
30
|
+
within current_path do
|
27
31
|
execute :eye, :load, "#{shared_path}/config/eye.rb"
|
28
32
|
end
|
29
33
|
end
|
30
34
|
end
|
31
35
|
|
32
36
|
[:start,:restart, :info, :stop].each do |cmd|
|
33
|
-
# Single process
|
34
|
-
desc "Calls eye's #{cmd.to_s} on a process"
|
35
|
-
task "#{cmd}:process", [:name] do |t, args|
|
36
|
-
on release_roles fetch(:eye_roles) do
|
37
|
-
within "#{current_path}" do
|
38
|
-
execute :eye, cmd, "#{args[:name]}"
|
39
|
-
end
|
40
|
-
end
|
41
|
-
end
|
42
|
-
#
|
43
37
|
desc "Calls eye's #{cmd.to_s} on the whole app"
|
44
|
-
task cmd do |t, args|
|
38
|
+
task cmd, [:mask] do |t, args|
|
45
39
|
on release_roles fetch(:eye_roles) do
|
46
|
-
within
|
47
|
-
|
40
|
+
within current_path do
|
41
|
+
mask = fetch(:application)
|
42
|
+
mask += ":#{args[:mask]}" if args[:mask]
|
43
|
+
execute :eye, cmd, mask
|
48
44
|
end
|
49
45
|
end
|
50
46
|
end
|
@@ -58,7 +54,7 @@ namespace :negroku do
|
|
58
54
|
namespace :eye do
|
59
55
|
|
60
56
|
desc "Upload eye configuration file"
|
61
|
-
task :setup do
|
57
|
+
task :setup => 'eye:watch_process' do
|
62
58
|
on release_roles fetch(:eye_roles) do
|
63
59
|
within "#{shared_path}/config" do
|
64
60
|
processes = fetch(:eye_watched_processes, {})
|
@@ -78,7 +74,7 @@ namespace :negroku do
|
|
78
74
|
end
|
79
75
|
end
|
80
76
|
|
81
|
-
|
77
|
+
before "deploy:published", "negroku:eye:setup"
|
82
78
|
after "negroku:eye:setup", "eye:load"
|
83
79
|
|
84
80
|
define_logs(:eye, {
|
@@ -11,3 +11,8 @@ set :branch, '<%= data[:branch] %>' # Optional, defaults to master
|
|
11
11
|
|
12
12
|
# Rails configuration
|
13
13
|
# set :rails_env, 'production'
|
14
|
+
|
15
|
+
# Eye monitoring notifications
|
16
|
+
# set :eye_notification_contact, :dev_team # Optional, defaults to :monitor
|
17
|
+
# set :eye_notification_level, :info # Optional, defaults to :error
|
18
|
+
|
@@ -1,28 +1,21 @@
|
|
1
|
-
|
1
|
+
group 'delayed-jobs' do
|
2
|
+
chain grace: 10.seconds
|
2
3
|
|
3
|
-
|
4
|
+
start_timeout 20.seconds
|
5
|
+
stop_timeout 20.seconds
|
6
|
+
restart_timeout 20.seconds
|
4
7
|
|
5
|
-
workers_count =
|
6
|
-
YAML.load_file(config_path).try(:[], :workers) || 5
|
7
|
-
else
|
8
|
-
5
|
9
|
-
end
|
8
|
+
workers_count = '<%= fetch(:delayed_job_workers || 1) %>'.to_i
|
10
9
|
|
11
|
-
|
12
|
-
working_dir cwd
|
13
|
-
stop_on_delete true
|
10
|
+
(0 ... workers_count.to_i).each do |i|
|
14
11
|
|
15
|
-
|
16
|
-
|
12
|
+
process "worker-#{i}" do
|
13
|
+
pid_file "tmp/pids/delayed_job.#{i}.pid"
|
14
|
+
start_command "<%= options[:start_command] %>"
|
15
|
+
stop_command "<%= options[:stop_command] %>"
|
16
|
+
end
|
17
17
|
|
18
|
-
(1 .. workers_count).each do |i|
|
19
|
-
process "dj-#{i}" do
|
20
|
-
pid_file "tmp/pids/delayed_job.#{i}.pid"
|
21
|
-
start_command "rake jobs:work"
|
22
|
-
daemonize true
|
23
|
-
stop_signals [:INT, 30.seconds, :TERM, 10.seconds, :KILL]
|
24
|
-
stdall "log/dj-#{i}.log"
|
25
|
-
end
|
26
18
|
end
|
19
|
+
|
27
20
|
end
|
28
|
-
|
21
|
+
|
@@ -1,9 +1,6 @@
|
|
1
|
-
RAILS_ENV="<%= fetch(:rails_env) %>"
|
2
|
-
|
3
1
|
process 'unicorn' do
|
4
|
-
env rbenv_root: "<%= fetch(:rbenv_path) %>", rbenv_version: "<%=fetch(:rbenv_ruby) %>"
|
5
2
|
pid_file "<%= fetch(:unicorn_pid) %>"
|
6
|
-
start_command "<%= fetch(:rbenv_prefix) %> bundle exec unicorn -Dc <%= fetch(:unicorn_config_path) %> -E
|
3
|
+
start_command "<%= fetch(:rbenv_prefix) %> bundle exec unicorn -Dc <%= fetch(:unicorn_config_path) %> -E <%= fetch(:rails_env) %>"
|
7
4
|
stdall "<%= fetch(:unicorn_log) %>"
|
8
5
|
|
9
6
|
# stop signals:
|
@@ -1,19 +1,18 @@
|
|
1
|
-
require 'eye-http'
|
2
|
-
|
3
|
-
# Setups Eye global conf if not already
|
4
|
-
Eye.config do
|
5
|
-
logger '/var/log/eye-global.log'
|
6
|
-
http :enable => true, :host => "0.0.0.0", :port => 12345
|
7
|
-
end
|
8
|
-
|
9
1
|
# Adding application
|
10
2
|
Eye.application '<%= fetch(:application)%>' do
|
3
|
+
notify :<%= fetch(:eye_notification_contact) %>, :<%= fetch(:eye_notification_level) %>
|
4
|
+
notify :chat_room, :<%= fetch(:eye_notification_level) %>
|
5
|
+
|
6
|
+
load_env '<%= shared_path %>/.rbenv-vars'
|
7
|
+
|
8
|
+
env RBENV_ROOT: "<%= fetch(:rbenv_path) %>"
|
9
|
+
env RBENV_VERSION: "<%=fetch(:rbenv_ruby) %>"
|
10
|
+
env RAILS_ENV: "<%= fetch(:rails_env) %>"
|
11
11
|
|
12
12
|
# All options inherits down to the config leafs.
|
13
13
|
# except `env`, which merging down
|
14
|
-
|
15
|
-
stdall '<%= shared_path %>/log/eye.log'
|
16
14
|
working_dir '<%= current_path %>'
|
15
|
+
stdall '<%= shared_path %>/log/eye.log'
|
17
16
|
|
18
17
|
trigger :flapping, times: 10, within: 1.minute, retry_in: 10.minutes
|
19
18
|
|
data/lib/negroku/version.rb
CHANGED
data/negroku.gemspec
CHANGED
@@ -21,17 +21,17 @@ spec = Gem::Specification.new do |s|
|
|
21
21
|
|
22
22
|
s.add_runtime_dependency('rake', '~> 10.1')
|
23
23
|
s.add_runtime_dependency('capistrano','~> 3.3.5')
|
24
|
-
s.add_runtime_dependency('capistrano-rbenv', '~> 2.0.
|
24
|
+
s.add_runtime_dependency('capistrano-rbenv', '~> 2.0.3')
|
25
25
|
s.add_runtime_dependency('capistrano-rails', '~> 1.1.2')
|
26
|
-
s.add_runtime_dependency('capistrano-bundler', '~> 1.1.
|
26
|
+
s.add_runtime_dependency('capistrano-bundler', '~> 1.1.4')
|
27
27
|
s.add_runtime_dependency('capistrano-npm', '~> 1.0.1')
|
28
28
|
s.add_runtime_dependency('capistrano-nc', '~> 0.1.4')
|
29
29
|
|
30
30
|
s.add_runtime_dependency('capistrano-nodenv', '~> 1.0.0')
|
31
|
-
s.add_runtime_dependency('capistrano-bower', '~> 1.
|
31
|
+
s.add_runtime_dependency('capistrano-bower', '~> 1.1.0')
|
32
32
|
s.add_runtime_dependency('capistrano3-nginx', '~> 2.0.4')
|
33
33
|
s.add_runtime_dependency('capistrano3-unicorn', '~> 0.2.1')
|
34
|
-
s.add_runtime_dependency('capistrano3-delayed-job', '~> 1.
|
34
|
+
s.add_runtime_dependency('capistrano3-delayed-job', '~> 1.3.0')
|
35
35
|
s.add_runtime_dependency('whenever', '~> 0.9.4')
|
36
36
|
|
37
37
|
s.add_runtime_dependency('gli','~> 2.12.2')
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: negroku
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 2.0.0
|
4
|
+
version: 2.0.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Juan Ignacio Donoso
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date: 2015-
|
11
|
+
date: 2015-03-04 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: rdoc
|
@@ -86,14 +86,14 @@ dependencies:
|
|
86
86
|
requirements:
|
87
87
|
- - ~>
|
88
88
|
- !ruby/object:Gem::Version
|
89
|
-
version: 2.0.
|
89
|
+
version: 2.0.3
|
90
90
|
type: :runtime
|
91
91
|
prerelease: false
|
92
92
|
version_requirements: !ruby/object:Gem::Requirement
|
93
93
|
requirements:
|
94
94
|
- - ~>
|
95
95
|
- !ruby/object:Gem::Version
|
96
|
-
version: 2.0.
|
96
|
+
version: 2.0.3
|
97
97
|
- !ruby/object:Gem::Dependency
|
98
98
|
name: capistrano-rails
|
99
99
|
requirement: !ruby/object:Gem::Requirement
|
@@ -114,14 +114,14 @@ dependencies:
|
|
114
114
|
requirements:
|
115
115
|
- - ~>
|
116
116
|
- !ruby/object:Gem::Version
|
117
|
-
version: 1.1.
|
117
|
+
version: 1.1.4
|
118
118
|
type: :runtime
|
119
119
|
prerelease: false
|
120
120
|
version_requirements: !ruby/object:Gem::Requirement
|
121
121
|
requirements:
|
122
122
|
- - ~>
|
123
123
|
- !ruby/object:Gem::Version
|
124
|
-
version: 1.1.
|
124
|
+
version: 1.1.4
|
125
125
|
- !ruby/object:Gem::Dependency
|
126
126
|
name: capistrano-npm
|
127
127
|
requirement: !ruby/object:Gem::Requirement
|
@@ -170,14 +170,14 @@ dependencies:
|
|
170
170
|
requirements:
|
171
171
|
- - ~>
|
172
172
|
- !ruby/object:Gem::Version
|
173
|
-
version: 1.
|
173
|
+
version: 1.1.0
|
174
174
|
type: :runtime
|
175
175
|
prerelease: false
|
176
176
|
version_requirements: !ruby/object:Gem::Requirement
|
177
177
|
requirements:
|
178
178
|
- - ~>
|
179
179
|
- !ruby/object:Gem::Version
|
180
|
-
version: 1.
|
180
|
+
version: 1.1.0
|
181
181
|
- !ruby/object:Gem::Dependency
|
182
182
|
name: capistrano3-nginx
|
183
183
|
requirement: !ruby/object:Gem::Requirement
|
@@ -212,14 +212,14 @@ dependencies:
|
|
212
212
|
requirements:
|
213
213
|
- - ~>
|
214
214
|
- !ruby/object:Gem::Version
|
215
|
-
version: 1.
|
215
|
+
version: 1.3.0
|
216
216
|
type: :runtime
|
217
217
|
prerelease: false
|
218
218
|
version_requirements: !ruby/object:Gem::Requirement
|
219
219
|
requirements:
|
220
220
|
- - ~>
|
221
221
|
- !ruby/object:Gem::Version
|
222
|
-
version: 1.
|
222
|
+
version: 1.3.0
|
223
223
|
- !ruby/object:Gem::Dependency
|
224
224
|
name: whenever
|
225
225
|
requirement: !ruby/object:Gem::Requirement
|
@@ -357,9 +357,9 @@ required_ruby_version: !ruby/object:Gem::Requirement
|
|
357
357
|
version: '0'
|
358
358
|
required_rubygems_version: !ruby/object:Gem::Requirement
|
359
359
|
requirements:
|
360
|
-
- - '
|
360
|
+
- - '>='
|
361
361
|
- !ruby/object:Gem::Version
|
362
|
-
version:
|
362
|
+
version: '0'
|
363
363
|
requirements: []
|
364
364
|
rubyforge_project:
|
365
365
|
rubygems_version: 2.0.14
|