Commit 2c0f4c766458b15771b6a7b64760c9cb37b8ccfe
Exists in
master
and in
4 other branches
Merge branch 'unicorn_rake_tasks' of /home/git/repositories/gitlab/gitlabhq
Showing
4 changed files
with
118 additions
and
27 deletions
Show diff stats
lib/support/init.d/gitlab
| ... | ... | @@ -22,7 +22,6 @@ RAILS_ENV="production" |
| 22 | 22 | # /bin/sh variables such as PATH, EDITOR or SHELL. |
| 23 | 23 | app_root="/home/git/gitlab" |
| 24 | 24 | app_user="git" |
| 25 | -unicorn_conf="$app_root/config/unicorn.rb" | |
| 26 | 25 | pid_path="$app_root/tmp/pids" |
| 27 | 26 | socket_path="$app_root/tmp/sockets" |
| 28 | 27 | web_server_pid_path="$pid_path/unicorn.pid" |
| ... | ... | @@ -129,7 +128,7 @@ start() { |
| 129 | 128 | # Remove old socket if it exists |
| 130 | 129 | rm -f "$socket_path"/gitlab.socket 2>/dev/null |
| 131 | 130 | # Start the webserver |
| 132 | - bundle exec unicorn_rails -D -c "$unicorn_conf" -E "$RAILS_ENV" | |
| 131 | + RAILS_ENV=$RAILS_ENV script/web start | |
| 133 | 132 | fi |
| 134 | 133 | |
| 135 | 134 | # If sidekiq is already running, don't start it again. |
| ... | ... | @@ -137,7 +136,7 @@ start() { |
| 137 | 136 | echo "The Sidekiq job dispatcher is already running with pid $spid, not restarting" |
| 138 | 137 | else |
| 139 | 138 | echo "Starting the GitLab Sidekiq event dispatcher..." |
| 140 | - RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:start | |
| 139 | + RAILS_ENV=$RAILS_ENV script/background_jobs start | |
| 141 | 140 | # We are sleeping a bit here because sidekiq is slow at writing it's pid |
| 142 | 141 | sleep 2 |
| 143 | 142 | fi |
| ... | ... | @@ -151,7 +150,7 @@ stop() { |
| 151 | 150 | exit_if_not_running |
| 152 | 151 | # If the Unicorn web server is running, tell it to stop; |
| 153 | 152 | if [ "$web_status" = "0" ]; then |
| 154 | - kill -QUIT "$wpid" | |
| 153 | + RAILS_ENV=$RAILS_ENV script/web stop | |
| 155 | 154 | echo "Stopping the GitLab Unicorn web server..." |
| 156 | 155 | stopping=true |
| 157 | 156 | else |
| ... | ... | @@ -160,7 +159,7 @@ stop() { |
| 160 | 159 | # And do the same thing for the Sidekiq. |
| 161 | 160 | if [ "$sidekiq_status" = "0" ]; then |
| 162 | 161 | printf "Stopping Sidekiq job dispatcher." |
| 163 | - RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:stop | |
| 162 | + RAILS_ENV=$RAILS_ENV script/background_jobs stop | |
| 164 | 163 | stopping=true |
| 165 | 164 | else |
| 166 | 165 | echo "The Sidekiq was not running, must have run out of breath." |
| ... | ... | @@ -215,10 +214,10 @@ reload(){ |
| 215 | 214 | exit 1 |
| 216 | 215 | fi |
| 217 | 216 | printf "Reloading GitLab Unicorn configuration... " |
| 218 | - kill -USR2 "$wpid" | |
| 217 | + RAILS_ENV=$RAILS_ENV script/web reload | |
| 219 | 218 | echo "Done." |
| 220 | 219 | echo "Restarting GitLab Sidekiq since it isn't capable of reloading its config..." |
| 221 | - RAILS_ENV=$RAILS_ENV bundle exec rake sidekiq:restart | |
| 220 | + RAILS_ENV=$RAILS_ENV script/background_jobs restart | |
| 222 | 221 | # Waiting 2 seconds for sidekiq to write it. |
| 223 | 222 | sleep 2 |
| 224 | 223 | status | ... | ... |
lib/tasks/sidekiq.rake
| 1 | 1 | namespace :sidekiq do |
| 2 | 2 | desc "GITLAB | Stop sidekiq" |
| 3 | 3 | task :stop do |
| 4 | - system "bundle exec sidekiqctl stop #{pidfile}" | |
| 4 | + system "script/background_jobs stop" | |
| 5 | 5 | end |
| 6 | 6 | |
| 7 | - desc "GITLAB | Start sidekiq" | |
| 8 | - task :start => :restart | |
| 7 | + desc "GITLAB | Start sidekiq" do | |
| 8 | + system "script/background_jobs start" | |
| 9 | + end | |
| 9 | 10 | |
| 10 | - desc 'GitLab | Restart sidekiq' | |
| 11 | - task :restart do | |
| 12 | - if File.exist?(pidfile) | |
| 13 | - puts 'Shutting down existing sidekiq process.' | |
| 14 | - Rake::Task['sidekiq:stop'].invoke | |
| 15 | - puts 'Starting new sidekiq process.' | |
| 16 | - end | |
| 17 | - system "bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e #{Rails.env} -P #{pidfile} -d -L #{log_file} >> #{log_file} 2>&1" | |
| 11 | + desc 'GitLab | Restart sidekiq' do | |
| 12 | + system "script/background_jobs restart" | |
| 18 | 13 | end |
| 19 | 14 | |
| 20 | 15 | desc "GITLAB | Start sidekiq with launchd on Mac OS X" |
| 21 | 16 | task :launchd do |
| 22 | - system "bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e #{Rails.env} -P #{pidfile} >> #{log_file} 2>&1" | |
| 23 | - end | |
| 24 | - | |
| 25 | - def pidfile | |
| 26 | - Rails.root.join("tmp", "pids", "sidekiq.pid") | |
| 27 | - end | |
| 28 | - | |
| 29 | - def log_file | |
| 30 | - Rails.root.join("log", "sidekiq.log") | |
| 17 | + system "script/background_jobs start_no_deamonize" | |
| 31 | 18 | end |
| 32 | 19 | end | ... | ... |
| ... | ... | @@ -0,0 +1,56 @@ |
| 1 | +#!/bin/bash | |
| 2 | + | |
| 3 | +cd $(dirname $0)/.. | |
| 4 | +app_root=$(pwd) | |
| 5 | +sidekiq_pidfile="$app_root/tmp/pids/sidekiq.pid" | |
| 6 | +sidekiq_logfile="$app_root/log/sidekiq.log" | |
| 7 | +gitlab_user=$(ls -l config.ru | awk '{print $3}') | |
| 8 | + | |
| 9 | +function stop | |
| 10 | +{ | |
| 11 | + bundle exec sidekiqctl stop $sidekiq_pidfile &>> $sidekiq_logfile | |
| 12 | +} | |
| 13 | + | |
| 14 | +function killall | |
| 15 | +{ | |
| 16 | + pkill -u $gitlab_user -f sidekiq | |
| 17 | +} | |
| 18 | + | |
| 19 | +function restart | |
| 20 | +{ | |
| 21 | + if [ -f $sidekiq_pidfile ]; then | |
| 22 | + stop | |
| 23 | + fi | |
| 24 | + killall | |
| 25 | + start_sidekiq -d -L $sidekiq_logfile | |
| 26 | +} | |
| 27 | + | |
| 28 | +function start_no_deamonize | |
| 29 | +{ | |
| 30 | + start_sidekiq | |
| 31 | +} | |
| 32 | + | |
| 33 | +function start_sidekiq | |
| 34 | +{ | |
| 35 | + bundle exec sidekiq -q post_receive,mailer,system_hook,project_web_hook,gitlab_shell,common,default -e $RAILS_ENV -P $sidekiq_pidfile $@ &>> $sidekiq_logfile | |
| 36 | +} | |
| 37 | + | |
| 38 | +case "$1" in | |
| 39 | + stop) | |
| 40 | + stop | |
| 41 | + ;; | |
| 42 | + start) | |
| 43 | + restart | |
| 44 | + ;; | |
| 45 | + start_no_deamonize) | |
| 46 | + start_no_deamonize | |
| 47 | + ;; | |
| 48 | + restart) | |
| 49 | + restart | |
| 50 | + ;; | |
| 51 | + killall) | |
| 52 | + killall | |
| 53 | + ;; | |
| 54 | + *) | |
| 55 | + echo "Usage: RAILS_ENV=your_env $0 {stop|start|start_no_deamonize|restart|killall}" | |
| 56 | +esac | ... | ... |
| ... | ... | @@ -0,0 +1,49 @@ |
| 1 | +#!/bin/bash | |
| 2 | + | |
| 3 | +cd $(dirname $0)/.. | |
| 4 | +app_root=$(pwd) | |
| 5 | + | |
| 6 | +unicorn_pidfile="$app_root/tmp/pids/unicorn.pid" | |
| 7 | +unicorn_config="$app_root/config/unicorn.rb" | |
| 8 | + | |
| 9 | +function get_unicorn_pid | |
| 10 | +{ | |
| 11 | + local pid=$(cat $unicorn_pidfile) | |
| 12 | + if [ -z $pid ] ; then | |
| 13 | + echo "Could not find a PID in $unicorn_pidfile" | |
| 14 | + exit 1 | |
| 15 | + fi | |
| 16 | + unicorn_pid=$pid | |
| 17 | +} | |
| 18 | + | |
| 19 | +function start | |
| 20 | +{ | |
| 21 | + bundle exec unicorn_rails -D -c $unicorn_config -E $RAILS_ENV | |
| 22 | +} | |
| 23 | + | |
| 24 | +function stop | |
| 25 | +{ | |
| 26 | + get_unicorn_pid | |
| 27 | + kill -QUIT $unicorn_pid | |
| 28 | +} | |
| 29 | + | |
| 30 | +function reload | |
| 31 | +{ | |
| 32 | + get_unicorn_pid | |
| 33 | + kill -USR2 $unicorn_pid | |
| 34 | +} | |
| 35 | + | |
| 36 | +case "$1" in | |
| 37 | + start) | |
| 38 | + start | |
| 39 | + ;; | |
| 40 | + stop) | |
| 41 | + stop | |
| 42 | + ;; | |
| 43 | + reload) | |
| 44 | + reload | |
| 45 | + ;; | |
| 46 | + *) | |
| 47 | + echo "Usage: RAILS_ENV=your_env $0 {start|stop|reload}" | |
| 48 | + ;; | |
| 49 | +esac | ... | ... |