hs.scripts/updates/discourse.sh

69 lines
2.2 KiB
Bash
Raw Blame History

This file contains ambiguous Unicode characters

This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.

#!/bin/bash
set -e
release=$(curl -L https://api.github.com/repos/discourse/discourse/tags -s | jq -r '.[0].name')
echo "Warning, this scipt is not fully tested yet! Proceed with caution!"
echo
read -p "Trying to update to Discourse ${release} proceed?" -n 1 -r
echo
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1 # https://stackoverflow.com/questions/1885525/how-do-i-prompt-a-user-for-confirmation-in-bash-script
fi
echo
basedir=$HOME/discourse
services="sidekiq discourse"
patch=$HOME/latest.patch
nodever=$(curl -s https://raw.githubusercontent.com/discourse/discourse_docker/main/image/base/slim.Dockerfile | grep -oP '(?<=nodesource.com/setup_)[0-9]+[0-9]')
cd $basedir
# attempting not having to use a patchfile
git stash
# lets roll with their doctor scripts command
git fetch --tags --prune-tags --prune --force origin
git checkout latest-release # they seem to update this tag, not sure if we need to checkout
#git pull
git stash apply
# failsafe if stash apply causes too much trouble
#echo "looking for patchfile at [ $patch ], executing if found..."
#[ -e $patch ] && . $patch
#echo "command ended with status $?"
# not clear why this is a samplefile
# they seem to do this by hand on the docker repo
rubyver=$(< $basedir/.ruby-version.sample)
# commenting this because we assume that upstream docker
# uses newer ruby because they don't seem to use release
#rubyver=$(curl -s https://raw.githubusercontent.com/discourse/discourse_docker/main/image/base/slim.Dockerfile | grep -oP '(?<=RUBY_VERSION=)[0-9]+\.[0-9]+\.[0-9]+')
if [[ ! -e ~/.rbenv/versions/$rubyver ]]
then
git -C $HOME/.rbenv/plugins/ruby-build pull
RUBY_CONFIGURE_OPTS=--with-jemalloc rbenv install
fi
echo "proceeding with bundle and yarn"
# upstream does a gem update --system
# we assume their Gemfile.lock is on track tho
# and try to avoid problems due to too new gems
bundle install
yarn install --frozen-lockfile
RAILS_ENV=production bundle exec rails assets:precompile
read -p "Proceed with migrations? " -n 1 -r
if [[ ! $REPLY =~ ^[Yy]$ ]]
then
[[ "$0" = "$BASH_SOURCE" ]] && exit 1 || return 1
fi
RAILS_ENV=production bundle exec rails db:migrate
systemctl restart --user $services
sleep 2
systemctl status --user $services