6868c0a72f
BUG=None TEST=docker/build_crosvm_base.sh docker/build_crosvm.sh docker/wrapped_smoke_test.sh docker/crosvm_wrapper.sh kokoro/kokoro_simulator.sh bin/smoke_test Change-Id: I55a805ba6326c3c58973d1fe21172a5e3551c1e2 Reviewed-on: https://chromium-review.googlesource.com/1593723 Commit-Ready: Zach Reizner <zachr@chromium.org> Tested-by: Zach Reizner <zachr@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Dylan Reid <dgreid@chromium.org> |
||
---|---|---|
.. | ||
build.sh | ||
continuous.cfg | ||
kokoro_simulator.sh | ||
presubmit-cr.cfg | ||
presubmit.cfg | ||
README.md |
Kokoro CI for crosvm
For presubmit testing, each change posted for Gerrit on the master branch of crosvm will be tried by
Kokoro. The configuration is found in presubmit.cfg
and the build script is at
build.sh
. A Docker image called crosvm-base
is used as the testing environment which
is built with a Dockerfile
.
[TOC]
How to use Docker to test crosvm
Assuming a Docker daemon is already running, build the crosvm-base
image:
path/to/crosvm/docker/build_crosvm_base.sh
Here is how to use the image to test a crosvm repository located at $CROSVM_SRC
:
$CROSVM_SRC/docker/wrapped_smoke_test.sh
WARNING: The
--privileged
flag is used in that script so that the container will have/dev/kvm
access.
How to update crosvm-base
The crosvm-base
Dockerfile
downloads, builds, and install specific library versions needed to
test crosvm. It also defines a run time environment and default command line for performing a test.
If an update or new library is needed or any other adjustment is required, a new image can be
generated as follows:
path/to/crosvm/docker/build_crosvm_base.sh
docker save crosvm-base | xz -T 0 -z >crosvm-base.tar.xz
If you have x20 access, move crosvm-base.tar.xz
to /teams/chromeos-vm/docker/
and ensure the
owner is chromeos-vm-ci-read-write
. This owner is used to allow Kokoro to read the base image in
during the test run. The updated image will be used for future Kokoro runs until it is replaced.
prodaccess
cp crosvm-base.tar.xz /google/data/rw/teams/chromeos-vm/docker/
The cp command should preserve the right owner but to be sure you can confirm that it is
chromeos-vm-ci-read-write
in the web ui: https://x20.corp.google.com/teams/chromeos-vm/docker
WARNING: If the image tarball uploaded to x20 is defective in any way, Kokoro will fail to verify every crosvm change as if the change itself were defective. Please verify the image is good before uploading to x20.
How to simulate Kokoro before uploading
If you want to test a change before uploading it in a similar environment to Kokoro, use the
kokoro_simulator.sh
script. It will invoke the build.sh
script after
exporting environment variables and a volume that are expected to be present. The crosvm source code
is symlinked in, and is tested exactly as in the working directory. Any changes to build.sh
will
also be tested, but any changes to presubmit.cfg
will have no effect. If there are any changes to
Dockerfile
, they will have no effect unless the crosvm-base
image is removed (or never existed)
from the local Docker daemon. To test Dockerfile
changes use the following formula to purge
crosvm-base
.
# So that kokoro_simulator.sh doesn't skip `docker save`.
rm /tmp/kokoro_simulator/crosvm-base.tar.xz
# Stopped containers prevent the removal of images below.
docker container prune
# So that kokoro_simulator.sh doesn't skip `docker build`.
docker rmi crosvm-base
心