#!/sbin/openrc-run extra_started_commands="restartsidekiq" name="GitLab" description="GitLab on Unicorns" description_restartsidekiq="Restarts Sidekiq only" : ${gitlab_user:=@USER@} : ${gitlab_base:="@GITLAB_BASE@"} : ${rails_env:=production} : ${server_pidfile:="/run/gitlab/unicorn.pid"} : ${sidekiq_pidfile:="/run/gitlab/sidekiq.pid"} : ${sidekiq_logfile:="@LOGS_DIR@/sidekiq.log"} : ${sidekiq_queues:="@QUEUES@"} : ${mail_room_pidfile:="/run/gitlab/mail_room.pid"} : ${mail_room_logfile:="/var/log/gitlab/mail_room.log"} : ${mail_room_config:="/etc/gitlab/mail_room.yml"} server_command="/usr/bin/bundle" server_command_args="exec unicorn_rails -c ${gitlab_base}/config/unicorn.rb -E ${rails_env} -D" sidekiq_command="/usr/bin/bundle" sidekiq_command_args="exec sidekiq -q ${sidekiq_queues//,/ -q } -P ${sidekiq_pidfile} -L ${sidekiq_logfile}" mail_room_command="/usr/bin/bundle" mail_room_command_args="exec mail_room -q -c ${mail_room_config} >> ${mail_room_logfile} 2>&1" depend() { provide gitlab need redis gitlab-workhorse use net } start() { ebegin "Starting ${name} - Unicorn servers" checkpath -d -o ${gitlab_user} -m755 "$(dirname "${server_pidfile}")" checkpath -d -o ${gitlab_user} -m755 "$(dirname "${sidekiq_pidfile}")" start-stop-daemon --start \ --chdir "${gitlab_base}" \ --user=${gitlab_user} \ --pidfile="${server_pidfile}" \ --env RAILS_ENV=${rails_env} \ --exec ${server_command} -- ${server_command_args} eend $? ebegin "Starting ${name} - Sidekiq" start-stop-daemon --start \ --background --quiet \ --chdir "${gitlab_base}" \ --user=${gitlab_user} \ --pidfile="${sidekiq_pidfile}" \ --env RAILS_ENV=${rails_env} \ --exec ${sidekiq_command} -- ${sidekiq_command_args} eend $? if [ -e /etc/default/gitlab ]; then . /etc/default/gitlab if [ "${mail_room_enabled}" == "true" ]; then ebegin "Starting ${name} - mail_room" start-stop-daemon --start \ --background --quiet \ --chdir "${gitlab_base}" \ --user=${gitlab_user} \ --pidfile="${mail_room_pidfile}" -m \ --env RAILS_ENV=${rails_env} \ --exec ${mail_room_command} -- ${mail_room_command_args} eend $? fi fi } stop() { ebegin "Stopping ${name} - mail_room" start-stop-daemon --stop \ --signal QUIT \ --pidfile=${mail_room_pidfile} \ --exec ${mail_room_command} eend $? ebegin "Stopping ${name} - Sidekiq" start-stop-daemon --stop \ --pidfile=${sidekiq_pidfile} \ --exec ${sidekiq_command} eend $? ebegin "Stopping ${name} - Unicorn servers" start-stop-daemon --stop \ --signal QUIT \ --pidfile=${server_pidfile} \ --exec ${server_command} eend $? } restartsidekiq() { ebegin "Restarting ${name} - Sidekiq: Stopping" start-stop-daemon --stop \ --pidfile=${sidekiq_pidfile} \ --exec ${sidekiq_command} \ --progress \ --retry 180 eend $? ebegin "Starting ${name} - Sidekiq" start-stop-daemon --start \ --background --quiet \ --chdir "${gitlab_base}" \ --user=${gitlab_user} \ --pidfile="${sidekiq_pidfile}" \ --env RAILS_ENV=${rails_env} \ --exec ${sidekiq_command} -- ${sidekiq_command_args} eend $? }