mirror of https://github.com/istio/proxy.git
86 lines
3.9 KiB
Bash
Executable File
86 lines
3.9 KiB
Bash
Executable File
#!/bin/bash
|
|
#
|
|
# Copyright 2017 Istio Authors. All Rights Reserved.
|
|
#
|
|
# Licensed under the Apache License, Version 2.0 (the "License");
|
|
# you may not use this file except in compliance with the License.
|
|
# You may obtain a copy of the License at
|
|
#
|
|
# http://www.apache.org/licenses/LICENSE-2.0
|
|
#
|
|
# Unless required by applicable law or agreed to in writing, software
|
|
# distributed under the License is distributed on an "AS IS" BASIS,
|
|
# WITHOUT WARRANTIES OR CONDITIONS OF ANY KIND, either express or implied.
|
|
# See the License for the specific language governing permissions and
|
|
# limitations under the License.
|
|
|
|
WD=$(dirname "$0")
|
|
WD=$(cd "$WD" || exit 1; pwd)
|
|
ROOT=$(dirname "$WD")
|
|
WORKSPACE="${ROOT}/WORKSPACE"
|
|
|
|
# Exit immediately for non zero status
|
|
set -e
|
|
# Check unset variables
|
|
set -u
|
|
# Print commands
|
|
set -x
|
|
|
|
# shellcheck disable=SC2034
|
|
GOPATH=/home/prow/go
|
|
ROOT=/go/src
|
|
|
|
# Configure available resources and disable IPv6 tests.
|
|
BAZEL_BUILD_ARGS="${BAZEL_BUILD_EXTRA_ARGS:-} --verbose_failures --test_env=ENVOY_IP_TEST_VERSIONS=v4only --test_output=errors"
|
|
export BAZEL_BUILD_ARGS="${BAZEL_BUILD_ARGS# }"
|
|
|
|
# Override envoy.
|
|
if [[ "${ENVOY_REPOSITORY:-}" && "${ENVOY_PREFIX:-}" ]]; then
|
|
# Legacy path, keep around for a few releases to allow folks to migrate
|
|
# The other path is preferred as it uses an API intended for programmatic access and allows fine-grained access token usage.
|
|
TMP_DIR=$(mktemp -d -t envoy-XXXXXXXXXX)
|
|
trap 'rm -rf ${TMP_DIR:?}' EXIT
|
|
ENVOY_SHA="${ENVOY_SHA:-$(grep -Pom1 "^ENVOY_SHA = \"\K[a-zA-Z0-9]{40}" "$WORKSPACE")}"
|
|
BAZEL_BUILD_ARGS="${BAZEL_BUILD_ARGS} --override_repository=envoy=${TMP_DIR}/${ENVOY_PREFIX}-${ENVOY_SHA}"
|
|
curl -nsSfL "${ENVOY_REPOSITORY}/archive/${ENVOY_SHA}.tar.gz" | tar -C "${TMP_DIR}" -xz
|
|
elif [[ "${ENVOY_REPOSITORY:-}" ]]; then
|
|
TMP_DIR=$(mktemp -d -t envoy-XXXXXXXXXX)
|
|
trap 'rm -rf ${TMP_DIR:?}' EXIT
|
|
ENVOY_SHA="${ENVOY_SHA:-$(grep -Pom1 "^ENVOY_SHA = \"\K[a-zA-Z0-9]{40}" "$WORKSPACE")}"
|
|
BAZEL_BUILD_ARGS="${BAZEL_BUILD_ARGS} --override_repository=envoy=${TMP_DIR}"
|
|
# User passes a URl like https://github.com/foo/bar, we translate it to https://api.github.com/foo/bar/repos.
|
|
api_url=${ENVOY_REPOSITORY/https:\/\/github.com/https:\/\/api.github.com/repos}
|
|
# Contents in the tarball will be in a folder, so --strip=1 it so we don't have to deal with the changing name
|
|
curl -nsSfL "${api_url}/tarball/${ENVOY_SHA}" | tar -C "${TMP_DIR}" -xz --strip=1
|
|
fi
|
|
|
|
# e2e tests under //test/envoye2e/... use Bazel artifacts.
|
|
# shellcheck disable=SC2086
|
|
BAZEL_OUT="$(bazel info ${BAZEL_BUILD_ARGS} output_path)/k8-fastbuild/bin"
|
|
export BAZEL_OUT
|
|
|
|
# Disable RBE execution because the tool chain used by RBE is too new.
|
|
export BAZEL_BUILD_RBE_JOBS="${BAZEL_BUILD_RBE_JOBS:-0}"
|
|
|
|
BAZEL_BUILD_RBE_INSTANCE="${BAZEL_BUILD_RBE_INSTANCE-projects/istio-testing/instances/default_instance}"
|
|
BAZEL_BUILD_RBE_CACHE="${BAZEL_BUILD_RBE_CACHE-grpcs://remotebuildexecution.googleapis.com}"
|
|
|
|
CREDS="google_default_credentials"
|
|
# Use GCP service account when available.
|
|
if [[ -n "${GOOGLE_APPLICATION_CREDENTIALS:-}" ]]; then
|
|
echo "Using legacy GOOGLE_APPLICATION_CREDENTIALS. Move to workload identity!" >&2
|
|
gcloud auth activate-service-account --key-file="${GOOGLE_APPLICATION_CREDENTIALS}"
|
|
CREDS="google_credentials=${GOOGLE_APPLICATION_CREDENTIALS}"
|
|
fi
|
|
|
|
BAZEL_BUILD_RBE_JOBS="${BAZEL_BUILD_RBE_JOBS:-200}"
|
|
if [[ -n "${BAZEL_BUILD_RBE_INSTANCE}" ]]; then
|
|
if [[ "${BAZEL_BUILD_RBE_JOBS}" -gt 0 ]]; then
|
|
echo "Using RBE: ${BAZEL_BUILD_RBE_INSTANCE} (execute)"
|
|
export BAZEL_BUILD_ARGS="${BAZEL_BUILD_ARGS} --${CREDS} --config=remote-clang-libc++ --config=remote-ci --remote_instance_name=${BAZEL_BUILD_RBE_INSTANCE} --jobs=${BAZEL_BUILD_RBE_JOBS}"
|
|
elif [[ -n "${BAZEL_BUILD_RBE_CACHE}" ]]; then
|
|
echo "Using RBE: ${BAZEL_BUILD_RBE_INSTANCE} (cache)"
|
|
export BAZEL_BUILD_ARGS="${BAZEL_BUILD_ARGS} --${CREDS} --remote_instance_name=${BAZEL_BUILD_RBE_INSTANCE} --remote_cache=${BAZEL_BUILD_RBE_CACHE}"
|
|
fi
|
|
fi
|