capistrano-sidekiq 2.2.0 → 3.0.0.alpha.1

Sign up to get free protection for your applications and to get access to all the features.
@@ -0,0 +1,45 @@
1
+ # Source: https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service
2
+ #
3
+ # This file tells systemd how to run Sidekiq as a 24/7 long-running daemon.
4
+
5
+ # Then run:
6
+ # - systemctl enable <%= sidekiq_service_unit_name(@config_file) %>
7
+ # - systemctl {start,stop,restart} <%= sidekiq_service_unit_name(@config_file) %>
8
+ #
9
+ # Use `journalctl -u <%= sidekiq_service_unit_name(@config_file) %> -rn 100` to view the last 100 lines of log output.
10
+ #
11
+ [Unit]
12
+ Description=Sidekiq for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
13
+ # start us only once the network and logging subsystems are available,
14
+ # consider adding redis-server.service if Redis is local and systemd-managed.
15
+ After=syslog.target network.target
16
+
17
+ [Service]
18
+ Type=notify
19
+ # If your Sidekiq process locks up, systemd's watchdog will restart it within seconds.
20
+ WatchdogSec=10
21
+ <%="User=#{sidekiq_user}" if fetch(:sidekiq_systemctl_user) == :system %>
22
+ WorkingDirectory=<%= current_path %>
23
+ ExecStart=<%= expanded_bundle_path %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %>
24
+
25
+ # Use `systemctl kill -s TSTP <% sidekiq_service_unit_name(@config_file) %>` to quiet the Sidekiq process
26
+ UMask=0002
27
+
28
+ <%- Array(fetch(:sidekiq_service_unit_env_files)).each do |file| %>
29
+ <%="EnvironmentFile=#{file}" %>
30
+ <% end -%>
31
+ <% Array(fetch(:sidekiq_service_unit_env_vars)).each do |environment_variable| %>
32
+ <%="Environment=\"#{environment_variable}\"" %>
33
+ <% end -%>
34
+
35
+ # if we crash, restart
36
+ RestartSec=1
37
+ Restart=on-failure
38
+
39
+ <%="StandardOutput=append:#{fetch(:sidekiq_log)}" if fetch(:sidekiq_log) -%>
40
+
41
+ <%="StandardError=append:#{fetch(:sidekiq_error_log)}" if fetch(:sidekiq_error_log) -%>
42
+
43
+ SyslogIdentifier=<%= sidekiq_service_unit_name(@config_file) %>
44
+ [Install]
45
+ WantedBy=<%=(fetch(:sidekiq_systemctl_user) == :system) ? "multi-user.target" : "default.target"%>
@@ -1,6 +1,8 @@
1
- # Monit configuration for Sidekiq : <%= fetch(:application) %>
2
- check process <%= sidekiq_service_name %>
3
- matching 'sidekiq .* <%= fetch(:full_app_name) %>'
4
- 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 30 seconds
5
- stop program = "/bin/su - <%= sidekiq_user(role) %> -c 'ps -ax | grep "<%= "sidekiq .* #{fetch(:full_app_name)}" %>" | grep -v grep | awk "{print \$1}" | xargs --no-run-if-empty kill'" with timeout <%= fetch(:sidekiq_timeout).to_i + 10 %> seconds
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
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.2.0
4
+ version: 3.0.0.alpha.1
5
5
  platform: ruby
6
6
  authors:
7
7
  - Abdelkader Boudih
8
- autorequire:
8
+ autorequire:
9
9
  bindir: bin
10
10
  cert_chain: []
11
- date: 2022-05-16 00:00:00.000000000 Z
11
+ date: 2022-10-08 00:00:00.000000000 Z
12
12
  dependencies:
13
13
  - !ruby/object:Gem::Dependency
14
14
  name: capistrano
@@ -44,14 +44,14 @@ dependencies:
44
44
  requirements:
45
45
  - - ">="
46
46
  - !ruby/object:Gem::Version
47
- version: '6.0'
47
+ version: 6.0.6
48
48
  type: :runtime
49
49
  prerelease: false
50
50
  version_requirements: !ruby/object:Gem::Requirement
51
51
  requirements:
