#!/bin/bash # Copyright 2023 The gRPC Authors # # 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. set -e ARCHIVE_WITH_SUBMODULES="$1" BUILD_SCRIPT="$2" EXIT_CODE_FILE="$3" SCRIPT_LOG_FILE="$4" ARTIFACTS_OUT_FILE="$5" shift 5 # Extract grpc repo archive tar -xopf ${ARCHIVE_WITH_SUBMODULES} cd grpc # Extract all input archives with artifacts into input_artifacts directory # TODO(jtattermusch): Deduplicate the snippet below (it appears in multiple files). mkdir -p input_artifacts pushd input_artifacts >/dev/null # all remaining args are .tar.gz archives with input artifacts for input_artifact_archive in "$@" do # extract the .tar.gz with artifacts into a directory named after a basename # of the archive itself (and strip the "artifact/" prefix) # Note that input artifacts from different dependencies can have files # with the same name, so disambiguating through the name of the archive # is important. archive_extract_dir="$(basename ${input_artifact_archive} .tar.gz)" mkdir -p "${archive_extract_dir}" pushd "${archive_extract_dir}" >/dev/null tar --strip-components=1 -xopf ../../../${input_artifact_archive} popd >/dev/null done popd >/dev/null mkdir -p artifacts # Run the build script with args, storing its stdout and stderr # in a log file. SCRIPT_EXIT_CODE=0 ../"${BUILD_SCRIPT}" >"../${SCRIPT_LOG_FILE}" 2>&1 || SCRIPT_EXIT_CODE="$?" # Store build script's exitcode in a file. # Note that the build atifacts task will terminate with success even when # there was an error building the artifacts. # The error status (an associated log) will be reported by an associated # bazel test. echo "${SCRIPT_EXIT_CODE}" >"../${EXIT_CODE_FILE}" # collect the artifacts # TODO(jtattermusch): add tar flags to create deterministic tar archive tar -czvf ../"${ARTIFACTS_OUT_FILE}" artifacts