#!/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 --build-release-tarball-only || { ret=$? if [ "$ret" = 1 ]; then echo "\`provision\`: Something went wrong with the provisioning, might be a network issue, Retrying to provision..." tools/provision --build-release-tarball-only else echo "\`provision\`: Something REALLY BAD went wrong with the provisioning, not retrying." exit "$ret" fi } 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 # Move all the required artifacts to /tmp/production-build # that will be later sent down to downstream install jobs. mkdir /tmp/production-build mv /tmp/tmp.*/zulip-server-test.tar.gz /tmp/production-build cp -a \ tools/ci/success-http-headers.template.txt \ tools/ci/production-install \ tools/ci/production-verify \ tools/ci/production-upgrade \ tools/ci/production-pgroonga \ tools/ci/production-upgrade-pg \ tools/ci/generate-failure-message \ package.json pnpm-lock.yaml \ /tmp/production-build # Check that webpack bundles use only ES2020 syntax. # Use the pnpm binary installed by tools/provision. PNPM="/usr/local/bin/pnpm" tar -C /tmp -xzf /tmp/production-build/zulip-server-test.tar.gz zulip-server-test/prod-static/serve/webpack-bundles ( GLOBIGNORE="/tmp/zulip-server-test/prod-static/serve/webpack-bundles/katex*.js" "$PNPM" exec es-check es2020 /tmp/zulip-server-test/prod-static/serve/webpack-bundles/*.js )