version: implement Go tooling

These two packages implement respectively:

1. A companion Go library to access data from //version/spec
   Protobuf data.
2. A Go code generator and related Bazel build infrastructure to convert
   Bazel build status data into an embedded //version/spec Protobuf
   Version message.

The two allow for stamping Go artifacts with a generated spec.Version
proto, and allows Go code to work with said messages.

The two systems are split to allow decoupling stamping build artifacts
from processing such version messages. This is so that eg. a Metropolis
client tool can receive a server's Version field, and then show that
field to the user.

Change-Id: I82fbfa6bc2418edc979cdc6e1fdee60ee75a88b7
Reviewed-on: https://review.monogon.dev/c/monogon/+/2332
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
Tested-by: Jenkins CI
7 files changed
tree: 04be915879bb49de08e4555d7424180052d64cd8
  1. .github/
  2. build/
  3. cloud/
  4. go/
  5. intellij/
  6. metropolis/
  7. net/
  8. third_party/
  9. tools/
  10. version/
  11. .bazelignore
  12. .bazelproject
  13. .bazelrc
  14. .bazelrc.sandboxroot
  15. .bazelversion
  16. .git-ignore-revs
  17. .gitignore
  18. BUILD.bazel
  19. CODING_STANDARDS.md
  20. go.mod
  21. go.sum
  22. LICENSE
  23. README.md
  24. SETUP.md
  25. shell.nix
  26. 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 (or a working Nix environment).
  • 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.

Refer to SETUP.md for detailed instructions.

Monogon OS

Run a single node demo cluster

Build CLI and node image:

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

Launch an ephemeral test node:

bazel test //:launch --config 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 --config dbg //...