pub struct BuildSkeleton {
pub parsed_dockerfile: Dockerfile,
pub base_layers: Vec<LayerRef>,
pub base_manifest: BaseImageManifest,
pub working_layer_chain_dir: PathBuf,
pub working_chain: Vec<WindowsLayerEntry>,
pub image_config: OciImageConfig,
pub instruction_log: Vec<ExecutedInstruction>,
pub provisioned_toolchain_language: Option<String>,
}Expand description
Output of WindowsBuilder::build_skeleton — the parsed Dockerfile
plus the materialised base layer chain plus the resolved base
manifest.
Consumed by Phase 4 follow-up tasks:
- 4.B (RUN, this task) iterates
parsed_dockerfile.stages[0].instructionsand for eachInstruction::Runspawns an HCS compute system attached to the working chain stored inworking_chain, captures the diff viawclayer::export_layer, and appends a newLayerReftobase_layersplus a newWindowsLayerEntrytoworking_chain. - 4.C (COPY/ADD) writes context files into the working scratch layer before the next 4.B commit.
- 4.D (manifest) emits the final OCI image with
os: "windows",os.versionfrombase_manifest, and the accumulatedbase_layers + post-4.B layerschain. - 4.E (push) pipes the 4.D manifest into the registry client.
Fields§
§parsed_dockerfile: DockerfileParsed Dockerfile — parsed_dockerfile.stages[0] is the single
stage supported by the skeleton.
base_layers: Vec<LayerRef>Base image layers in base-first order (matching OCI manifest order). Task 4.B appends post-RUN layers to the end of this vector.
base_manifest: BaseImageManifestManifest metadata from the resolved base image.
working_layer_chain_dir: PathBufOn-disk path to the working layer chain root. On Windows this is
the directory passed to
[zlayer_agent::windows::unpacker::unpack_windows_image]; on other
hosts this field is the <cache_dir>/<build_id>/unpacked/ path
the skeleton would have used had the build proceeded. Each
post-RUN read-only layer is staged as a subdirectory here.
working_chain: Vec<WindowsLayerEntry>Materialised layers in base-first order. The HCS storage
filter consumes the reversed (child-to-parent) view; helpers in
this module do the reversal at the point of use. Populated on
Windows by build_skeleton from the unpacker output and extended
by each successful RUN step.
image_config: OciImageConfigOCI image config accumulated by config-only Dockerfile instructions (WORKDIR / ENV / ENTRYPOINT / CMD / USER / EXPOSE / VOLUME / LABEL / SHELL / STOPSIGNAL / HEALTHCHECK / ONBUILD). Task 4.D serialises this into the image config blob.
instruction_log: Vec<ExecutedInstruction>Per-instruction execution log in build order. The first entry is
the FROM instruction (recorded by WindowsBuilder::build_skeleton);
subsequent entries are appended by
WindowsBuilder::execute_instruction in the order it is called.
Task 4.D (WindowsBuilder::emit_image) consumes this to emit
the OCI image config history array.
provisioned_toolchain_language: Option<String>Provisioned toolchain language detected for this base image, e.g.
"go", "node", "rust", "python", or None if the base does
not carry a prebuilt language toolchain. Populated by
WindowsBuilder::build_image_for_backend right after
build_skeleton from [crate::windows_toolchain::detect_toolchain].
Threaded into the crate::buildah::DockerfileTranslator on each
RUN so package-manager translation can skip system packages that
the provisioned toolchain already supplies (e.g. dropping
apt install nodejs when the image already ships a Node
toolchain). None for everything that goes through
WindowsBuilder::build_skeleton / WindowsBuilder::build_and_push
— those paths predate the toolchain hook and stay on the
translator’s default behaviour.
Trait Implementations§
Auto Trait Implementations§
impl Freeze for BuildSkeleton
impl RefUnwindSafe for BuildSkeleton
impl Send for BuildSkeleton
impl Sync for BuildSkeleton
impl Unpin for BuildSkeleton
impl UnsafeUnpin for BuildSkeleton
impl UnwindSafe for BuildSkeleton
Blanket Implementations§
Source§impl<T> BorrowMut<T> for Twhere
T: ?Sized,
impl<T> BorrowMut<T> for Twhere
T: ?Sized,
Source§fn borrow_mut(&mut self) -> &mut T
fn borrow_mut(&mut self) -> &mut T
Source§impl<T> Instrument for T
impl<T> Instrument for T
Source§fn instrument(self, span: Span) -> Instrumented<Self>
fn instrument(self, span: Span) -> Instrumented<Self>
Source§fn in_current_span(self) -> Instrumented<Self>
fn in_current_span(self) -> Instrumented<Self>
Source§impl<T> IntoEither for T
impl<T> IntoEither for T
Source§fn into_either(self, into_left: bool) -> Either<Self, Self>
fn into_either(self, into_left: bool) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left is true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
fn into_either_with<F>(self, into_left: F) -> Either<Self, Self>
self into a Left variant of Either<Self, Self>
if into_left(&self) returns true.
Converts self into a Right variant of Either<Self, Self>
otherwise. Read moreSource§impl<T> IntoRequest<T> for T
impl<T> IntoRequest<T> for T
Source§fn into_request(self) -> Request<T>
fn into_request(self) -> Request<T>
T in a tonic::Request