Files
zulip/scripts/upgrade-zulip-from-git
Gaurav Pandey e7cfd30d53 upgrade: Modify upgrade scripts to handle failure.
The current `upgrade-zulip` and `upgrade-zulip-from-git`
bash scripts exit with a zero status even if the
upgrade commands exit with a non-zero status.
Hence add `set -e` command which exits the script with
the same status as the non-zero command.

For pipe commands however, the net status of a command
is the status of the last command, hence if the other parts
fail, the net status is only determined by the last command.
This is the case with our main /lib/upgrade-zulip* command
in the scripts whose status is determined by the `tee` command
instead. Hence add a small condition to get the status of the
actual upgrade command and exit the script if it fails with
a non-zero command.

We also check whether the script is being run as root, matching the
install script logic.
2021-06-23 09:10:11 -07:00

27 lines
879 B
Bash
Executable File

#!/usr/bin/env bash
#
# This is a thin wrapper around the upgrade-from-git script (scripts/lib/upgrade-zulip-from-git).
# This wrapper exists to log output to /var/log/zulip/upgrade.log for debugging.
set -e
if [ "$EUID" -ne 0 ]; then
basename=$(basename "$0")
echo "Error: $basename must be run as root." >&2
exit 1
fi
"$(dirname "$0")/lib/upgrade-zulip-from-git" "$@" 2>&1 | tee -a /var/log/zulip/upgrade.log
failed=${PIPESTATUS[0]}
if [ "$failed" -ne 0 ]; then
echo -e '\033[0;31m'
echo "Zulip upgrade failed (exit code $failed)!"
echo
echo -n "The upgrade process is designed to be idempotent, so you can retry "
echo -n "after resolving whatever issue caused the failure (there should be a traceback above). "
echo -n "A log of this installation is available in /var/log/zulip/upgrade.log"
echo -e '\033[0m'
exit "$failed"
fi