metropolis/test/launch: convert :launch to a test

"bazel run" simply executes the binary outside the sandbox, so swtpm
and other dependencies from the sandbox sysroot won't be available.

If swtpm is installed on the host, running the _bin target still works,
but it's better to point contributors to something that works
out of the box.

This is a temporary workaround. Tests have timeouts and take the global
Bazel server lock. The correct solution is a static swtpm build
which can run outside the sandbox.

Change-Id: Icf7bf5cc44825df676d37a75ea9c1e135de14fef
Reviewed-on: https://review.monogon.dev/c/monogon/+/1078
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
5 files changed
tree: 55165c3da49a1f7b4604c4db85b59bb305011718
  1. .github/
  2. build/
  3. cloud/
  4. intellij/
  5. metropolis/
  6. third_party/
  7. tools/
  8. .bazelignore
  9. .bazelproject
  10. .bazelrc
  11. .bazelrc.sandboxroot
  12. .bazelversion
  13. .git-ignore-revs
  14. .gitignore
  15. BUILD
  16. CODING_STANDARDS.md
  17. go.mod
  18. go.sum
  19. LICENSE
  20. README.md
  21. WORKSPACE
README.md

Monogon Monorepo

This is the main repository containing the source code for the Monogon Platform.

This is pre-release software - take a look, and check back later!

Environment

Our build environment is self-contained and requires only minimal host dependencies:

  • A Linux machine or VM.
  • Bazelisk >= v1.15.0
  • A reasonably recent kernel with user namespaces enabled.
  • Working KVM with access to /dev/kvm (if you want to run tests).

Our docs assume that Bazelisk is available as bazel on your PATH.

IntelliJ support

This repository is compatible with the IntelliJ Bazel plugin out of the box, which enables full autocompletion for external dependencies and generated code.

The following steps are necessary:

  • Install Google's Bazel plugin in IntelliJ.

  • Make sure that Bazel "Bazel Binary Location" in Other Settings → Bazel Settings points to Bazelisk.

  • Use File → Import Bazel project... and select your monorepo checkout.

After running the first sync, everything should now resolve in the IDE, including generated code.

Monogon OS

Run a single node demo cluster

Build CLI and node image:

bazel build //metropolis/cli/dbg //:launch -c dbg

Launch an ephemeral test node:

bazel test //:launch -c dbg --test_output=streamed

Run a kubectl command while the test is running:

bazel-bin/metropolis/cli/dbg/dbg_/dbg kubectl describe node

Test suite

Run full test suite:

bazel test -c dbg //...