capistrano-sidekiq 2.2.0 → 2.3.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/.tool-versions +1 -1
- data/CHANGELOG.md +16 -2
- data/Gemfile +1 -1
- data/README.md +0 -9
- data/Rakefile +1 -1
- data/lib/capistrano/sidekiq/helpers.rb +7 -14
- data/lib/capistrano/sidekiq/monit.rb +3 -1
- data/lib/capistrano/sidekiq/systemd.rb +4 -2
- data/lib/capistrano/sidekiq/version.rb +3 -1
- data/lib/capistrano/sidekiq.rb +4 -4
- data/lib/capistrano/tasks/systemd.rake +22 -19
- data/lib/generators/capistrano/sidekiq/monit/templates/sidekiq_monit.conf.erb +7 -5
- data/lib/generators/capistrano/sidekiq/systemd/templates/sidekiq.service.capistrano.erb +5 -7
- metadata +2 -7
- data/CONTRIBUTORS.md +0 -11
- data/lib/capistrano/sidekiq/upstart.rb +0 -15
- data/lib/capistrano/tasks/upstart.rake +0 -104
- data/lib/generators/capistrano/sidekiq/upstart/templates/sidekiq.conf.erb +0 -78
- data/lib/generators/capistrano/sidekiq/upstart/templates/workers.conf.erb +0 -37
checksums.yaml
CHANGED
@@ -1,7 +1,7 @@
|
|
1
1
|
---
|
2
2
|
SHA256:
|
3
|
-
metadata.gz:
|
4
|
-
data.tar.gz:
|
3
|
+
metadata.gz: f1305b19a72ddd0258d9802bb785bf4b35b8a365341ace29cc7f13a73b48e275
|
4
|
+
data.tar.gz: fb3d6649a6d38017d246b029b724054d19ab1121a5290cfc059435c49d71f1b8
|
5
5
|
SHA512:
|
6
|
-
metadata.gz:
|
7
|
-
data.tar.gz:
|
6
|
+
metadata.gz: f785e552f7e6d5ae48239cad1190450d153340bcbeb4b00128a5ef26f809561b0cd638e759221f9dfda2916812a60071ca597ab54a58b7973894777df2465baf
|
7
|
+
data.tar.gz: b59f3805ca7517b3b7378f05dd924c9135eb5cca57475b2b538d50ed0c379be383a2ec4cc8bf666e3d72cbb846df5fd5ace2d8f4262aeffc722b7082c2613760
|
data/.tool-versions
CHANGED
@@ -1 +1 @@
|
|
1
|
-
ruby
|
1
|
+
ruby 2.7.6
|
data/CHANGELOG.md
CHANGED
@@ -1,8 +1,18 @@
|
|
1
1
|
# Changelog
|
2
2
|
|
3
|
-
## [2.
|
3
|
+
## [2.3.0](https://github.com/seuros/capistrano-sidekiq/tree/2.3.0) (2022-05-17)
|
4
4
|
|
5
|
-
[Full Changelog](https://github.com/seuros/capistrano-sidekiq/compare/v2.
|
5
|
+
[Full Changelog](https://github.com/seuros/capistrano-sidekiq/compare/v2.2.0...2.3.0)
|
6
|
+
|
7
|
+
**Merged pull requests:**
|
8
|
+
|
9
|
+
- fix sidekiq processes naming when count is 1 [\#300](https://github.com/seuros/capistrano-sidekiq/pull/300) ([seuros](https://github.com/seuros))
|
10
|
+
- Support multiple processes in `sidekiq:install` [\#299](https://github.com/seuros/capistrano-sidekiq/pull/299) ([lloydwatkin](https://github.com/lloydwatkin))
|
11
|
+
- fix: monit config template [\#288](https://github.com/seuros/capistrano-sidekiq/pull/288) ([jpickwell](https://github.com/jpickwell))
|
12
|
+
|
13
|
+
## [v2.2.0](https://github.com/seuros/capistrano-sidekiq/tree/v2.2.0) (2022-05-16)
|
14
|
+
|
15
|
+
[Full Changelog](https://github.com/seuros/capistrano-sidekiq/compare/v2.1.0...v2.2.0)
|
6
16
|
|
7
17
|
**Merged pull requests:**
|
8
18
|
|
@@ -270,3 +280,7 @@
|
|
270
280
|
- More robust version checking [\#4](https://github.com/seuros/capistrano-sidekiq/pull/4) ([jlecour](https://github.com/jlecour))
|
271
281
|
- More explicit start command [\#3](https://github.com/seuros/capistrano-sidekiq/pull/3) ([jlecour](https://github.com/jlecour))
|
272
282
|
- Improve pid and log files settings [\#1](https://github.com/seuros/capistrano-sidekiq/pull/1) ([jlecour](https://github.com/jlecour))
|
283
|
+
|
284
|
+
|
285
|
+
|
286
|
+
\* *This Changelog was automatically generated by [github_changelog_generator](https://github.com/github-changelog-generator/github-changelog-generator)*
|
data/Gemfile
CHANGED
data/README.md
CHANGED
@@ -22,8 +22,6 @@ And then execute:
|
|
22
22
|
# Then select your service manager
|
23
23
|
install_plugin Capistrano::Sidekiq::Systemd
|
24
24
|
# or
|
25
|
-
install_plugin Capistrano::Sidekiq::Upstart # tests needed
|
26
|
-
# or
|
27
25
|
install_plugin Capistrano::Sidekiq::Monit # tests needed
|
28
26
|
```
|
29
27
|
|
@@ -67,13 +65,6 @@ Configurable options - Please ensure you check your version's branch for the ava
|
|
67
65
|
```
|
68
66
|
See `capistrano/sidekiq/helpers.rb` for other undocumented configuration settings.
|
69
67
|
|
70
|
-
## Known issues with Capistrano 3
|
71
|
-
|
72
|
-
There is a known bug that prevents sidekiq from starting when pty is true on Capistrano 3.
|
73
|
-
```ruby
|
74
|
-
set :pty, false
|
75
|
-
```
|
76
|
-
|
77
68
|
## Bundler
|
78
69
|
|
79
70
|
If you'd like to prepend `bundle exec` to your sidekiq and sidekiqctl calls, modify the SSHKit command maps
|
data/Rakefile
CHANGED
@@ -1,22 +1,18 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Capistrano
|
2
4
|
module Sidekiq::Helpers
|
3
5
|
|
4
6
|
def sidekiq_require
|
5
|
-
if fetch(:sidekiq_require)
|
6
|
-
"--require #{fetch(:sidekiq_require)}"
|
7
|
-
end
|
7
|
+
"--require #{fetch(:sidekiq_require)}" if fetch(:sidekiq_require)
|
8
8
|
end
|
9
9
|
|
10
10
|
def sidekiq_config
|
11
|
-
if fetch(:sidekiq_config)
|
12
|
-
"--config #{fetch(:sidekiq_config)}"
|
13
|
-
end
|
11
|
+
"--config #{fetch(:sidekiq_config)}" if fetch(:sidekiq_config)
|
14
12
|
end
|
15
13
|
|
16
14
|
def sidekiq_concurrency
|
17
|
-
if fetch(:sidekiq_concurrency)
|
18
|
-
"--concurrency #{fetch(:sidekiq_concurrency)}"
|
19
|
-
end
|
15
|
+
"--concurrency #{fetch(:sidekiq_concurrency)}" if fetch(:sidekiq_concurrency)
|
20
16
|
end
|
21
17
|
|
22
18
|
def sidekiq_queues
|
@@ -29,14 +25,12 @@ module Capistrano
|
|
29
25
|
fetch(:sidekiq_log)
|
30
26
|
end
|
31
27
|
|
32
|
-
def switch_user(role)
|
28
|
+
def switch_user(role, &block)
|
33
29
|
su_user = sidekiq_user(role)
|
34
30
|
if su_user == role.user
|
35
31
|
yield
|
36
32
|
else
|
37
|
-
as su_user
|
38
|
-
yield
|
39
|
-
end
|
33
|
+
as su_user, &block
|
40
34
|
end
|
41
35
|
end
|
42
36
|
|
@@ -55,6 +49,5 @@ module Capistrano
|
|
55
49
|
def expanded_bundle_path
|
56
50
|
backend.capture(:echo, SSHKit.config.command_map[:bundle]).strip
|
57
51
|
end
|
58
|
-
|
59
52
|
end
|
60
53
|
end
|
@@ -1,3 +1,5 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Capistrano
|
2
4
|
class Sidekiq::Monit < Capistrano::Plugin
|
3
5
|
include Sidekiq::Helpers
|
@@ -13,7 +15,7 @@ module Capistrano
|
|
13
15
|
end
|
14
16
|
|
15
17
|
def define_tasks
|
16
|
-
eval_rakefile File.expand_path('
|
18
|
+
eval_rakefile File.expand_path('../tasks/monit.rake', __dir__)
|
17
19
|
end
|
18
20
|
end
|
19
21
|
end
|
@@ -1,9 +1,11 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
module Capistrano
|
2
4
|
class Sidekiq::Systemd < Capistrano::Plugin
|
3
5
|
include Sidekiq::Helpers
|
4
6
|
|
5
7
|
def set_defaults
|
6
|
-
set_if_empty :sidekiq_service_unit_name, 'sidekiq' # This will change in version 3.0.0 to {application}
|
8
|
+
set_if_empty :sidekiq_service_unit_name, 'sidekiq' # This will change in version 3.0.0 to {application}_sidekiq_{stage}
|
7
9
|
set_if_empty :sidekiq_service_unit_user, :user # :system
|
8
10
|
set_if_empty :sidekiq_enable_lingering, true
|
9
11
|
set_if_empty :sidekiq_lingering_user, nil
|
@@ -11,7 +13,7 @@ module Capistrano
|
|
11
13
|
end
|
12
14
|
|
13
15
|
def define_tasks
|
14
|
-
eval_rakefile File.expand_path('
|
16
|
+
eval_rakefile File.expand_path('../tasks/systemd.rake', __dir__)
|
15
17
|
end
|
16
18
|
end
|
17
19
|
end
|
data/lib/capistrano/sidekiq.rb
CHANGED
@@ -1,10 +1,12 @@
|
|
1
|
+
# frozen_string_literal: true
|
2
|
+
|
1
3
|
require 'capistrano/bundler'
|
2
|
-
require
|
4
|
+
require 'capistrano/plugin'
|
3
5
|
|
4
6
|
module Capistrano
|
5
7
|
class Sidekiq < Capistrano::Plugin
|
6
8
|
def define_tasks
|
7
|
-
eval_rakefile File.expand_path('
|
9
|
+
eval_rakefile File.expand_path('tasks/sidekiq.rake', __dir__)
|
8
10
|
end
|
9
11
|
|
10
12
|
def set_defaults
|
@@ -21,11 +23,9 @@ module Capistrano
|
|
21
23
|
# Bundler integration
|
22
24
|
append :bundle_bins, 'sidekiq', 'sidekiqctl'
|
23
25
|
end
|
24
|
-
|
25
26
|
end
|
26
27
|
end
|
27
28
|
|
28
29
|
require_relative 'sidekiq/helpers'
|
29
30
|
require_relative 'sidekiq/systemd'
|
30
|
-
require_relative 'sidekiq/upstart'
|
31
31
|
require_relative 'sidekiq/monit'
|
@@ -146,18 +146,25 @@ namespace :sidekiq do
|
|
146
146
|
def create_systemd_template
|
147
147
|
ctemplate = compiled_template
|
148
148
|
systemd_path = fetch(:service_unit_path, fetch_systemd_unit_path)
|
149
|
-
systemd_file_name = File.join(systemd_path, sidekiq_service_file_name)
|
150
|
-
|
151
149
|
backend.execute :mkdir, '-p', systemd_path if fetch(:sidekiq_service_unit_user) == :user
|
152
150
|
|
153
|
-
|
154
|
-
|
155
|
-
if fetch(:sidekiq_service_unit_user) == :system
|
156
|
-
backend.execute :sudo, :mv, temp_file_name, systemd_file_name
|
157
|
-
backend.execute :sudo, :systemctl, 'daemon-reload'
|
151
|
+
if sidekiq_processes > 1
|
152
|
+
range = 1..sidekiq_processes
|
158
153
|
else
|
159
|
-
|
160
|
-
|
154
|
+
range = 0..0
|
155
|
+
end
|
156
|
+
range.each do |index|
|
157
|
+
temp_file_name = File.join('/tmp', sidekiq_service_file_name(index))
|
158
|
+
systemd_file_name = File.join(systemd_path, sidekiq_service_file_name(index))
|
159
|
+
backend.upload!(StringIO.new(ctemplate), temp_file_name)
|
160
|
+
|
161
|
+
if fetch(:sidekiq_service_unit_user) == :system
|
162
|
+
backend.execute :sudo, :mv, temp_file_name, systemd_file_name
|
163
|
+
backend.execute :sudo, :systemctl, 'daemon-reload'
|
164
|
+
else
|
165
|
+
backend.execute :mv, temp_file_name, systemd_file_name
|
166
|
+
backend.execute :systemctl, '--user', 'daemon-reload'
|
167
|
+
end
|
161
168
|
end
|
162
169
|
end
|
163
170
|
|
@@ -200,8 +207,7 @@ namespace :sidekiq do
|
|
200
207
|
else
|
201
208
|
[:systemctl, '--user']
|
202
209
|
end
|
203
|
-
|
204
|
-
if process
|
210
|
+
if process && sidekiq_processes > 1
|
205
211
|
execute_array.push(
|
206
212
|
*args, sidekiq_service_unit_name(process: process)
|
207
213
|
).flatten
|
@@ -255,15 +261,14 @@ namespace :sidekiq do
|
|
255
261
|
end.join(' ')
|
256
262
|
end
|
257
263
|
|
258
|
-
def sidekiq_service_file_name
|
259
|
-
"#{fetch(:sidekiq_service_unit_name)}.service"
|
264
|
+
def sidekiq_service_file_name(index = nil)
|
265
|
+
return "#{fetch(:sidekiq_service_unit_name)}.service" if index.to_i.zero?
|
266
|
+
"#{fetch(:sidekiq_service_unit_name)}@#{index}.service"
|
260
267
|
end
|
261
268
|
|
262
269
|
def sidekiq_service_unit_name(process: nil)
|
263
|
-
if process
|
270
|
+
if process && sidekiq_processes > 1
|
264
271
|
"#{fetch(:sidekiq_service_unit_name)}@#{process}"
|
265
|
-
elsif sidekiq_processes > 1
|
266
|
-
"#{fetch(:sidekiq_service_unit_name)}@{1..#{sidekiq_processes}}"
|
267
272
|
else
|
268
273
|
fetch(:sidekiq_service_unit_name)
|
269
274
|
end
|
@@ -272,9 +277,7 @@ namespace :sidekiq do
|
|
272
277
|
# process = 1 | sidekiq_systemd_1.yaml
|
273
278
|
# process = nil | sidekiq_systemd_%i.yaml
|
274
279
|
def sidekiq_systemd_config_name(process = nil)
|
275
|
-
|
276
|
-
file_name << (process&.to_s || '%i')
|
277
|
-
"#{file_name}.yaml"
|
280
|
+
"sidekiq_systemd_#{(process&.to_s || '%i')}.yaml"
|
278
281
|
end
|
279
282
|
|
280
283
|
def config_per_process?
|
@@ -1,6 +1,8 @@
|
|
1
|
-
# Monit configuration for Sidekiq
|
2
|
-
|
3
|
-
|
4
|
-
|
5
|
-
|
1
|
+
# Monit configuration for Sidekiq
|
2
|
+
# Service name: <%= sidekiq_service_name %>
|
3
|
+
#
|
4
|
+
check process <%= sidekiq_service_name %>
|
5
|
+
matching 'sidekiq .* <%= fetch(:application) %>'
|
6
|
+
start program = "/bin/su - <%= sidekiq_user(role) %> -c 'cd <%= current_path %> && <%= SSHKit.config.command_map[:bundle] %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_require %> <%= sidekiq_queues %> <%= sidekiq_logfile ? ">> #{sidekiq_logfile} 2>&1" : nil %> &'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
|
7
|
+
stop program = "/bin/su - <%= sidekiq_user(role) %> -c 'ps ax | grep "<%= "sidekiq .* #{fetch(:application)}" %>" | grep -v grep | awk "{print \$1}" | xargs --no-run-if-empty kill'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
|
6
8
|
group <%= fetch(:sidekiq_monit_group) || fetch(:application) %>-sidekiq
|
@@ -5,13 +5,13 @@
|
|
5
5
|
# Customize this file based on your bundler location, app directory, etc.
|
6
6
|
# Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu).
|
7
7
|
# Then run:
|
8
|
-
# - systemctl enable
|
9
|
-
# - systemctl {start,stop,restart}
|
8
|
+
# - systemctl enable <%= sidekiq_service_unit_name %>
|
9
|
+
# - systemctl {start,stop,restart} <%= sidekiq_service_unit_name %>
|
10
10
|
#
|
11
11
|
# This file corresponds to a single Sidekiq process. Add multiple copies
|
12
12
|
# to run multiple processes (sidekiq-1, sidekiq-2, etc).
|
13
13
|
#
|
14
|
-
# Use `journalctl -u
|
14
|
+
# Use `journalctl -u <%= sidekiq_service_unit_name %> -rn 100` to view the last 100 lines of log output.
|
15
15
|
#
|
16
16
|
[Unit]
|
17
17
|
Description=sidekiq for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
|
@@ -44,8 +44,7 @@ WatchdogSec=10
|
|
44
44
|
WorkingDirectory=<%= File.join(fetch(:deploy_to), 'current') %>
|
45
45
|
ExecStart=<%= expanded_bundle_path %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_queues %>
|
46
46
|
|
47
|
-
# Use `systemctl kill -s TSTP
|
48
|
-
|
47
|
+
# Use `systemctl kill -s TSTP <%= sidekiq_service_unit_name %>` to quiet the Sidekiq process
|
49
48
|
<%="User=#{sidekiq_user}" if sidekiq_user %>
|
50
49
|
UMask=0002
|
51
50
|
|
@@ -63,8 +62,7 @@ Restart=on-failure
|
|
63
62
|
<%="StandardOutput=append:#{fetch(:sidekiq_log)}" if fetch(:sidekiq_log) %>
|
64
63
|
<%="StandardError=append:#{fetch(:sidekiq_error_log)}" if fetch(:sidekiq_error_log) %>
|
65
64
|
|
66
|
-
|
67
|
-
SyslogIdentifier=sidekiq
|
65
|
+
SyslogIdentifier=<%= sidekiq_service_unit_name %>
|
68
66
|
|
69
67
|
[Install]
|
70
68
|
WantedBy=default.target
|
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: 2.
|
4
|
+
version: 2.3.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: 2022-05-
|
11
|
+
date: 2022-05-17 00:00:00.000000000 Z
|
12
12
|
dependencies:
|
13
13
|
- !ruby/object:Gem::Dependency
|
14
14
|
name: capistrano
|
@@ -62,7 +62,6 @@ files:
|
|
62
62
|
- ".gitignore"
|
63
63
|
- ".tool-versions"
|
64
64
|
- CHANGELOG.md
|
65
|
-
- CONTRIBUTORS.md
|
66
65
|
- Gemfile
|
67
66
|
- LICENSE.txt
|
68
67
|
- README.md
|
@@ -73,17 +72,13 @@ files:
|
|
73
72
|
- lib/capistrano/sidekiq/helpers.rb
|
74
73
|
- lib/capistrano/sidekiq/monit.rb
|
75
74
|
- lib/capistrano/sidekiq/systemd.rb
|
76
|
-
- lib/capistrano/sidekiq/upstart.rb
|
77
75
|
- lib/capistrano/sidekiq/version.rb
|
78
76
|
- lib/capistrano/tasks/monit.rake
|
79
77
|
- lib/capistrano/tasks/sidekiq.rake
|
80
78
|
- lib/capistrano/tasks/systemd.rake
|
81
|
-
- lib/capistrano/tasks/upstart.rake
|
82
79
|
- lib/generators/capistrano/sidekiq/monit/template_generator.rb
|
83
80
|
- lib/generators/capistrano/sidekiq/monit/templates/sidekiq_monit.conf.erb
|
84
81
|
- lib/generators/capistrano/sidekiq/systemd/templates/sidekiq.service.capistrano.erb
|
85
|
-
- lib/generators/capistrano/sidekiq/upstart/templates/sidekiq.conf.erb
|
86
|
-
- lib/generators/capistrano/sidekiq/upstart/templates/workers.conf.erb
|
87
82
|
homepage: https://github.com/seuros/capistrano-sidekiq
|
88
83
|
licenses:
|
89
84
|
- LGPL-3.0
|
data/CONTRIBUTORS.md
DELETED
@@ -1,11 +0,0 @@
|
|
1
|
-
## Contributors
|
2
|
-
|
3
|
-
- [Jérémy Lecour] (https://github.com/jlecour)
|
4
|
-
- [Fabien Penso] (https://github.com/penso)
|
5
|
-
- [Alex Dunae] (https://github.com/alexdunae)
|
6
|
-
- [andreygerasimchuk] (https://github.com/andreygerasimchuk)
|
7
|
-
- [Saicheg] (https://github.com/Saicheg)
|
8
|
-
- [Alex Yakubenko] (https://github.com/alexyakubenko)
|
9
|
-
- [Robert Strobl] (https://github.com/rstrobl)
|
10
|
-
- [Eurico Doirado] (https://github.com/okoriko)
|
11
|
-
- [Huang Bin](https://github.com/hbin)
|
@@ -1,15 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
module Capistrano
|
4
|
-
class Sidekiq::Upstart < Capistrano::Plugin
|
5
|
-
include Sidekiq::Helpers
|
6
|
-
|
7
|
-
def set_defaults
|
8
|
-
set_if_empty :sidekiq_service_unit_name, 'sidekiq' # This will change in version 3.0.0 to {application}-sidekiq
|
9
|
-
end
|
10
|
-
|
11
|
-
def define_tasks
|
12
|
-
eval_rakefile File.expand_path('../tasks/upstart.rake', __dir__)
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
@@ -1,104 +0,0 @@
|
|
1
|
-
# frozen_string_literal: true
|
2
|
-
|
3
|
-
git_plugin = self
|
4
|
-
|
5
|
-
SUPPRESS_FAILURE = %w[|| echo NO_RUNNING_INSTANCE].freeze
|
6
|
-
|
7
|
-
namespace :sidekiq do
|
8
|
-
desc 'Quiet sidekiq (stop fetching new tasks from Redis)'
|
9
|
-
task :quiet do
|
10
|
-
on roles fetch(:sidekiq_roles) do |role|
|
11
|
-
git_plugin.switch_user(role) do
|
12
|
-
sudo :service, fetch(:sidekiq_service_unit_name), :reload, *SUPPRESS_FAILURE
|
13
|
-
end
|
14
|
-
end
|
15
|
-
end
|
16
|
-
|
17
|
-
desc 'Stop sidekiq (graceful shutdown within timeout, put unfinished tasks back to Redis)'
|
18
|
-
task :stop do
|
19
|
-
on roles fetch(:sidekiq_roles) do |role|
|
20
|
-
git_plugin.switch_user(role) do
|
21
|
-
sudo :service, fetch(:sidekiq_service_unit_name), :stop, *SUPPRESS_FAILURE
|
22
|
-
end
|
23
|
-
end
|
24
|
-
end
|
25
|
-
|
26
|
-
desc 'Start sidekiq'
|
27
|
-
task :start do
|
28
|
-
on roles fetch(:sidekiq_roles) do |role|
|
29
|
-
git_plugin.switch_user(role) do
|
30
|
-
sudo :service, fetch(:sidekiq_service_unit_name), :start
|
31
|
-
end
|
32
|
-
end
|
33
|
-
end
|
34
|
-
|
35
|
-
desc 'Install upstart sidekiq service'
|
36
|
-
task :install do
|
37
|
-
on roles fetch(:sidekiq_roles) do |role|
|
38
|
-
git_plugin.switch_user(role) do
|
39
|
-
git_plugin.create_upstart_template
|
40
|
-
end
|
41
|
-
end
|
42
|
-
end
|
43
|
-
|
44
|
-
desc 'UnInstall upstart sidekiq service'
|
45
|
-
task :uninstall do
|
46
|
-
on roles fetch(:sidekiq_roles) do |role|
|
47
|
-
git_plugin.switch_user(role) do
|
48
|
-
execute :rm, '-f',
|
49
|
-
File.join(fetch(:service_unit_path, fetch_upstart_unit_path), fetch(:sidekiq_service_unit_name))
|
50
|
-
end
|
51
|
-
end
|
52
|
-
end
|
53
|
-
|
54
|
-
desc 'Generate service_locally'
|
55
|
-
task :generate_service_locally do
|
56
|
-
run_locally do
|
57
|
-
File.write('sidekiq.conf', git_plugin.compiled_template)
|
58
|
-
end
|
59
|
-
end
|
60
|
-
|
61
|
-
def fetch_upstart_unit_path
|
62
|
-
if fetch(:sidekiq_service_unit_user) == :system
|
63
|
-
# if the path is not standard `set :service_unit_path`
|
64
|
-
'/etc/init'
|
65
|
-
else
|
66
|
-
home_dir = backend.capture :pwd
|
67
|
-
File.join(home_dir, '.config', 'upstart')
|
68
|
-
end
|
69
|
-
end
|
70
|
-
|
71
|
-
def compiled_template
|
72
|
-
search_paths = [
|
73
|
-
File.expand_path(
|
74
|
-
File.join(*%w[.. .. .. generators capistrano sidekiq upstart templates sidekiq.conf.erb]),
|
75
|
-
__FILE__
|
76
|
-
)
|
77
|
-
]
|
78
|
-
template_path = search_paths.detect { |path| File.file?(path) }
|
79
|
-
template = File.read(template_path)
|
80
|
-
ERB.new(template).result(binding)
|
81
|
-
end
|
82
|
-
|
83
|
-
def create_upstart_template
|
84
|
-
ctemplate = compiled_template
|
85
|
-
upstart_path = fetch(:service_unit_path, fetch_upstart_unit_path)
|
86
|
-
|
87
|
-
backend.execute :mkdir, '-p', upstart_path if fetch(:sidekiq_service_unit_user) != :system
|
88
|
-
conf_filename = "#{fetch :sidekiq_service_unit_name}.conf"
|
89
|
-
backend.upload!(
|
90
|
-
StringIO.new(ctemplate),
|
91
|
-
"/tmp/#{conf_filename}"
|
92
|
-
)
|
93
|
-
backend.execute :sudo, :mv, "/tmp/#{conf_filename}", "#{upstart_path}/#{conf_filename}"
|
94
|
-
if fetch(:sidekiq_service_unit_user) == :system
|
95
|
-
backend.execute :sudo, :initctl, 'reload-configuration'
|
96
|
-
else
|
97
|
-
# backend.execute :sudo, :initctl, 'reload-configuration' #TODO
|
98
|
-
end
|
99
|
-
end
|
100
|
-
|
101
|
-
def num_workers
|
102
|
-
fetch(:sidekiq_upstart_num_workers, nil)
|
103
|
-
end
|
104
|
-
end
|
@@ -1,78 +0,0 @@
|
|
1
|
-
# /etc/init/sidekiq.conf - Sidekiq config | https://github.com/mperham/sidekiq/blob/master/examples/upstart/sidekiq.conf
|
2
|
-
|
3
|
-
# This example config should work with Ubuntu 12.04+. It
|
4
|
-
# allows you to manage multiple Sidekiq instances with
|
5
|
-
# Upstart, Ubuntu's native service management tool.
|
6
|
-
#
|
7
|
-
# See workers.conf for how to manage all Sidekiq instances at once.
|
8
|
-
#
|
9
|
-
# Save this config as /etc/init/sidekiq.conf then manage sidekiq with:
|
10
|
-
# sudo start <%= fetch(:sidekiq_service_unit_name) %> index=0
|
11
|
-
# sudo stop <%= fetch(:sidekiq_service_unit_name) %> index=0
|
12
|
-
# sudo status <%= fetch(:sidekiq_service_unit_name) %> index=0
|
13
|
-
#
|
14
|
-
# Hack Upstart's reload command to 'quiet' Sidekiq:
|
15
|
-
#
|
16
|
-
# sudo reload <%= fetch(:sidekiq_service_unit_name) %> index=0
|
17
|
-
#
|
18
|
-
# or use the service command:
|
19
|
-
# sudo service <%= fetch(:sidekiq_service_unit_name) %> {start,stop,restart,status}
|
20
|
-
#
|
21
|
-
|
22
|
-
description "Sidekiq for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>"
|
23
|
-
|
24
|
-
# This script is not meant to start on bootup, workers.conf
|
25
|
-
# will start all sidekiq instances explicitly when it starts.
|
26
|
-
#start on runlevel [2345]
|
27
|
-
#stop on runlevel [06]
|
28
|
-
<% if sidekiq_user %>
|
29
|
-
|
30
|
-
# change to match your deployment user
|
31
|
-
setuid <%= sidekiq_user %>
|
32
|
-
setgid <%= sidekiq_user %>
|
33
|
-
env HOME=/home/<%= sidekiq_user %>
|
34
|
-
<% end %>
|
35
|
-
|
36
|
-
# Greatly reduce Ruby memory fragmentation and heap usage
|
37
|
-
# https://www.mikeperham.com/2018/04/25/taming-rails-memory-bloat/
|
38
|
-
env MALLOC_ARENA_MAX=2
|
39
|
-
|
40
|
-
respawn
|
41
|
-
respawn limit 3 30
|
42
|
-
|
43
|
-
# TERM is used when stopping sidekiq. Without declaring these as
|
44
|
-
# normal exit codes, it just respawns.
|
45
|
-
normal exit 0 TERM
|
46
|
-
|
47
|
-
# Older versions of Upstart might not support the reload command and need
|
48
|
-
# this commented out.
|
49
|
-
reload signal TSTP
|
50
|
-
|
51
|
-
# Upstart waits 5 seconds by default to kill a process. Increase timeout to
|
52
|
-
# give sidekiq process enough time to exit.
|
53
|
-
kill timeout 30
|
54
|
-
<% if num_workers %>
|
55
|
-
|
56
|
-
instance $index
|
57
|
-
<% end %>
|
58
|
-
script
|
59
|
-
# this script runs in /bin/sh by default
|
60
|
-
# respawn as bash so we can source in rbenv
|
61
|
-
exec /bin/bash <<'EOT'
|
62
|
-
# Pick your poison :) Or none if you're using a system wide installed Ruby.
|
63
|
-
# rbenv
|
64
|
-
# source /home/apps/.bash_profile
|
65
|
-
# OR
|
66
|
-
# source /home/apps/.profile
|
67
|
-
# OR system:
|
68
|
-
# source /etc/profile.d/rbenv.sh
|
69
|
-
#
|
70
|
-
# rvm
|
71
|
-
# source /home/apps/.rvm/scripts/rvm
|
72
|
-
|
73
|
-
# Logs out to /var/log/upstart/<%= fetch(:sidekiq_service_unit_name) %>.log by default
|
74
|
-
|
75
|
-
cd <%= File.join(fetch(:deploy_to), 'current') %>
|
76
|
-
exec <%= SSHKit.config.command_map[:bundle] %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_queues %>
|
77
|
-
EOT
|
78
|
-
end script
|
@@ -1,37 +0,0 @@
|
|
1
|
-
# /etc/init/workers.conf - manage a set of Sidekiqs | https://github.com/mperham/sidekiq/blob/master/examples/upstart/workers.conf
|
2
|
-
|
3
|
-
# This example config should work with Ubuntu 14.10 and below It
|
4
|
-
# allows you to manage multiple Sidekiq instances with
|
5
|
-
# Upstart, Ubuntu's native service management tool.
|
6
|
-
#
|
7
|
-
# See sidekiq.conf for how to manage a single Sidekiq instance.
|
8
|
-
#
|
9
|
-
# Use "stop workers" to stop all Sidekiq instances.
|
10
|
-
# Use "start workers" to start all instances.
|
11
|
-
# Use "restart workers" to restart all instances.
|
12
|
-
# Crazy, right?
|
13
|
-
#
|
14
|
-
|
15
|
-
description "manages the set of sidekiq processes"
|
16
|
-
|
17
|
-
# This starts upon bootup and stops on shutdown
|
18
|
-
start on runlevel [2345]
|
19
|
-
stop on runlevel [06]
|
20
|
-
|
21
|
-
# Set this to the number of Sidekiq processes you want
|
22
|
-
# to run on this machine
|
23
|
-
env NUM_WORKERS=2
|
24
|
-
|
25
|
-
pre-start script
|
26
|
-
for i in `seq 1 ${NUM_WORKERS}`
|
27
|
-
do
|
28
|
-
start sidekiq index=$i
|
29
|
-
done
|
30
|
-
end script
|
31
|
-
|
32
|
-
post-stop script
|
33
|
-
for i in `seq 1 ${NUM_WORKERS}`
|
34
|
-
do
|
35
|
-
stop sidekiq index=$i
|
36
|
-
done
|
37
|
-
end script
|