#!/usr/bin/env bash # In short, this provisions a Zulip development environment and then # builds a Zulip release tarball (the same way we build them for an # actual release). The actual test job will then install that. set -e set -x # Provisioning may fail due to many issues but most of the times a network # connection issue is the reason. So we are going to retry entire provisioning # once again if that fixes our problem. tools/provision --production-test-suite || { ret=$? if [ "$ret" = 1 ]; then echo "\`provision\`: Something went wrong with the provisioning, might be a network issue, Retrying to provision..." tools/provision --production-test-suite else echo "\`provision\`: Something REALLY BAD went wrong with the provisioning, not retrying." exit "$ret" fi } cp -a tools/ci/success-http-headers.txt ~/ source tools/ci/activate-venv if ! ./tools/build-release-tarball test; then echo "Attempting to output failure logging data" cat /tmp/tmp.*/update-prod-static.log || true exit 1 fi mv /tmp/tmp.*/zulip-server-test.tar.gz ./ # Shut down all services so that restarting postgres and rebuilding # the postgres database to match the prod installation setup will work. sudo supervisorctl stop all # Drop any open connections to the development postgres installation. sudo "$(dirname "$0")/../../scripts/setup/terminate-psql-sessions" postgres zulip zulip_base # Remove and recreate the postgres database sudo pg_ctlcluster 10 main stop sudo pg_dropcluster 10 main sudo rm -rf /etc/postgresql/10/main /var/lib/postgresql/10/main sudo pg_createcluster 10 main