feat: allow providing source assets from container images - #686
Merged
talos-bot merged 1 commit intoJul 30, 2026
Conversation
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 29, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that injects artifacts from docker stages into the build source tree. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
force-pushed
the
custom-step-build-artifacts
branch
from
July 29, 2026 15:44
b481f61 to
2c8e0c4
Compare
utkuozdemir
force-pushed
the
custom-step-build-artifacts
branch
from
July 29, 2026 16:23
2c8e0c4 to
a3b95b2
Compare
utkuozdemir
marked this pull request as draft
July 29, 2026 16:23
utkuozdemir
added a commit
to utkuozdemir/sidero-booter
that referenced
this pull request
Jul 29, 2026
The iPXE boot binaries are now embedded into the booter binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP, so booter no longer needs a writable filesystem. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The HTTP boot file names handed out by the DHCP proxy now also resolve, previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The container image now contains nothing beyond the booter binary itself, and running booter as a plain binary outside the container is fully supported. The iPXE binaries that had been tracked in the repository since the initial commit are removed and ignored. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Dependency versions flagged by the vulnerability audit are bumped as well. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 29, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
force-pushed
the
custom-step-build-artifacts
branch
from
July 29, 2026 16:28
a3b95b2 to
de56c80
Compare
utkuozdemir
marked this pull request as ready for review
July 29, 2026 16:31
utkuozdemir
force-pushed
the
custom-step-build-artifacts
branch
from
July 29, 2026 16:44
de56c80 to
6a3c8a4
Compare
utkuozdemir
added a commit
to utkuozdemir/sidero-booter
that referenced
this pull request
Jul 29, 2026
The iPXE boot binaries are now embedded into the booter binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP, so booter no longer needs a writable filesystem. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The HTTP boot file names handed out by the DHCP proxy now also resolve, previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The container image now contains nothing beyond the booter binary itself, and running booter as a plain binary outside the container is fully supported. The iPXE binaries that had been tracked in the repository since the initial commit are removed and ignored. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Dependency versions flagged by the vulnerability audit are bumped as well. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 29, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
Projects can now declare source assets: files pulled from pinned container images into the source tree of the build, without being committed to the repository, e.g. binaries referenced by go:embed directives.
Example:
```yaml
kind: common.SourceAssets
spec:
images:
- ref: ghcr.io/siderolabs/ipxe:v1.11.0
copies:
- platform: linux/amd64
source: /usr/libexec/
destination: internal/ipxe/data/amd64
```
The declaration generates everything derived from it: the image stages and a collector stage in the Dockerfile, the copy into the source tree of the base stage so lint, tests, and builds all see the files, the git and docker ignore rules for the destinations, a fetch-source-assets make target which materializes the same collector stage locally for native builds outside docker, and a renovate manager so the image references receive update PRs.
Invalid configurations fail generation: an empty image reference, a relative source path, a destination escaping the source tree, and overlapping destinations.
Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
force-pushed
the
custom-step-build-artifacts
branch
from
July 29, 2026 19:01
6a3c8a4 to
34f68df
Compare
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 29, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
oguzkilcan
approved these changes
Jul 30, 2026
Member
Author
|
/m |
utkuozdemir
added a commit
to utkuozdemir/sidero-booter
that referenced
this pull request
Jul 30, 2026
The iPXE boot binaries are now embedded into the booter binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP, so booter no longer needs a writable filesystem. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The HTTP boot file names handed out by the DHCP proxy now also resolve, previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The container image now contains nothing beyond the booter binary itself, and running booter as a plain binary outside the container is fully supported. The iPXE binaries that had been tracked in the repository since the initial commit are removed and ignored. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Dependency versions flagged by the vulnerability audit are bumped as well. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 30, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 30, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The directory holding the local boot assets is now configurable via a flag instead of being a fixed path that only exists inside the container image. When local boot assets are enabled, the provider verifies at startup that the directory contains every file it can serve and fails listing the missing ones, instead of failing only when a machine attempts to boot. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 30, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The directory holding the local boot assets is now configurable via a flag instead of being a fixed path that only exists inside the container image. When local boot assets are enabled, the provider verifies at startup that the directory contains every file it can serve and fails listing the missing ones, instead of failing only when a machine attempts to boot. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 30, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The directory holding the local boot assets is now configurable via a flag instead of being a fixed path that only exists inside the container image. When local boot assets are enabled, the provider verifies at startup that the directory contains every file it can serve and fails listing the missing ones, instead of failing only when a machine attempts to boot. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected for the host architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-booter
that referenced
this pull request
Jul 30, 2026
The iPXE boot binaries are now embedded into the booter binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP, so booter no longer needs a writable filesystem. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The HTTP boot file names handed out by the DHCP proxy now also resolve, previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The container image now contains nothing beyond the booter binary itself, and running booter as a plain binary outside the container is fully supported. The iPXE binaries that had been tracked in the repository since the initial commit are removed and ignored. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Dependency versions flagged by the vulnerability audit are bumped as well. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-booter
that referenced
this pull request
Jul 30, 2026
The iPXE boot binaries are now embedded into the booter binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP, so booter no longer needs a writable filesystem. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The HTTP boot file names handed out by the DHCP proxy now also resolve, previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The container image now contains nothing beyond the booter binary itself, and running booter as a plain binary outside the container is fully supported. The iPXE binaries that had been tracked in the repository since the initial commit are removed and ignored. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Dependency versions flagged by the vulnerability audit are bumped as well. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 30, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The directory holding the local boot assets is now configurable via a flag instead of being a fixed path that only exists inside the container image. When local boot assets are enabled, the provider verifies the directory at startup, requiring a complete and usable set of assets for at least one architecture, instead of failing only when a machine attempts to boot. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected by machine firmware and architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-booter
that referenced
this pull request
Jul 30, 2026
The iPXE boot binaries are now embedded into the booter binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP, so booter no longer needs a writable filesystem. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The HTTP boot file names handed out by the DHCP proxy now also resolve, previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The container image now contains nothing beyond the booter binary itself, and running booter as a plain binary outside the container is fully supported. The iPXE binaries that had been tracked in the repository since the initial commit are removed and ignored. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Dependency versions flagged by the vulnerability audit are bumped as well. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
utkuozdemir
added a commit
to utkuozdemir/sidero-omni-infra-provider-bare-metal
that referenced
this pull request
Jul 30, 2026
A set of improvements that remove the provider's dependency on its container image and fix UEFI HTTP boot. Together they also make the emulated development flow work natively on macOS, where QEMU uses the vmnet network. The iPXE boot binaries are now embedded into the provider binary at build time instead of being read from a directory. The container build injects them from the pinned iPXE image, and a native build populates them with a make target first. The embedded files are listed explicitly, so a binary can never be built without them. Patching now happens entirely in memory and the patched binaries are served from memory over both TFTP and HTTP. The BIOS binaries are compressed in-process using the go-zbin library instead of executing the compressor tool bundled in the container image. The compressor, its libraries, and the iPXE binaries are all dropped from the image. The HTTP boot file names handed out by the DHCP proxy now also resolve. Previously they pointed at paths nothing created, so UEFI HTTP boot only worked with manual filesystem setup. The directory holding the local boot assets is now configurable via a flag instead of being a fixed path that only exists inside the container image. When local boot assets are enabled, the provider verifies the directory at startup, requiring a complete and usable set of assets for at least one architecture, instead of failing only when a machine attempts to boot. The qemu-up tool gains an option to have the provisioner's own DHCP server hand out the PXE boot server and boot file directly, instead of relying on the ProxyDHCP responses. Some UEFI PXE stacks, such as the firmware QEMU uses on macOS, do not accept ProxyDHCP offers, so without this the emulated machines never boot. The boot file is selected by machine firmware and architecture and served from the provider's TFTP server on the gateway address. The build tooling is regenerated with the kres feature that provides source assets from container images, so the whole asset pipeline is derived from a single declaration. Part of siderolabs/kres#686. Signed-off-by: Utku Ozdemir <utku.ozdemir@siderolabs.com>
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Projects can now declare source assets: files pulled from pinned container images into the source tree of the build, without being committed to the repository, e.g. binaries referenced by go:embed directives.
Example:
The declaration generates everything derived from it: the image stages and a collector stage in the Dockerfile, the copy into the source tree of the base stage so lint, tests, and builds all see the files, the git and docker ignore rules for the destinations, a fetch-source-assets make target which materializes the same collector stage locally for native builds outside docker, and a renovate manager so the image references receive update PRs.
Invalid configurations fail generation: an empty image reference, a relative source path, a destination escaping the source tree, and overlapping destinations.