flowey_hvlite/pipelines/
mod.rs1use crate::pipelines::vmm_tests_run_target::VmmTestsRunTargetCli;
5use cca_tests::CcaTestsCli;
6use flowey::pipeline::prelude::*;
7use restore_packages::RestorePackagesCli;
8use vmm_perf::VmmPerfCli;
9use vmm_tests_run::VmmTestsRunCli;
10
11pub mod build_docs;
12pub mod build_igvm;
13pub mod build_opentmk;
14pub mod build_reproducible;
15pub mod burn_in;
16pub mod cca_tests;
17pub mod checkin_gates;
18pub mod custom_vmfirmwareigvm_dll;
19pub mod openvmm_source_release;
20pub mod restore_packages;
21pub mod vmm_perf;
22pub mod vmm_tests_run;
23pub mod vmm_tests_run_target;
24
25#[derive(clap::Subcommand)]
26#[expect(clippy::large_enum_variant)]
27pub enum OpenvmmPipelines {
28 Regen {
31 #[arg(trailing_var_arg = true, allow_hyphen_values = true, hide = true)]
32 args: Vec<String>,
33 },
34
35 BuildIgvm(build_igvm::BuildIgvmCli),
36 BuildOpentmk(build_opentmk::BuildOpentmkCli),
38 BuildReproducible(build_reproducible::BuildReproducibleCli),
39 CustomVmfirmwareigvmDll(custom_vmfirmwareigvm_dll::CustomVmfirmwareigvmDllCli),
40
41 #[clap(subcommand)]
43 Ci(OpenvmmPipelinesCi),
44
45 RestorePackages(RestorePackagesCli),
47
48 VmmTestsRun(VmmTestsRunCli),
50
51 VmmPerf(VmmPerfCli),
53
54 VmmTestsRunTarget(VmmTestsRunTargetCli),
56
57 CcaTests(CcaTestsCli),
59}
60
61#[derive(clap::Subcommand)]
62pub enum OpenvmmPipelinesCi {
63 CheckinGates(checkin_gates::CheckinGatesCli),
64 BuildDocs(build_docs::BuildDocsCli),
65 OpenvmmSourceRelease(openvmm_source_release::OpenvmmSourceReleaseCli),
67 BurnIn(burn_in::BurnInCli),
68}
69
70impl IntoPipeline for OpenvmmPipelines {
71 fn into_pipeline(self, pipeline_hint: PipelineBackendHint) -> anyhow::Result<Pipeline> {
72 match self {
73 OpenvmmPipelines::Regen { args } => {
74 let status = std::process::Command::new("cargo")
75 .args([
76 "run",
77 "-p",
78 "flowey_hvlite",
79 "--profile",
80 "light",
81 "--",
82 "regen",
83 ])
84 .args(args)
85 .spawn()?
86 .wait()?;
87 std::process::exit(status.code().unwrap_or(-1));
88 }
89 OpenvmmPipelines::BuildIgvm(cmd) => cmd.into_pipeline(pipeline_hint),
90 OpenvmmPipelines::BuildOpentmk(cmd) => cmd.into_pipeline(pipeline_hint),
91 OpenvmmPipelines::BuildReproducible(cmd) => cmd.into_pipeline(pipeline_hint),
92 OpenvmmPipelines::CustomVmfirmwareigvmDll(cmd) => cmd.into_pipeline(pipeline_hint),
93 OpenvmmPipelines::Ci(cmd) => match cmd {
94 OpenvmmPipelinesCi::CheckinGates(cmd) => cmd.into_pipeline(pipeline_hint),
95 OpenvmmPipelinesCi::BuildDocs(cmd) => cmd.into_pipeline(pipeline_hint),
96 OpenvmmPipelinesCi::OpenvmmSourceRelease(cmd) => cmd.into_pipeline(pipeline_hint),
97 OpenvmmPipelinesCi::BurnIn(cmd) => cmd.into_pipeline(pipeline_hint),
98 },
99 OpenvmmPipelines::RestorePackages(cmd) => cmd.into_pipeline(pipeline_hint),
100 OpenvmmPipelines::VmmTestsRun(cmd) => cmd.into_pipeline(pipeline_hint),
101 OpenvmmPipelines::VmmPerf(cmd) => cmd.into_pipeline(pipeline_hint),
102 OpenvmmPipelines::VmmTestsRunTarget(cmd) => cmd.into_pipeline(pipeline_hint),
103 OpenvmmPipelines::CcaTests(cmd) => cmd.into_pipeline(pipeline_hint),
104 }
105 }
106}