# VM Images & Tests

All commands in this directory require the `gcloud` project to be set.

For example: `gcloud config set project gvisor-kokoro-testing`.

Images can be generated by using the `vm_image` rule. This rule will generate a
binary target that builds an image in an idempotent way, and can be referenced
from other rules.

For example:

```
vm_image(
    name = "ubuntu",
    project = "ubuntu-1604-lts",
    family = "ubuntu-os-cloud",
    scripts = [
        "script.sh",
        "other.sh",
    ],
)
```

These images can be built manually by executing the target. The output on
`stdout` will be the image id (in the current project).

For example:

```
$ bazel build :ubuntu
```

Images are always named per the hash of all the hermetic input scripts. This
allows images to be memoized quickly and easily.

The `vm_test` rule can be used to execute a command remotely. This is still
under development however, and will likely change over time.

For example:

```
vm_test(
    name = "mycommand",
    image = ":ubuntu",
    targets = [":test"],
)
```