#!/bin/bash # Configure environment variables for Bazel build and test. set -e [ -z "${NUM_CPUS}" ] && NUM_CPUS=`grep -c ^processor /proc/cpuinfo` export ENVOY_SRCDIR=/source export BUILD_DIR=/build mkdir -p ${BUILD_DIR} # Create a fake home. Python site libs tries to do getpwuid(3) if we don't and # the CI Docker image gets confused as it has no passwd entry when running # non-root unless we do this. FAKE_HOME=/tmp/fake_home mkdir -p "${FAKE_HOME}" export HOME="${FAKE_HOME}" export PYTHONUSERBASE="${FAKE_HOME}" # Environment setup. export USER=bazel export TEST_TMPDIR=/build/tmp export BAZEL="bazel" # Not sandboxing, since non-privileged Docker can't do nested namespaces. BAZEL_OPTIONS="--package_path %workspace%:/source" export BAZEL_QUERY_OPTIONS="${BAZEL_OPTIONS}" export BAZEL_BUILD_OPTIONS="--strategy=Genrule=standalone --spawn_strategy=standalone \ --verbose_failures ${BAZEL_OPTIONS} --jobs=${NUM_CPUS} \ --action_env=HOME --action_env=PYTHONUSERBASE" export BAZEL_TEST_OPTIONS="${BAZEL_BUILD_OPTIONS} --cache_test_results=no --test_output=all --test_env=HOME --test_env=PYTHONUSERBASE" [[ "${BAZEL_EXPUNGE}" == "1" ]] && "${BAZEL}" clean --expunge function cleanup() { # Remove build artifacts. This doesn't mess with incremental builds as these # are just symlinks. rm -f "${ENVOY_SRCDIR}"/bazel-* } trap cleanup EXIT