_datadir=/usr/share/webapps/gitlab _homedir=/var/lib/gitlab _etcdir=/etc/webapps/gitlab fix_perms() { chown -R gitlab:gitlab "${_datadir}" "${_homedir}" chmod 770 "${_homedir}/satellites" chown root:gitlab "${_etcdir}/secret" chmod 640 "${_etcdir}/secret" } pids_dir() { systemd-tmpfiles --create gitlab.conf } generate_secret() { if [ ! -s "${_etcdir}/secret" ]; then hexdump -v -n 64 -e '1/1 "%02x"' /dev/urandom > "${_etcdir}/secret" fi } post_install() { pids_dir generate_secret fix_perms echo "You have to configure few things." echo "Configure gitlab-shell in /etc/webapps/gitlab-shell/config.yml" echo "Configure the application database in ${_etcdir}/database.yml and run:" echo "# su - gitlab -s /bin/sh -c \"cd '${_datadir}'; bundle-2.1 exec rake gitlab:setup RAILS_ENV=production\"" echo "Compile Assets:" echo "# su - gitlab -s /bin/sh -c \"cd '${_datadir}'; bundle-2.1 exec rake assets:precompile RAILS_ENV=production\"" echo "Check that ${_etcdir}/secret contains a random hex string." } pre_upgrade() { echo "Stopping gitlab-unicorn & gitlab-sidekiq services, check them after update !" if [[ `systemctl is-active gitlab-unicorn` == 'active' ]]; then touch /tmp/gitlab-upgrade-unicorn systemctl stop gitlab-unicorn fi if [[ `systemctl is-active gitlab-sidekiq` == 'active' ]]; then touch /tmp/gitlab-upgrade-sidekiq systemctl stop gitlab-sidekiq fi fix_perms cd "${_datadir}" sudo -u gitlab -H bundle-2.1 exec rake gitlab:backup:create RAILS_ENV=production if [ \( -e "${_datadir}/log" \) -a \( ! -L "${_datadir}/log" \) ]; then mv "${_datadir}/log" "${_datadir}/log.bck" fi if [ \( -e "${_datadir}/tmp" \) -a \( ! -L "${_datadir}/tmp" \) ]; then mv "${_datadir}/tmp" "${_datadir}/tmp.bck" fi if [ ! -s "${_etcdir}/secret" ]; then if [ \( -s ${_datadir}/.secret \) -a \( ! -L ${_datadir}/.secret \) ]; then mv "${_datadir}/.secret" "${_etcdir}/secret" else rm -f "${_datadir}/.secret" fi fi if [ \( ! -L "${_datadir}/.gitlab_shell_secret" \) -a \( -s "${_datadir}/.gitlab_shell_secret" \) ]; then mv "${_datadir}/.gitlab_shell_secret" "${_datadir}/.gitlab_shell_secret.pacsave" else rm -f "${_datadir}/.gitlab_shell_secret" fi if [ \( -e "${_datadir}/builds" \) -a \( ! -L "${_datadir}/builds" \) -a \( ! -e "${_homedir}/builds" \) ]; then mv "${_datadir}/builds" "${_homedir}/builds" fi } post_upgrade() { pids_dir generate_secret fix_perms su - gitlab -s /bin/sh -c "cd '${_datadir}'; bundle-2.1 exec rake db:migrate RAILS_ENV=production" su - gitlab -s /bin/sh -c "cd '${_datadir}'; bundle-2.1 exec rake assets:clean assets:precompile cache:clear RAILS_ENV=production" systemctl daemon-reload if [ -e /tmp/gitlab-upgrade-unicorn ]; then systemctl start gitlab-unicorn rm /tmp/gitlab-upgrade-unicorn fi if [ -e /tmp/gitlab-upgrade-sidekiq ]; then systemctl start gitlab-sidekiq rm /tmp/gitlab-upgrade-sidekiq fi }