mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-05 18:20:34 +00:00
3682372764
This change updates the test VM to debian bullseye, primarily to enable io_uring features that are not available in the 4.16 kernel shipping with debian buster. We are not updating the builder containers to bullseye, as newer versions of qemu fail to start on kokoro. See b/181359683 Since it was needed for debugging this CL, it includes a feature to debug kokoro builders via SSH. It can be enabled by setting DEBUG_SSH_KEY from the fusion2 UI. BUG=b:178228512 TEST=./test_all passes Change-Id: I22f1678577183a0aace80245a87c31907221cc09 Reviewed-on: https://chromium-review.googlesource.com/c/chromiumos/platform/crosvm/+/2721062 Reviewed-by: Daniel Verkamp <dverkamp@chromium.org> Reviewed-by: Zach Reizner <zachr@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Commit-Queue: Dennis Kempin <denniskempin@google.com>
87 lines
2.8 KiB
Bash
Executable file
87 lines
2.8 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
|
|
|
|
# Enable SSH access to the kokoro builder.
|
|
# Use the fusion2/ UI to trigger a build and set the DEBUG_SSH_KEY environment
|
|
# variable to your public key, that will allow you to connect to the builder
|
|
# via SSH.
|
|
# Note: Access is restricted to the google corporate network.
|
|
# Details: https://yaqs.corp.google.com/eng/q/6628551334035456
|
|
if [[ ! -z "${DEBUG_SSH_KEY}" ]]; then
|
|
echo "${DEBUG_SSH_KEY}" >> ~/.ssh/authorized_keys
|
|
external_ip=$(curl -s -H "Metadata-Flavor: Google"
|
|
http://metadata/computeMetadata/v1/instance/network-interfaces/0/access-configs/0/external-ip)
|
|
echo "SSH Debug enabled. Connect to: kbuilder@${external_ip}"
|
|
fi
|
|
|
|
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() {
|
|
# Sleep after the build to allow for SSH debugging to continue.
|
|
if [[ ! -z "${DEBUG_SSH_KEY}" ]]; then
|
|
echo "Build done. Blocking for SSH debugging."
|
|
sleep 1h
|
|
fi
|
|
|
|
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"
|