capistrano-sidekiq 0.5.4 → 0.10.0
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 +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:
|