mirror of
https://chromium.googlesource.com/crosvm/crosvm
synced 2025-02-06 10:32:10 +00:00
After trying symlinks and bind-mounts and various other shenanigans, give up and move the crosvm working directory to a relative path that is the same as in the chrome OS chroot. This allows other crates in the cros checkout to find the crosvm crates they depend on. Signed-off-by: Dylan Reid <dgreid@chromium.org> Change-Id: I643497f08c59328e02775ad3ac0ef9feafbf2930 Reviewed-on: https://chromium-review.googlesource.com/1436595 Commit-Ready: Chih-Yang Hsia <paulhsia@chromium.org> Tested-by: kokoro <noreply+kokoro@google.com> Reviewed-by: Chih-Yang Hsia <paulhsia@chromium.org> Reviewed-by: Zach Reizner <zachr@chromium.org>
78 lines
3.1 KiB
Markdown
78 lines
3.1 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`](Dockerfile).
|
|
|
|
[TOC]
|
|
|
|
## How to use Docker to test crosvm
|
|
|
|
Assuming a Docker daemon is already running, build the `crosvm-base` image:
|
|
|
|
```shell
|
|
docker build -t crosvm-base path/to/crosvm/kokoro
|
|
```
|
|
|
|
Here is how to use the image to test a crosvm repository located at `$CROSVM_SRC`:
|
|
|
|
```shell
|
|
docker run --privileged -v /dev/log:/dev/log -v "${CROSVM_SRC}":/platform/crosvm:ro crosvm-base
|
|
```
|
|
|
|
> **WARNING**:
|
|
> The `--privileged` is 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
|
|
docker build -t crosvm-base path/to/crosvm/kokoro
|
|
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
|
|
```
|
|
|
|
心
|