mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-06 02:25:23 +00:00
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>
78 lines
3 KiB
Markdown
78 lines
3 KiB
Markdown
# 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`](presubmit.cfg) and the build script is at
|
|
[`build.sh`](build.sh). A Docker image called `crosvm-base` is used as the testing environment which
|
|
is built with a [`Dockerfile`](../docker/Dockerfile).
|
|
|
|
[TOC]
|
|
|
|
## How to use Docker to test crosvm
|
|
|
|
Assuming a Docker daemon is already running, build the `crosvm-base` image:
|
|
|
|
```shell
|
|
path/to/crosvm/docker/build_crosvm_base.sh
|
|
```
|
|
|
|
Here is how to use the image to test a crosvm repository located at `$CROSVM_SRC`:
|
|
|
|
```shell
|
|
$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:
|
|
|
|
```shell
|
|
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.
|
|
|
|
```shell
|
|
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`](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`.
|
|
|
|
```shell
|
|
# 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
|
|
```
|
|
|
|
心
|