feat(wfe-yaml): wire rustlang step types and containerd integration tests

Add rustlang feature flag to wfe-yaml with support for all cargo and
rustup step types (15 total), including cargo-doc-mdx.

Schema additions: output_dir, package, features, all_features,
no_default_features, release, profile, toolchain, extra_args,
components, targets, default_toolchain fields on StepConfig.

Integration tests for compiling all step types from YAML, and
containerd-based end-to-end tests for running Rust toolchain
inside containers from bare Debian images.
This commit is contained in:
2026-03-29 16:57:50 +01:00
parent 272ddf17c2
commit 60e8c7f9a8
5 changed files with 1403 additions and 0 deletions

View File

@@ -164,6 +164,39 @@ pub struct StepConfig {
pub containerd_addr: Option<String>,
/// CLI binary name for containerd steps: "nerdctl" (default) or "docker".
pub cli: Option<String>,
// Cargo fields
/// Target package for cargo steps (`-p`).
pub package: Option<String>,
/// Features to enable for cargo steps.
#[serde(default)]
pub features: Vec<String>,
/// Enable all features for cargo steps.
#[serde(default)]
pub all_features: Option<bool>,
/// Disable default features for cargo steps.
#[serde(default)]
pub no_default_features: Option<bool>,
/// Build in release mode for cargo steps.
#[serde(default)]
pub release: Option<bool>,
/// Build profile for cargo steps (`--profile`).
pub profile: Option<String>,
/// Rust toolchain override for cargo steps (e.g. "nightly").
pub toolchain: Option<String>,
/// Additional arguments for cargo/rustup steps.
#[serde(default)]
pub extra_args: Vec<String>,
/// Output directory for generated files (e.g., MDX docs).
pub output_dir: Option<String>,
// Rustup fields
/// Components to add for rustup steps (e.g. ["clippy", "rustfmt"]).
#[serde(default)]
pub components: Vec<String>,
/// Compilation targets to add for rustup steps (e.g. ["wasm32-unknown-unknown"]).
#[serde(default)]
pub targets: Vec<String>,
/// Default toolchain for rust-install steps.
pub default_toolchain: Option<String>,
// Workflow (sub-workflow) fields
/// Child workflow ID (for `type: workflow` steps).
#[serde(rename = "workflow")]