52
52
  - - ">="
53
53
  - !ruby/object:Gem::Version
54
- version: '6.0'
54
+ version: 6.0.6
55
55
  description: Sidekiq integration for Capistrano
56
56
  email:
57
57
  - terminale@gmail.com
@@ -59,36 +59,24 @@ executables: []
59
59
  extensions: []
60
60
  extra_rdoc_files: []
61
61
  files:
62
- - ".gitignore"
63
- - ".tool-versions"
64
62
  - CHANGELOG.md
65
- - CONTRIBUTORS.md
66
- - Gemfile
67
63
  - LICENSE.txt
68
64
  - README.md
69
- - Rakefile
70
- - capistrano-sidekiq.gemspec
71
65
  - lib/capistrano-sidekiq.rb
72
66
  - lib/capistrano/sidekiq.rb
73
- - lib/capistrano/sidekiq/helpers.rb
74
- - lib/capistrano/sidekiq/monit.rb
75
67
  - lib/capistrano/sidekiq/systemd.rb
76
- - lib/capistrano/sidekiq/upstart.rb
77
68
  - lib/capistrano/sidekiq/version.rb
78
- - lib/capistrano/tasks/monit.rake
79
69
  - lib/capistrano/tasks/sidekiq.rake
80
70
  - lib/capistrano/tasks/systemd.rake
81
- - lib/capistrano/tasks/upstart.rake
71
+ - lib/capistrano/templates/sidekiq.service.capistrano.erb
82
72
  - lib/generators/capistrano/sidekiq/monit/template_generator.rb
83
73
  - lib/generators/capistrano/sidekiq/monit/templates/sidekiq_monit.conf.erb
84
- - 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
74
  homepage: https://github.com/seuros/capistrano-sidekiq
88
75
  licenses:
89
76
  - LGPL-3.0
90
77
  metadata: {}
91
- post_install_message:
78
+ post_install_message: "\n Version 3.0.0 is a major release. Please see README.md,
79
+ breaking changes are listed in CHANGELOG.md\n "
92
80
  rdoc_options: []
93
81
  require_paths:
94
82
  - lib
@@ -96,15 +84,15 @@ required_ruby_version: !ruby/object:Gem::Requirement
96
84
  requirements:
97
85
  - - ">="
98
86
  - !ruby/object:Gem::Version
99
- version: 2.0.0
87
+ version: 2.5.0
100
88
  required_rubygems_version: !ruby/object:Gem::Requirement
101
89
  requirements:
102
- - - ">="
90
+ - - ">"
103
91
  - !ruby/object:Gem::Version
104
- version: '0'
92
+ version: 1.3.1
105
93
  requirements: []
106
- rubygems_version: 3.2.22
107
- signing_key:
94
+ rubygems_version: 3.1.6
95
+ signing_key:
108
96
  specification_version: 4
109
97
  summary: Sidekiq integration for Capistrano
110
98
  test_files: []
