Commit a483fcda2f9c410a275992f7ff1094f2ee43015f
1 parent
0d138f59
Exists in
master
and in
17 other branches
Add sidekiq service
Showing
8 changed files
with
91 additions
and
4 deletions
Show diff stats
files/gitlab-cookbooks/gitlab/attributes/default.rb
| ... | ... | @@ -70,6 +70,13 @@ default['gitlab']['unicorn']['tcp_nopush'] = true |
| 70 | 70 | default['gitlab']['unicorn']['backlog_socket'] = 64 |
| 71 | 71 | default['gitlab']['unicorn']['worker_timeout'] = 30 |
| 72 | 72 | |
| 73 | +#### | |
| 74 | +# Sidekiq | |
| 75 | +#### | |
| 76 | +default['gitlab']['sidekiq']['enable'] = true | |
| 77 | +default['gitlab']['sidekiq']['ha'] = false | |
| 78 | +default['gitlab']['sidekiq']['log_directory'] = "/var/log/gitlab/sidekiq" | |
| 79 | + | |
| 73 | 80 | |
| 74 | 81 | ### |
| 75 | 82 | # gitlab-shell | ... | ... |
files/gitlab-cookbooks/gitlab/libraries/gitlab.rb
| ... | ... | @@ -30,6 +30,7 @@ module Gitlab |
| 30 | 30 | redis Mash.new |
| 31 | 31 | gitlab_rails Mash.new |
| 32 | 32 | unicorn Mash.new |
| 33 | + sidekiq Mash.new | |
| 33 | 34 | node nil |
| 34 | 35 | |
| 35 | 36 | class << self |
| ... | ... | @@ -77,6 +78,7 @@ module Gitlab |
| 77 | 78 | "redis", |
| 78 | 79 | "gitlab_rails", |
| 79 | 80 | "unicorn", |
| 81 | + "sidekiq", | |
| 80 | 82 | "postgresql" |
| 81 | 83 | ].each do |key| |
| 82 | 84 | rkey = key.gsub('_', '-') | ... | ... |
files/gitlab-cookbooks/gitlab/recipes/default.rb
| ... | ... | @@ -49,10 +49,15 @@ include_recipe "gitlab::users" |
| 49 | 49 | include_recipe "gitlab::gitlab-shell" |
| 50 | 50 | include_recipe "gitlab::gitlab-rails" |
| 51 | 51 | |
| 52 | -# Create a dummy unicorn service to receive notifications, in case the | |
| 53 | -# gitlab::unicorn is not loaded below. | |
| 54 | -service "unicorn" do | |
| 55 | - supports [] | |
| 52 | +# Create dummy unicorn and sidekiq services to receive notifications, in case | |
| 53 | +# the corresponding service recipe is not loaded below. | |
| 54 | +[ | |
| 55 | + "unicorn", | |
| 56 | + "sidekiq" | |
| 57 | +].each do |dummy| | |
| 58 | + service dummy do | |
| 59 | + supports [] | |
| 60 | + end | |
| 56 | 61 | end |
| 57 | 62 | |
| 58 | 63 | # Install our runit instance |
| ... | ... | @@ -63,6 +68,7 @@ include_recipe "runit" |
| 63 | 68 | "redis", |
| 64 | 69 | "postgresql", # Postgresql depends on Redis because of `rake db:seed_fu` |
| 65 | 70 | "unicorn", |
| 71 | + "sidekiq", | |
| 66 | 72 | "bootstrap", |
| 67 | 73 | ].each do |service| |
| 68 | 74 | if node["gitlab"][service]["enable"] | ... | ... |
files/gitlab-cookbooks/gitlab/recipes/gitlab-rails.rb
| ... | ... | @@ -40,6 +40,7 @@ gitlab_rails_log_dir = node['gitlab']['gitlab-rails']['log_directory'] |
| 40 | 40 | end |
| 41 | 41 | |
| 42 | 42 | should_notify_unicorn = OmnibusHelper.should_notify?("unicorn") |
| 43 | +should_notify_sidekiq = OmnibusHelper.should_notify?("sidekiq") | |
| 43 | 44 | |
| 44 | 45 | template_symlink File.join(gitlab_rails_etc_dir, "secret") do |
| 45 | 46 | link_from File.join(gitlab_rails_source_dir, ".secret") |
| ... | ... | @@ -48,6 +49,7 @@ template_symlink File.join(gitlab_rails_etc_dir, "secret") do |
| 48 | 49 | group "root" |
| 49 | 50 | mode "0644" |
| 50 | 51 | notifies :restart, 'service[unicorn]' if should_notify_unicorn |
| 52 | + notifies :restart, 'service[sidekiq]' if should_notify_sidekiq | |
| 51 | 53 | end |
| 52 | 54 | |
| 53 | 55 | template_symlink File.join(gitlab_rails_etc_dir, "database.yml") do |
| ... | ... | @@ -58,6 +60,7 @@ template_symlink File.join(gitlab_rails_etc_dir, "database.yml") do |
| 58 | 60 | mode "0644" |
| 59 | 61 | variables(node['gitlab']['postgresql'].to_hash) |
| 60 | 62 | notifies :restart, 'service[unicorn]' if should_notify_unicorn |
| 63 | + notifies :restart, 'service[sidekiq]' if should_notify_sidekiq | |
| 61 | 64 | end |
| 62 | 65 | |
| 63 | 66 | template_symlink File.join(gitlab_rails_etc_dir, "gitlab.yml") do |
| ... | ... | @@ -68,6 +71,7 @@ template_symlink File.join(gitlab_rails_etc_dir, "gitlab.yml") do |
| 68 | 71 | mode "0644" |
| 69 | 72 | variables(node['gitlab']['gitlab-rails'].to_hash) |
| 70 | 73 | notifies :restart, 'service[unicorn]' if should_notify_unicorn |
| 74 | + notifies :restart, 'service[sidekiq]' if should_notify_sidekiq | |
| 71 | 75 | end |
| 72 | 76 | |
| 73 | 77 | template_symlink File.join(gitlab_rails_etc_dir, "rack_attack.rb") do |
| ... | ... | @@ -78,6 +82,7 @@ template_symlink File.join(gitlab_rails_etc_dir, "rack_attack.rb") do |
| 78 | 82 | mode "0644" |
| 79 | 83 | variables(node['gitlab']['gitlab-rails'].to_hash) |
| 80 | 84 | notifies :restart, 'service[unicorn]' if should_notify_unicorn |
| 85 | + notifies :restart, 'service[sidekiq]' if should_notify_sidekiq | |
| 81 | 86 | end |
| 82 | 87 | |
| 83 | 88 | directory node['gitlab']['gitlab-rails']['satellites_path'] do | ... | ... |
| ... | ... | @@ -0,0 +1,38 @@ |
| 1 | +# | |
| 2 | +# Copyright:: Copyright (c) 2012 Opscode, Inc. | |
| 3 | +# Copyright:: Copyright (c) 2014 GitLab.com | |
| 4 | +# License:: Apache License, Version 2.0 | |
| 5 | +# | |
| 6 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
| 7 | +# you may not use this file except in compliance with the License. | |
| 8 | +# You may obtain a copy of the License at | |
| 9 | +# | |
| 10 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
| 11 | +# | |
| 12 | +# Unless required by applicable law or agreed to in writing, software | |
| 13 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
| 14 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 15 | +# See the License for the specific language governing permissions and | |
| 16 | +# limitations under the License. | |
| 17 | +# | |
| 18 | + | |
| 19 | +sidekiq_log_dir = node['gitlab']['sidekiq']['log_directory'] | |
| 20 | + | |
| 21 | +directory sidekiq_log_dir do | |
| 22 | + owner node['gitlab']['user']['username'] | |
| 23 | + mode '0700' | |
| 24 | + recursive true | |
| 25 | +end | |
| 26 | + | |
| 27 | +runit_service "sidekiq" do | |
| 28 | + down node['gitlab']['sidekiq']['ha'] | |
| 29 | + options({ | |
| 30 | + :log_directory => sidekiq_log_dir | |
| 31 | + }.merge(params)) | |
| 32 | +end | |
| 33 | + | |
| 34 | +if node['gitlab']['bootstrap']['enable'] | |
| 35 | + execute "/opt/gitlab/bin/gitlab-ctl start sidekiq" do | |
| 36 | + retries 20 | |
| 37 | + end | |
| 38 | +end | ... | ... |
files/gitlab-cookbooks/gitlab/recipes/sidekiq_disable.rb
0 → 100644
| ... | ... | @@ -0,0 +1,21 @@ |
| 1 | +# | |
| 2 | +# Copyright:: Copyright (c) 2012 Opscode, Inc. | |
| 3 | +# Copyright:: Copyright (c) 2014 GitLab.com | |
| 4 | +# License:: Apache License, Version 2.0 | |
| 5 | +# | |
| 6 | +# Licensed under the Apache License, Version 2.0 (the "License"); | |
| 7 | +# you may not use this file except in compliance with the License. | |
| 8 | +# You may obtain a copy of the License at | |
| 9 | +# | |
| 10 | +# http://www.apache.org/licenses/LICENSE-2.0 | |
| 11 | +# | |
| 12 | +# Unless required by applicable law or agreed to in writing, software | |
| 13 | +# distributed under the License is distributed on an "AS IS" BASIS, | |
| 14 | +# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied. | |
| 15 | +# See the License for the specific language governing permissions and | |
| 16 | +# limitations under the License. | |
| 17 | +# | |
| 18 | + | |
| 19 | +runit_service "sidekiq" do | |
| 20 | + action :disable | |
| 21 | +end | ... | ... |
files/gitlab-cookbooks/gitlab/templates/default/sv-sidekiq-log-run.erb
0 → 100644
files/gitlab-cookbooks/gitlab/templates/default/sv-sidekiq-run.erb
0 → 100644
| ... | ... | @@ -0,0 +1,6 @@ |
| 1 | +#!/bin/sh | |
| 2 | + | |
| 3 | +cd <%= node['gitlab']['gitlab-rails']['dir'] %>/working | |
| 4 | + | |
| 5 | +exec 2>&1 | |
| 6 | +exec chpst -P -U <%= node['gitlab']['user']['username'] %> -u <%= node['gitlab']['user']['username'] %> /usr/bin/env BUNDLE_GEMFILE=/opt/gitlab/embedded/service/gitlab-rails/Gemfile HOME="<%= node['gitlab']['gitlab-rails']['dir'] %>" /opt/gitlab/embedded/bin/bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e <%= node['gitlab']['gitlab-rails']['environment'] %> -r /opt/gitlab/embedded/service/gitlab-rails | ... | ... |