Protocol Buffers - Google's data interchange format (grpc依赖)
https://developers.google.com/protocol-buffers/
You can not select more than 25 topics
Topics must start with a letter or number, can include dashes ('-') and can be up to 35 characters long.
72 lines
2.4 KiB
72 lines
2.4 KiB
3 years ago
|
#!/bin/bash
|
||
|
|
||
|
# Wrapper for invoking bazel on Kokoro.
|
||
|
#
|
||
|
# This script adds extra flags to a bazel invocation when it is run from Kokoro.
|
||
|
# When the special environment variables are not present (e.g., if you run
|
||
|
# Kokoro build scripts locally), this script is equivalent to the "bazel"
|
||
|
# command.
|
||
|
#
|
||
|
# Example of running directly:
|
||
|
# path/to/bazel_wrapper.sh build //...
|
||
|
#
|
||
|
# Example of `source`ing:
|
||
|
# source path/to/bazel_wrapper.sh
|
||
|
# bazel_wrapper build //...
|
||
|
|
||
|
function bazel_wrapper::gen_invocation_id() {
|
||
|
# Create a new invocation ID and store in the artifacts dir.
|
||
|
local _invocation_id=$(uuidgen | tr A-Z a-z)
|
||
|
|
||
|
# Put the new invocation ID at the start of the output IDs file. Some
|
||
|
# Google-internal tools only look at the first entry, so this ensures the most
|
||
|
# recent entry is first.
|
||
|
local _ids_file=${KOKORO_ARTIFACTS_DIR}/bazel_invocation_ids
|
||
|
local _temp_ids=$(mktemp)
|
||
|
echo ${_invocation_id} > ${_temp_ids}
|
||
|
[[ -e ${_ids_file} ]] && cat ${_ids_file} >> ${_temp_ids}
|
||
|
mv -f ${_temp_ids} ${_ids_file}
|
||
|
|
||
|
echo -n ${_invocation_id}
|
||
|
}
|
||
|
|
||
|
# Prints flags to use on Kokoro.
|
||
|
function bazel_wrapper::kokoro_flags() {
|
||
|
[[ -n ${KOKORO_BES_PROJECT_ID:-} ]] || return
|
||
|
|
||
|
local -a _flags
|
||
|
_flags+=(
|
||
|
--bes_backend=${KOKORO_BES_BACKEND_ADDRESS:-buildeventservice.googleapis.com}
|
||
|
--bes_results_url=https://source.cloud.google.com/results/invocations/
|
||
|
--invocation_id=$(bazel_wrapper::gen_invocation_id)
|
||
|
--project_id=${KOKORO_BES_PROJECT_ID} # --bes_instance_name in Bazel 5+
|
||
|
--remote_cache=https://storage.googleapis.com/protobuf-bazel-cache
|
||
|
)
|
||
|
if [[ -n ${KOKORO_BAZEL_AUTH_CREDENTIAL:-} ]]; then
|
||
|
_flags+=( --google_credentials=${KOKORO_BAZEL_AUTH_CREDENTIAL} )
|
||
|
else
|
||
|
_flags+=( --google_default_credentials=true )
|
||
|
fi
|
||
|
|
||
|
echo "${_flags[@]}"
|
||
|
}
|
||
|
|
||
|
# Runs bazel with Kokoro flags, if appropriate.
|
||
|
function bazel_wrapper() {
|
||
|
local -a _flags
|
||
|
|
||
|
# We might need to add flags. They need to come after any startup flags and
|
||
|
# the command, but before any terminating "--", so copy them into the _flags
|
||
|
# variable.
|
||
|
until (( ${#@} == 0 )) || [[ $1 == "--" ]]; do
|
||
|
_flags+=( "${1}" ); shift
|
||
|
done
|
||
|
|
||
|
# Set the `BAZEL` env variable to override the actual bazel binary to use:
|
||
|
${BAZEL:=bazel} "${_flags[@]}" $(bazel_wrapper::kokoro_flags) "${@}"
|
||
|
}
|
||
|
|
||
|
# If this script was called directly, run bazel. Otherwise (i.e., this script
|
||
|
# was `source`d), the sourcing script will call bazel_wrapper themselves.
|
||
|
(( ${#BASH_SOURCE[@]} == 1 )) && bazel_wrapper "${@}"
|