capistrano-sidekiq 0.5.4 → 0.10.0
Sign up to get free protection for your applications and to get access to all the features.
- checksums.yaml +4 -4
- data/CHANGELOG +28 -0
- data/README.md +27 -51
- data/lib/capistrano/sidekiq/version.rb +1 -1
- data/lib/capistrano/tasks/monit.rake +6 -0
- data/lib/capistrano/tasks/sidekiq.rake +26 -17
- data/lib/generators/capistrano/sidekiq/monit/templates/sidekiq_monit.conf.erb +2 -2
- metadata +4 -4
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA1:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: 69a2a6423d42f07ee23487128a5539cf2a56b683
|
4
|
+
data.tar.gz: 775482d2ea6668dc3e18b275e943f66661ccddcd
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: 2ac6151abfb25fdc04602ee0b7e3ce1d3085dac41f9a7da1a153d536e744778f37a4e00505d95aba1a94d2de17bd789ae1b6bf9c71c784df985b208ae30fbd77
|
7
|
+
data.tar.gz: d9c1a0b198e6b4c460d546b0e9c54ddd73e5e01e20f88f8efd631ffb5193ffe44ea747c4c7390bf51fe89d63e6c6396cbb0c58044f6925be3c9de28a3056d2f3
|
data/CHANGELOG
ADDED
@@ -0,0 +1,28 @@
|
|
1
|
+
## Changelog
|
2
|
+
- 0.10.0:
|
3
|
+
* Fix Monit tasks
|
4
|
+
* sidekiq:stop task perpertually callable
|
5
|
+
- 0.5.4: Add support for custom count of processes per host in monit task @okoriko
|
6
|
+
- 0.5.3: Custom count of processes per each host
|
7
|
+
- 0.5.0: Multiple processes @mrsimo
|
8
|
+
- 0.3.9: Restore daemon flag from Monit template
|
9
|
+
- 0.3.8:
|
10
|
+
* Update monit template: use su instead of sudo / permit all Sidekiq options @bensie
|
11
|
+
* Unmonitor monit while deploy @Saicheg
|
12
|
+
- 0.3.7:
|
13
|
+
* fix capistrano2 task @tribble
|
14
|
+
* Run Sidekiq as daemon from Monit @dpaluy
|
15
|
+
- 0.3.5: Added :sidekiq_tag for capistrano2 @OscarBarrett
|
16
|
+
- 0.3.4: fix bug in sidekiq:start for capistrano 2 task
|
17
|
+
- 0.3.3: sidekiq:restart after deploy:restart added to default hooks
|
18
|
+
- 0.3.2: :sidekiq_queue accept an array
|
19
|
+
- 0.3.1: Fix logs @rottman, add concurrency option support @ungsophy
|
20
|
+
- 0.3.0: Fix monit task @andreygerasimchuk
|
21
|
+
- 0.2.9: Check if current directory exist @alexdunae
|
22
|
+
- 0.2.8: Added :sidekiq_queue & :sidekiq_config
|
23
|
+
- 0.2.7: Signal usage @penso
|
24
|
+
- 0.2.6: sidekiq:start check if sidekiq is running
|
25
|
+
- 0.2.5: bug fixes
|
26
|
+
- 0.2.4: Fast deploy with :sidekiq_run_in_background
|
27
|
+
- 0.2.3: Added monit tasks (alpha)
|
28
|
+
- 0.2.0: Added sidekiq:rolling_restart - @jlecour
|
data/README.md
CHANGED
@@ -22,35 +22,38 @@ And then execute:
|
|
22
22
|
|
23
23
|
## Usage
|
24
24
|
```ruby
|
25
|
-
|
26
|
-
|
27
|
-
|
28
|
-
require 'capistrano/sidekiq/monit' #to require monit tasks # Only for capistrano3
|
25
|
+
# Capfile
|
26
|
+
require 'capistrano/sidekiq'
|
27
|
+
require 'capistrano/sidekiq/monit' #to require monit tasks # Only for capistrano3
|
29
28
|
```
|
30
29
|
|
31
30
|
|
32
31
|
Configurable options, shown here with defaults:
|
33
32
|
|
34
33
|
```ruby
|
35
|
-
|
36
|
-
|
37
|
-
|
38
|
-
|
39
|
-
|
40
|
-
|
41
|
-
|
42
|
-
|
43
|
-
|
44
|
-
|
45
|
-
|
46
|
-
|
47
|
-
|
48
|
-
|
49
|
-
|
50
|
-
|
51
|
-
|
52
|
-
|
53
|
-
|
34
|
+
:sidekiq_default_hooks => true
|
35
|
+
:sidekiq_pid => File.join(shared_path, 'tmp', 'pids', 'sidekiq.pid') # ensure this path exists in production before deploying.
|
36
|
+
:sidekiq_env => fetch(:rack_env, fetch(:rails_env, fetch(:stage)))
|
37
|
+
:sidekiq_log => File.join(shared_path, 'log', 'sidekiq.log')
|
38
|
+
:sidekiq_options => nil
|
39
|
+
:sidekiq_require => nil
|
40
|
+
:sidekiq_tag => nil
|
41
|
+
:sidekiq_config => nil # if you have a config/sidekiq.yml, do not forget to set this.
|
42
|
+
:sidekiq_queue => nil
|
43
|
+
:sidekiq_timeout => 10
|
44
|
+
:sidekiq_role => :app
|
45
|
+
:sidekiq_processes => 1
|
46
|
+
:sidekiq_options_per_process => nil
|
47
|
+
:sidekiq_concurrency => nil
|
48
|
+
:sidekiq_monit_templates_path => 'config/deploy/templates'
|
49
|
+
:sidekiq_monit_conf_dir => '/etc/monit/conf.d'
|
50
|
+
:sidekiq_monit_use_sudo => true
|
51
|
+
:monit_bin => '/usr/bin/monit'
|
52
|
+
:sidekiq_monit_default_hooks => true
|
53
|
+
:sidekiq_service_name => "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}"
|
54
|
+
:sidekiq_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiq" # Only for capistrano2.5
|
55
|
+
:sidekiqctl_cmd => "#{fetch(:bundle_cmd, "bundle")} exec sidekiqctl" # Only for capistrano2.5
|
56
|
+
:sidekiq_user => nil #user to run sidekiq as
|
54
57
|
```
|
55
58
|
|
56
59
|
There is a known bug that prevents sidekiq from starting when pty is true on Capistrano 3.
|
@@ -88,8 +91,7 @@ server 'example-big.com', roles: [:sidekiq_big]
|
|
88
91
|
If you need change some config in redactor, you can
|
89
92
|
|
90
93
|
```
|
91
|
-
|
92
|
-
|
94
|
+
bundle exec rails generate capistrano:sidekiq:monit:template
|
93
95
|
```
|
94
96
|
|
95
97
|
If your deploy user has no need in `sudo` for using monit, you can disable it as follows:
|
@@ -98,32 +100,6 @@ If your deploy user has no need in `sudo` for using monit, you can disable it as
|
|
98
100
|
set :sidekiq_monit_use_sudo, false
|
99
101
|
```
|
100
102
|
|
101
|
-
## Changelog
|
102
|
-
- 0.5.4: Add support for custom count of processes per host in monit task @okoriko
|
103
|
-
- 0.5.3: Custom count of processes per each host
|
104
|
-
- 0.5.0: Multiple processes @mrsimo
|
105
|
-
- 0.3.9: Restore daemon flag from Monit template
|
106
|
-
- 0.3.8:
|
107
|
-
* Update monit template: use su instead of sudo / permit all Sidekiq options @bensie
|
108
|
-
* Unmonitor monit while deploy @Saicheg
|
109
|
-
- 0.3.7:
|
110
|
-
* fix capistrano2 task @tribble
|
111
|
-
* Run Sidekiq as daemon from Monit @dpaluy
|
112
|
-
- 0.3.5: Added :sidekiq_tag for capistrano2 @OscarBarrett
|
113
|
-
- 0.3.4: fix bug in sidekiq:start for capistrano 2 task
|
114
|
-
- 0.3.3: sidekiq:restart after deploy:restart added to default hooks
|
115
|
-
- 0.3.2: :sidekiq_queue accept an array
|
116
|
-
- 0.3.1: Fix logs @rottman, add concurrency option support @ungsophy
|
117
|
-
- 0.3.0: Fix monit task @andreygerasimchuk
|
118
|
-
- 0.2.9: Check if current directory exist @alexdunae
|
119
|
-
- 0.2.8: Added :sidekiq_queue & :sidekiq_config
|
120
|
-
- 0.2.7: Signal usage @penso
|
121
|
-
- 0.2.6: sidekiq:start check if sidekiq is running
|
122
|
-
- 0.2.5: bug fixes
|
123
|
-
- 0.2.4: Fast deploy with :sidekiq_run_in_background
|
124
|
-
- 0.2.3: Added monit tasks (alpha)
|
125
|
-
- 0.2.0: Added sidekiq:rolling_restart - @jlecour
|
126
|
-
|
127
103
|
## Contributing
|
128
104
|
|
129
105
|
1. Fork it
|
@@ -119,6 +119,12 @@ namespace :sidekiq do
|
|
119
119
|
end
|
120
120
|
end
|
121
121
|
|
122
|
+
def sidekiq_require
|
123
|
+
if fetch(:sidekiq_require)
|
124
|
+
"--require #{fetch(:sidekiq_require)}"
|
125
|
+
end
|
126
|
+
end
|
127
|
+
|
122
128
|
def sidekiq_options_per_process
|
123
129
|
fetch(:sidekiq_options_per_process) || []
|
124
130
|
end
|
@@ -128,8 +128,8 @@ namespace :sidekiq do
|
|
128
128
|
|
129
129
|
desc 'Quiet sidekiq (stop processing new tasks)'
|
130
130
|
task :quiet do
|
131
|
-
on roles fetch(:sidekiq_role) do
|
132
|
-
switch_user do
|
131
|
+
on roles fetch(:sidekiq_role) do |role|
|
132
|
+
switch_user(role) do
|
133
133
|
if test("[ -d #{release_path} ]") # fixes #11
|
134
134
|
for_each_process(true) do |pid_file, idx|
|
135
135
|
if pid_process_exists?(pid_file)
|
@@ -143,8 +143,8 @@ namespace :sidekiq do
|
|
143
143
|
|
144
144
|
desc 'Stop sidekiq'
|
145
145
|
task :stop do
|
146
|
-
on roles fetch(:sidekiq_role) do
|
147
|
-
switch_user do
|
146
|
+
on roles fetch(:sidekiq_role) do |role|
|
147
|
+
switch_user(role) do
|
148
148
|
if test("[ -d #{release_path} ]")
|
149
149
|
for_each_process(true) do |pid_file, idx|
|
150
150
|
if pid_process_exists?(pid_file)
|
@@ -154,12 +154,13 @@ namespace :sidekiq do
|
|
154
154
|
end
|
155
155
|
end
|
156
156
|
end
|
157
|
+
Rake::Task["sidekiq:stop"].reenable
|
157
158
|
end
|
158
159
|
|
159
160
|
desc 'Start sidekiq'
|
160
161
|
task :start do
|
161
|
-
on roles fetch(:sidekiq_role) do
|
162
|
-
switch_user do
|
162
|
+
on roles fetch(:sidekiq_role) do |role|
|
163
|
+
switch_user(role) do
|
163
164
|
for_each_process do |pid_file, idx|
|
164
165
|
start_sidekiq(pid_file, idx) unless pid_process_exists?(pid_file)
|
165
166
|
end
|
@@ -175,8 +176,8 @@ namespace :sidekiq do
|
|
175
176
|
|
176
177
|
desc 'Rolling-restart sidekiq'
|
177
178
|
task :rolling_restart do
|
178
|
-
on roles fetch(:sidekiq_role) do
|
179
|
-
switch_user do
|
179
|
+
on roles fetch(:sidekiq_role) do |role|
|
180
|
+
switch_user(role) do
|
180
181
|
for_each_process(true) do |pid_file, idx|
|
181
182
|
if pid_process_exists?(pid_file)
|
182
183
|
stop_sidekiq(pid_file)
|
@@ -189,8 +190,8 @@ namespace :sidekiq do
|
|
189
190
|
|
190
191
|
# Delete any pid file not in use
|
191
192
|
task :cleanup do
|
192
|
-
on roles fetch(:sidekiq_role) do
|
193
|
-
switch_user do
|
193
|
+
on roles fetch(:sidekiq_role) do |role|
|
194
|
+
switch_user(role) do
|
194
195
|
for_each_process do |pid_file, idx|
|
195
196
|
if pid_file_exists?(pid_file)
|
196
197
|
execute "rm #{pid_file}" unless pid_process_exists?(pid_file)
|
@@ -204,8 +205,8 @@ namespace :sidekiq do
|
|
204
205
|
desc 'Respawn missing sidekiq processes'
|
205
206
|
task :respawn do
|
206
207
|
invoke 'sidekiq:cleanup'
|
207
|
-
on roles fetch(:sidekiq_role) do
|
208
|
-
switch_user do
|
208
|
+
on roles fetch(:sidekiq_role) do |role|
|
209
|
+
switch_user(role) do
|
209
210
|
for_each_process do |pid_file, idx|
|
210
211
|
unless pid_file_exists?(pid_file)
|
211
212
|
start_sidekiq(pid_file, idx)
|
@@ -215,15 +216,23 @@ namespace :sidekiq do
|
|
215
216
|
end
|
216
217
|
end
|
217
218
|
|
218
|
-
def switch_user(&block)
|
219
|
-
su_user =
|
220
|
-
if su_user
|
219
|
+
def switch_user(role, &block)
|
220
|
+
su_user = sidekiq_user(role)
|
221
|
+
if su_user == role.user
|
222
|
+
block.call
|
223
|
+
else
|
221
224
|
as su_user do
|
222
|
-
|
225
|
+
block.call
|
223
226
|
end
|
224
227
|
end
|
228
|
+
end
|
225
229
|
|
226
|
-
|
230
|
+
def sidekiq_user(role)
|
231
|
+
properties = role.properties
|
232
|
+
properties.fetch(:sidekiq_user) || # local property for sidekiq only
|
233
|
+
fetch(:sidekiq_user) ||
|
234
|
+
properties.fetch(:run_as) || # global property across multiple capistrano gems
|
235
|
+
role.user
|
227
236
|
end
|
228
237
|
|
229
238
|
def upload_sidekiq_template(from, to, role)
|
@@ -2,9 +2,9 @@
|
|
2
2
|
<% processes_pids.each_with_index do |pid_file, idx| %>
|
3
3
|
check process <%= sidekiq_service_name(idx) %>
|
4
4
|
with pidfile "<%= pid_file %>"
|
5
|
-
start program = "/bin/su - <%= @role
|
5
|
+
start program = "/bin/su - <%= sidekiq_user(@role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:sidekiq] %> <%= sidekiq_config %> --index <%= idx %> --pidfile <%= pid_file %> --environment <%= fetch(:sidekiq_env) %> <%= sidekiq_concurrency %> <%= sidekiq_logfile %> <%= sidekiq_require %> <%= sidekiq_queues %> <%= sidekiq_options_per_process[idx] %> -d'" with timeout 30 seconds
|
6
6
|
|
7
|
-
stop program = "/bin/su - <%= @role
|
7
|
+
stop program = "/bin/su - <%= sidekiq_user(@role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:sidekiqctl] %> stop <%= pid_file %>'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
|
8
8
|
group <%= fetch(:sidekiq_monit_group, fetch(:application)) %>-sidekiq
|
9
9
|
|
10
10
|
<% end %>
|
metadata
CHANGED
@@ -1,14 +1,14 @@
|
|
1
1
|
--- !ruby/object:Gem::Specification
|
2
2
|
name: capistrano-sidekiq
|
3
3
|
version: !ruby/object:Gem::Version
|
4
|
-
version: 0.
|
4
|
+
version: 0.10.0
|
5
5
|
platform: ruby
|
6
6
|
authors:
|
7
7
|
- Abdelkader Boudih
|
8
8
|
autorequire:
|
9
9
|
bindir: bin
|
10
10
|
cert_chain: []
|
11
|
-
date:
|
11
|
+
date: 2016-11-25 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -46,6 +46,7 @@ extensions: []
|
|
46
46
|
extra_rdoc_files: []
|
47
47
|
files:
|
48
48
|
- ".gitignore"
|
49
|
+
- CHANGELOG
|
49
50
|
- CONTRIBUTORS.md
|
50
51
|
- Gemfile
|
51
52
|
- LICENSE.txt
|
@@ -81,9 +82,8 @@ required_rubygems_version: !ruby/object:Gem::Requirement
|
|
81
82
|
version: '0'
|
82
83
|
requirements: []
|
83
84
|
rubyforge_project:
|
84
|
-
rubygems_version: 2.4
|
85
|
+
rubygems_version: 2.6.4
|
85
86
|
signing_key:
|
86
87
|
specification_version: 4
|
87
88
|
summary: Sidekiq integration for Capistrano
|
88
89
|
test_files: []
|
89
|
-
has_rdoc:
|