#!/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 remove rabbitmq-server supervisor && sudo apt-get purge rabbitmq-server supervisor sudo apt-get 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