2024-05-02 14:24:10 +02:00
|
|
|
|
#!/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
|
2024-05-03 08:50:31 +02:00
|
|
|
|
services="sidekiq discourse"
|
2024-05-02 14:24:10 +02:00
|
|
|
|
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
|
2024-05-03 09:12:26 +02:00
|
|
|
|
# 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
|
2024-05-02 14:24:10 +02:00
|
|
|
|
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 $?"
|
|
|
|
|
|
2024-05-03 09:46:17 +02:00
|
|
|
|
# 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]+')
|
2024-05-02 14:24:10 +02:00
|
|
|
|
|
2024-05-03 09:57:04 +02:00
|
|
|
|
[ ! -L $basedir/.ruby-version ] && ln -sv $basedir/.ruby-version.sample $basedir/.ruby-version
|
|
|
|
|
|
2024-05-02 14:24:10 +02:00
|
|
|
|
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
|
|
|
|
|
|
2024-05-03 08:50:31 +02:00
|
|
|
|
systemctl restart --user $services
|
2024-05-02 14:24:10 +02:00
|
|
|
|
|
|
|
|
|
sleep 2
|
|
|
|
|
|
2024-05-03 08:50:31 +02:00
|
|
|
|
systemctl status --user $services
|