pub use nornir_build_thing::{
container, elm, image_build, provenance, sink, surface, variant, vm,
};
pub use nornir_build_thing::{
build_variant, Attestation, BuildOutcome, BuildProvenance, BuildProvenanceSink, BuildSurface,
BuildThing, ContainerBuild, ImageFormat, ImageLayer, ProvenanceSealer,
};
pub use nornir_build_thing::{
build_container, build_vm, BuiltImage, ImageBuilder, PrebuiltVmBuilder, TargetAttestation,
TargetBuildOutcome, TargetKind, TargetProvenance, VmBuild, VmFormat, VmImageBuilder,
};
#[cfg(feature = "build-image")]
pub use nornir_build_thing::image_build::BollardImageBuilder;
#[cfg(feature = "build-provenance")]
pub mod seal;
#[cfg(test)]
mod reexport_tests {
#[test]
fn build_vm_reachable_via_reexport_and_seals_a_digest() {
use crate::build::image_build::build_vm;
use crate::build::vm::VmBuild;
use crate::build::PrebuiltVmBuilder;
let dir = tempfile::tempdir().unwrap();
let root = dir.path();
std::fs::create_dir_all(root.join("artifacts")).unwrap();
std::fs::write(root.join("artifacts/bzImage"), b"KERNEL bytes").unwrap();
std::fs::write(root.join("artifacts/rootfs.cpio.gz"), b"ROOTFS bytes").unwrap();
let vm = VmBuild {
name: "appliance".into(),
kernel: "artifacts/bzImage".into(),
rootfs: "artifacts/rootfs.cpio.gz".into(),
..Default::default()
};
let out = build_vm(&PrebuiltVmBuilder, &vm, "repo", root).unwrap();
assert_eq!(out.kind, crate::build::TargetKind::Vm);
let hex = out.attestation.digest_hex();
assert_eq!(hex.len(), 64, "sha-256 digest is 64 hex chars: {hex}");
assert!(hex.chars().all(|c| c.is_ascii_hexdigit()));
assert!(out.attestation.digest_matches_record().unwrap());
}
}