zulip/tools/ci/production-upgrade

55 lines
2.0 KiB
Bash

#!/usr/bin/env bash
# Given a Zulip production environment that had been installed with a
# previous version of Zulip, upgrade it to the commit being tested.
# This takes as input the tarball generated by production-build.
set -e
set -x
# Structurally, this script should just call upgrade-zulip. However,
# because of a set of issues that result in the previously installed
# GitHub Actions Docker containers not actually working on boot, we
# need to do some preparatory steps. It is a goal to delete these
# steps.
# Reinstall rabbitmq-server and supervisor.
#
# * For rabbitmq-server, we likely need to do this to work around the
# hostname changing on reboot causing RabbitMQ to not boot.
# * For supervisor, we don't understand why it doesn't start properly.
sudo apt-get -y purge rabbitmq-server supervisor
sudo apt-get -y install rabbitmq-server supervisor
# Start the postgresql service.
sudo service postgresql start
# Starting the rabbitmq-server
if ! sudo service rabbitmq-server start; then
echo
echo "Starting rabbitmq-server failed. Trying again:"
sudo service rabbitmq-server start
fi
# Apply puppet (still on the previous release the container was
# installed with). This should leave us with a working copy of Zulip
# running a previous release.
sudo /home/zulip/deployments/current/scripts/zulip-puppet-apply -f
# Stopping nginx service started by above command.
#
# This is a workaround for an unexpected `Unable to stop
# Service[nginx]` error in the puppet apply step of upgrade otherwise.
if ! sudo service nginx stop; then
echo
echo "Stoping nginx failed. Trying again:"
sudo service nginx stop
fi
# Zulip releases before 2.1.8/3.5/4.4 have a bug in their
# `upgrade-zulip` scripts, resulting in them exiting with status 0
# unconditionally. We work around that by running
# scripts/lib/upgrade-zulip instead.
UPGRADE_SCRIPT=/home/zulip/deployments/current/scripts/lib/upgrade-zulip
# Execute the upgrade.
sudo "$UPGRADE_SCRIPT" /tmp/zulip-server-test.tar.gz