Skip to content

Commit

Permalink
upgrade: Modify upgrade scripts to handle failure.
Browse files Browse the repository at this point in the history
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.
  • Loading branch information
ligmitz authored and timabbott committed Jun 23, 2021
1 parent 6cce478 commit faae845
Show file tree
Hide file tree
Showing 2 changed files with 48 additions and 0 deletions.
24 changes: 24 additions & 0 deletions scripts/upgrade-zulip
Original file line number Diff line number Diff line change
@@ -1,2 +1,26 @@
#!/usr/bin/env bash
#
# This is a thin wrapper around the upgrade script (scripts/lib/upgrade-zulip).
# 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" "$@" 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
24 changes: 24 additions & 0 deletions scripts/upgrade-zulip-from-git
Original file line number Diff line number Diff line change
@@ -1,2 +1,26 @@
#!/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

0 comments on commit faae845

Please sign in to comment.