crosvm/ci/kokoro/common.sh
Dennis Kempin 4d2253b529 Kokoro: Extensive polishing and bugfixing
This CL fixes some of the issues that prevented the
test system from running on other workstations.

- Builders run by Kokoro will not use a scratch mount.
  It's not needed, and will cause issues if stored on
  /tmp with noexec set.
- Running podman with label=disable to prevent selinux
  issues.

The run_tests implementation has been moved to a separate
file and updated with parsing of cargo test output. This
allows simpler test output and integration with the
test results UI in sponge.

The sponge test UI can make it much easier to see which
tests failed, and to find the log of that test case.

This CL also includes an ./ci/kokoro/uprev script to
uprev the manifest versions. And runs the uprev.

BUG=b:174861002
TEST=Tested by forcing a kokoro build with this CL

Change-Id: I0cba9bb68915e2558a4ea6061dd9ba0a7050421b
Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2669712
Reviewed-by: Zach Reizner <zachr@chromium.org>
Tested-by: kokoro <noreply+kokoro@google.com>
Tested-by: Dennis Kempin <denniskempin@google.com>
Commit-Queue: Dennis Kempin <denniskempin@google.com>
2021-02-10 22:04:43 +00:00

68 lines
2 KiB
Bash
Executable file

#!/bin/bash
# Copyright 2021 The Chromium OS Authors. All rights reserved.
# Use of this source code is governed by a BSD-style license that can be
# found in the LICENSE file.
crosvm_root="${KOKORO_ARTIFACTS_DIR}"/git/crosvm
setup_source() {
if [ -z "${KOKORO_ARTIFACTS_DIR}" ]; then
echo "This script must be run in kokoro"
exit 1
fi
cd "${KOKORO_ARTIFACTS_DIR}"
echo ""
echo "Downloading crosvm dependencies to $(pwd)/cros..."
mkdir cros
cd cros
# repo gets confused by pyenv, make sure we select 3.6.1 as our default
# version.
if command -v pyenv >/dev/null; then
echo "Selecting Python 3.6.1"
pyenv global 3.6.1
fi
curl -s https://storage.googleapis.com/git-repo-downloads/repo >repo
chmod +x repo
./repo init --depth 1 \
-u https://chromium.googlesource.com/chromiumos/manifest.git \
--repo-url https://chromium.googlesource.com/external/repo.git \
-g crosvm || return 1
./repo sync -j8 -c -m "${crosvm_root}/ci/kokoro/manifest.xml" || return 1
# Bind mount source into cros checkout.
echo ""
echo "Mounting crosvm source to $(pwd)/src/platform/crosvm..."
rm -rf src/platform/crosvm && mkdir -p src/platform/crosvm
if command -v bindfs >/dev/null; then
bindfs "${crosvm_root}" src/platform/crosvm || return 1
else
sudo mount --bind "${crosvm_root}" src/platform/crosvm || return 1
fi
}
cleanup() {
if command -v bindfs >/dev/null; then
fusermount -uz "${KOKORO_ARTIFACTS_DIR}/cros/src/platform/crosvm"
else
sudo umount --lazy "${KOKORO_ARTIFACTS_DIR}/cros/src/platform/crosvm"
fi
# List files in the logs directory which are uploaded to sponge.
echo "Build Artifacts:"
ls "${KOKORO_ARTIFACTS_DIR}/logs"
}
# Setup source when the script is loaded. Clean up on exit.
trap cleanup EXIT
setup_source || {
echo "Failed to setup_source"
exit 1
}
# Set logs directory so we can copy them to sponge
export CROSVM_BUILDER_LOGS_DIR="${KOKORO_ARTIFACTS_DIR}/logs"
cd "${KOKORO_ARTIFACTS_DIR}/cros/src/platform/crosvm"