data/.gitignore DELETED
@@ -1,19 +0,0 @@
1
- *.gem
2
- *.rbc
3
- .bundle
4
- .config
5
- .yardoc
6
- Gemfile.lock
7
- InstalledFiles
8
- _yardoc
9
- coverage
10
- doc/
11
- lib/bundler/man
12
- pkg
13
- rdoc
14
- spec/reports
15
- test/tmp
16
- test/version_tmp
17
- tmp
18
- .idea
19
- *.iml
data/.tool-versions DELETED
@@ -1 +0,0 @@
1
- ruby 3.1.2
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)
data/Gemfile DELETED
@@ -1,8 +0,0 @@
1
- source 'https://rubygems.org'
2
-
3
- # Specify your gem's dependencies in capistrano-sidekiq.gemspec
4
- gemspec
5
-
6
- gem "bump", "~> 0.10.0"
7
-
8
- gem "github_changelog_generator", "~> 1.16"
data/Rakefile DELETED
@@ -1,9 +0,0 @@
1
- require "bundler/gem_tasks"
2
- require 'github_changelog_generator/task'
3
-
4
- GitHubChangelogGenerator::RakeTask.new :changelog do |config|
5
- config.user = 'seuros'
6
- config.project = 'capistrano-sidekiq'
7
- config.issues = false
8
- config.future_release = '2.2.0'
9
- end
@@ -1,22 +0,0 @@
1
- lib = File.expand_path('../lib', __FILE__)
2
- $LOAD_PATH.unshift(lib) unless $LOAD_PATH.include?(lib)
3
- require 'capistrano/sidekiq/version'
4
-
5
- Gem::Specification.new do |spec|
6
- spec.name = 'capistrano-sidekiq'
7
- spec.version = Capistrano::SidekiqVERSION
8
- spec.authors = ['Abdelkader Boudih']
9
- spec.email = ['terminale@gmail.com']
10
- spec.summary = %q{Sidekiq integration for Capistrano}
11
- spec.description = %q{Sidekiq integration for Capistrano}
12
- spec.homepage = 'https://github.com/seuros/capistrano-sidekiq'
13
- spec.license = 'LGPL-3.0'
14
-
15
- spec.required_ruby_version = '>= 2.0.0'
16
- spec.files = `git ls-files`.split($/)
17
- spec.require_paths = ['lib']
18
-
19
- spec.add_dependency 'capistrano', '>= 3.9.0'
20
- spec.add_dependency 'capistrano-bundler'
21
- spec.add_dependency 'sidekiq', '>= 6.0'
22
- end
@@ -1,60 +0,0 @@
1
- module Capistrano
2
- module Sidekiq::Helpers
3
-
4
- def sidekiq_require
5
- if fetch(:sidekiq_require)
6
- "--require #{fetch(:sidekiq_require)}"
7
- end
8
- end
9
-
10
- def sidekiq_config
11
- if fetch(:sidekiq_config)
12
- "--config #{fetch(:sidekiq_config)}"
13
- end
14
- end
15
-
16
- def sidekiq_concurrency
17
- if fetch(:sidekiq_concurrency)
18
- "--concurrency #{fetch(:sidekiq_concurrency)}"
19
- end
20
- end
21
-
22
- def sidekiq_queues
23
- Array(fetch(:sidekiq_queue)).map do |queue|
24
- "--queue #{queue}"
25
- end.join(' ')
26
- end
27
-
28
- def sidekiq_logfile
29
- fetch(:sidekiq_log)
30
- end
31
-
32
- def switch_user(role)
33
- su_user = sidekiq_user(role)
34
- if su_user == role.user
35
- yield
36
- else
37
- as su_user do
38
- yield
39
- end
40
- end
41
- end
42
-
43
- def sidekiq_user(role = nil)
44
- if role.nil?
45
- fetch(:sidekiq_user)
46
- else
47
- properties = role.properties
48
- properties.fetch(:sidekiq_user) || # local property for sidekiq only
49
- fetch(:sidekiq_user) ||
50
- properties.fetch(:run_as) || # global property across multiple capistrano gems
51
- role.user
52
- end
53
- end
54
-
55
- def expanded_bundle_path
56
- backend.capture(:echo, SSHKit.config.command_map[:bundle]).strip
57
- end
58
-
59
- end
60
- end
@@ -1,19 +0,0 @@
1
- module Capistrano
2
- class Sidekiq::Monit < Capistrano::Plugin
3
- include Sidekiq::Helpers
4
-
5
- def set_defaults
6
- set_if_empty :monit_bin, '/usr/bin/monit'
7
- set_if_empty :sidekiq_monit_conf_dir, '/etc/monit/conf.d'
8
- set_if_empty :sidekiq_monit_conf_file, -> { "#{sidekiq_service_name}.conf" }
9
- set_if_empty :sidekiq_monit_use_sudo, true
10
- set_if_empty :sidekiq_monit_default_hooks, true
11
- set_if_empty :sidekiq_monit_templates_path, 'config/deploy/templates'
12
- set_if_empty :sidekiq_monit_group, nil
13
- end
14
-
15
- def define_tasks
16
- eval_rakefile File.expand_path('../../tasks/monit.rake', __FILE__)
17
- end
18
- end
19
- end
@@ -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,127 +0,0 @@
1
- git_plugin = self
2
-
3
- namespace :deploy do
4
- before :starting, :check_sidekiq_monit_hooks do
5
- if fetch(:sidekiq_default_hooks) && fetch(:sidekiq_monit_default_hooks)
6
- invoke 'sidekiq:monit:add_default_hooks'
7
- end
8
- end
9
- end
10
-
11
- namespace :sidekiq do
12
- namespace :monit do
13
- task :add_default_hooks do
14
- before 'deploy:updating', 'sidekiq:monit:unmonitor'
15
- after 'deploy:published', 'sidekiq:monit:monitor'
16
- end
17
-
18
- desc 'Config Sidekiq monit-service'
19
- task :config do
20
- on roles(fetch(:sidekiq_roles)) do |role|
21
- @role = role
22
- git_plugin.upload_sidekiq_template 'sidekiq_monit', "#{fetch(:tmp_dir)}/monit.conf", @role
23
-
24
- git_plugin.switch_user(role) do
25
- mv_command = "mv #{fetch(:tmp_dir)}/monit.conf #{fetch(:sidekiq_monit_conf_dir)}/#{fetch(:sidekiq_monit_conf_file)}"
26
-
27
- git_plugin.sudo_if_needed mv_command
28
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} reload"
29
- end
30
- end
31
- end
32
-
33
- desc 'Monitor Sidekiq monit-service'
34
- task :monitor do
35
- on roles(fetch(:sidekiq_roles)) do |role|
36
- git_plugin.switch_user(role) do
37
- begin
38
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} monitor #{git_plugin.sidekiq_service_name}"
39
- rescue
40
- invoke 'sidekiq:monit:config'
41
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} monitor #{git_plugin.sidekiq_service_name}"
42
- end
43
- end
44
- end
45
- end
46
-
47
- desc 'Unmonitor Sidekiq monit-service'
48
- task :unmonitor do
49
- on roles(fetch(:sidekiq_roles)) do |role|
50
- git_plugin.switch_user(role) do
51
- begin
52
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} unmonitor #{git_plugin.sidekiq_service_name}"
53
- rescue
54
- # no worries here
55
- end
56
- end
57
- end
58
- end
59
- end
60
-
61
- desc 'Start Sidekiq monit-service'
62
- task :start do
63
- on roles(fetch(:sidekiq_roles)) do |role|
64
- git_plugin.switch_user(role) do
65
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} start #{git_plugin.sidekiq_service_name}"
66
- end
67
- end
68
- end
69
-
70
- desc 'Stop Sidekiq monit-service'
71
- task :stop do
72
- on roles(fetch(:sidekiq_roles)) do |role|
73
- git_plugin.switch_user(role) do
74
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} stop #{git_plugin.sidekiq_service_name}"
75
- end
76
- end
77
- end
78
-
79
- desc 'Restart Sidekiq monit-service'
80
- task :restart do
81
- on roles(fetch(:sidekiq_roles)) do |role|
82
- git_plugin.sudo_if_needed "#{fetch(:monit_bin)} restart #{git_plugin.sidekiq_service_name}"
83
- end
84
- end
85
-
86
- def sidekiq_service_name
87
- fetch(:sidekiq_service_name, "sidekiq_#{fetch(:application)}_#{fetch(:sidekiq_env)}")
88
- end
89
-
90
- def sudo_if_needed(command)
91
- if use_sudo?
92
- backend.execute :sudo, command
93
- else
94
- backend.execute command
95
- end
96
- end
97
-
98
- def use_sudo?
99
- fetch(:sidekiq_monit_use_sudo)
100
- end
101
-
102
- def upload_sidekiq_template(from, to, role)
103
- template = sidekiq_template(from, role)
104
- backend.upload!(StringIO.new(ERB.new(template).result(binding)), to)
105
- end
106
-
107
- def sidekiq_template(name, role)
108
- local_template_directory = fetch(:sidekiq_monit_templates_path)
109
-
110
- search_paths = [
111
- "#{name}-#{role.hostname}-#{fetch(:stage)}.erb",
112
- "#{name}-#{role.hostname}.erb",
113
- "#{name}-#{fetch(:stage)}.erb",
114
- "#{name}.erb"
115
- ].map { |filename| File.join(local_template_directory, filename) }
116
-
117
- global_search_path = File.expand_path(
118
- File.join(*%w[.. .. .. generators capistrano sidekiq monit templates], "#{name}.conf.erb"),
119
- __FILE__
120
- )
121
-
122
- search_paths << global_search_path
123
-
124
- template_path = search_paths.detect { |path| File.file?(path) }
125
- File.read(template_path)
126
- end
127
- 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,70 +0,0 @@
1
- # Source: https://github.com/mperham/sidekiq/blob/master/examples/systemd/sidekiq.service
2
- #
3
- # This file tells systemd how to run Sidekiq as a 24/7 long-running daemon.
4
- #
5
- # Customize this file based on your bundler location, app directory, etc.
6
- # Customize and copy this into /usr/lib/systemd/system (CentOS) or /lib/systemd/system (Ubuntu).
7
- # Then run:
8
- # - systemctl enable sidekiq
9
- # - systemctl {start,stop,restart} sidekiq
10
- #
11
- # This file corresponds to a single Sidekiq process. Add multiple copies
12
- # to run multiple processes (sidekiq-1, sidekiq-2, etc).
13
- #
14
- # Use `journalctl -u sidekiq -rn 100` to view the last 100 lines of log output.
15
- #
16
- [Unit]
17
- Description=sidekiq for <%= "#{fetch(:application)} (#{fetch(:stage)})" %>
18
- # start us only once the network and logging subsystems are available,
19
- # consider adding redis-server.service if Redis is local and systemd-managed.
20
- After=syslog.target network.target
21
-
22
- # See these pages for lots of options:
23
- #
24
- # https://www.freedesktop.org/software/systemd/man/systemd.service.html
25
- # https://www.freedesktop.org/software/systemd/man/systemd.exec.html
26
- #
27
- # THOSE PAGES ARE CRITICAL FOR ANY LINUX DEVOPS WORK; read them multiple
28
- # times! systemd is a critical tool for all developers to know and understand.
29
- #
30
- [Service]
31
- #
32
- # !!!! !!!! !!!!
33
- #
34
- # As of v6.0.6, Sidekiq automatically supports systemd's `Type=notify` and watchdog service
35
- # monitoring. If you are using an earlier version of Sidekiq, change this to `Type=simple`
36
- # and remove the `WatchdogSec` line.
37
- #
38
- # !!!! !!!! !!!!
39
- #
40
- Type=notify
41
- # If your Sidekiq process locks up, systemd's watchdog will restart it within seconds.
42
- WatchdogSec=10
43
-
44
- WorkingDirectory=<%= File.join(fetch(:deploy_to), 'current') %>
45
- ExecStart=<%= expanded_bundle_path %> exec sidekiq -e <%= fetch(:sidekiq_env) %> <%= sidekiq_config %> <%= sidekiq_concurrency %> <%= sidekiq_queues %>
46
-
47
- # Use `systemctl kill -s TSTP sidekiq` to quiet the Sidekiq process
48
-
49
- <%="User=#{sidekiq_user}" if sidekiq_user %>
50
- UMask=0002
51
-
52
- <%="EnvironmentFile=#{File.join(fetch(:deploy_to), 'current')}/#{fetch(:sidekiq_service_unit_env_file)}" if fetch(:sidekiq_service_unit_env_file) %>
53
-
54
- <% fetch(:sidekiq_service_unit_env_vars, []).each do |environment_variable| %>
55
- <%="Environment=#{environment_variable}" %>
56
- <% end %>
57
-
58
- # if we crash, restart
59
- RestartSec=1
60
- Restart=on-failure
61
-
62
- # output goes to /var/log/syslog (Ubuntu) or /var/log/messages (CentOS)
63
- <%="StandardOutput=append:#{fetch(:sidekiq_log)}" if fetch(:sidekiq_log) %>
64
- <%="StandardError=append:#{fetch(:sidekiq_error_log)}" if fetch(:sidekiq_error_log) %>
65
-
66
- # This will default to "bundler" if we don't specify it
67
- SyslogIdentifier=sidekiq
68
-
69
- [Install]
70
- WantedBy=default.target