#!/sbin/openrc-run extra_started_commands="restartsidekiq check" extra_stopped_commands="backup" name="GitLab" description="GitLab on Unicorns" description_restartsidekiq="Restarts Sidekiq only" description_check="Runs sanity checks" description_backup="Creates a backup of your Gitlab database and files" : ${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_config:="/etc/gitlab/sidekiq_queues.yml"} : ${mail_room_pidfile:="/run/gitlab/mail_room.pid"} : ${mail_room_logfile:="@LOGS_DIR@/mail_room.log"} : ${mail_room_config:="/etc/gitlab/mail_room.yml"} socket_dir="/run/gitlab" 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 -C ${sidekiq_config} -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" check_command="sudo -u ${gitlab_user} -H /usr/bin/bundle" check_command_args1="exec rake gitlab:env:info RAILS_ENV=${rails_env}" check_command_args2="exec rake gitlab:check RAILS_ENV=${rails_env}" backup_command="sudo -u ${gitlab_user} -H /usr/bin/bundle" backup_args=" exec rake gitlab:backup:create RAILS_ENV=${rails_env}" depend() { need redis gitlab-workhorse gitlab-gitaly 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}")" checkpath -d -o ${gitlab_user} -m755 "$(dirname "${mail_room_pidfile}")" checkpath -d -o ${gitlab_user} -m700 "${socket_dir}" 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 $? } check() { ebegin "Running sanity checks for ${name}" cd /opt/gitlab ${check_command} ${check_command_args1} eend $? ${check_command} ${check_command_args2} eend $? } backup() { ebegin "Creating backup of ${name}" cd /opt/gitlab ${backup_command} ${backup_args} eend $? }