treewide: build product info
This change adds the type definition and generator for product info,
which will be added to the OCI OS image to provide information about the
contents.
Here is an example product info:
{
"id": "metropolis-node",
"name": "Metropolis Node",
"version": "0.1.0-dev1059",
"variant": "x86_64-race",
"commit_hash": "56248c1c1d5039bdf3c1043ade88f3f158ceb52b",
"commit_date": "2025-05-08T18:26:46+00:00",
"build_tree_dirty": true,
"components": [
{"id": "linux", "version": "6.12.15"},
{"id": "kubernetes", "version": "1.32.0"}
]
}
The product info has the same inputs and a similar purpose as the
os-release file, so they are both generated by the same build action.
Change-Id: I89d453f2d72ac9df49e404f46381cd594534f800
Reviewed-on: https://review.monogon.dev/c/monogon/+/4192
Tested-by: Jenkins CI
Reviewed-by: Lorenz Brun <lorenz@monogon.tech>
diff --git a/metropolis/node/BUILD.bazel b/metropolis/node/BUILD.bazel
index 04b164a..69425e2 100644
--- a/metropolis/node/BUILD.bazel
+++ b/metropolis/node/BUILD.bazel
@@ -1,6 +1,6 @@
load("@io_bazel_rules_go//go:def.bzl", "go_binary", "go_library", "go_test")
load("@rules_pkg//:pkg.bzl", "pkg_zip")
-load("//osbase/build/genosrelease:defs.bzl", "os_release")
+load("//osbase/build/genproductinfo:defs.bzl", "product_info")
load("//osbase/build/mkerofs:def.bzl", "erofs_image")
load("//osbase/build/mkimage:def.bzl", "node_image")
load("//osbase/build/mkoci:def.bzl", "oci_os_image")
@@ -61,7 +61,7 @@
"/etc/passwd": ":passwd",
"/etc/resolv.conf": "//osbase/net/dns:resolv.conf",
"/etc/hosts": "//osbase/net/dns:hosts",
- "/etc/os-release": ":os-release-info",
+ "/etc/os-release": ":product_info_os_release",
# Metrics exporters
"/metrics/bin/node_exporter": "@com_github_prometheus_node_exporter//:node_exporter",
@@ -123,7 +123,7 @@
cmdline = "console=ttyS0,115200 console=ttyS1,115200 console=ttyAMA0 console=tty0 quiet rootfstype=erofs init=/init loadpin.exclude=kexec-image,kexec-initramfs kernel.unknown_nmi_panic=1",
initrd = ["//third_party:ucode"],
kernel = "//third_party/linux",
- os_release = ":os-release-info",
+ os_release = ":product_info_os_release",
verity = ":verity_rootfs",
)
@@ -161,10 +161,15 @@
],
)
-os_release(
- name = "os-release-info",
+product_info(
+ name = "product_info",
+ components = [
+ "linux",
+ "kubernetes",
+ ],
os_id = "metropolis-node",
os_name = "Metropolis Node",
+ out_os_release = ":product_info_os_release",
stamp_var = "STABLE_MONOGON_metropolis_version",
)