feat(dsl)!: ubuntu:24.04 default for imageless roots; drop default_image#144
Merged
Conversation
The SDK toolchains assume apt-get; alpine has none, so an imageless apt-base step died with 'apt-get: not found'.
Also repairs pre-existing rot in two ignored fixtures so they actually render: scratch().run()->sh() and variadic hm.pipeline(a,b)->pipeline([a,b]) in local_parallelism + local_fork_cache; and drops stray image= from chain children in keep_going (children boot from the parent snapshot).
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.
Problem
Imageless root steps fell back to `alpine:latest`, which has no `apt-get`. The SDK's toolchains (`hm.js.project`, `hm.python`, `hm.rust`, `hm.go`, …) all run `apt-get`, so a minimal pipeline died with `sh: apt-get: not found` (exit 127) unless the author remembered to pass `default_image=`.
Change
Make `ubuntu:24.04` the across-the-board default, and remove the `default_image` footgun:
Scope (deliberately retained)
The v0 wire field `default_image` and the Elixir backend's handling are kept as tolerated legacy input — the DSLs simply stop emitting it. Hand-written-JSON inheritance tests (`graph_build`, `graph_serde`, `default_image_inheritance`) are unchanged and still pass. Fully removing it from the wire contract is a follow-up, alongside generic `apt_get` support.
Verification
Also repaired pre-existing rot in two `#[ignore]`'d fixtures so they render again (`scratch().run()`→`.sh()`, variadic `pipeline(a,b)`→`pipeline([a,b])`).