Given the measured size/build-time breakdown (Measure where current image's size/build-time
actually go (#3)) and the musl-compatibility
findings for Godot (#4), Blender
(#5), and mingw-w64
(#6) — plus the glibc-slim-alternative
findings (#8) — which approach actually
delivers the win?
Alpine base, building the Godot CLI toolchain manually (per abarichello/godot-ci's own
approach: download official binaries directly rather than depending on a base image for them),
with gcompat if the research tickets show it's needed for Blender/Godot. Early signal from
#4/#5/#6: everything this needs lives on Alpine's unpinned edge/community repos, and
Godot/Blender musl compatibility is unverified (one open Godot issue reports a musl segfault)
— this candidate is looking weak.
A glibc-based slim distro (e.g. debian:bookworm-slim) — same manual-toolchain approach as
Alpine, but without the musl-compatibility risk. See #8.
A trimmed / multi-stage Debian or Ubuntu build (e.g. debian:slim, discard build-essential
and dev headers after compiling export templates, keep only runtime .sos) — no libc risk, but
a smaller size win.
Staying on barichello/godot-ci but slimming what's layered on top of it.
## Question
Given the measured size/build-time breakdown ([Measure where current image's size/build-time
actually go (#3)](https://git.arthurerlich.de/haylan/godot-ci/issues/3)) and the musl-compatibility
findings for Godot ([#4](https://git.arthurerlich.de/haylan/godot-ci/issues/4)), Blender
([#5](https://git.arthurerlich.de/haylan/godot-ci/issues/5)), and mingw-w64
([#6](https://git.arthurerlich.de/haylan/godot-ci/issues/6)) — plus the glibc-slim-alternative
findings ([#8](https://git.arthurerlich.de/haylan/godot-ci/issues/8)) — which approach actually
delivers the win?
- Alpine base, building the Godot CLI toolchain manually (per `abarichello/godot-ci`'s own
approach: download official binaries directly rather than depending on a base image for them),
with `gcompat` if the research tickets show it's needed for Blender/Godot. **Early signal from
#4/#5/#6: everything this needs lives on Alpine's unpinned `edge`/`community` repos, and
Godot/Blender musl compatibility is unverified (one open Godot issue reports a musl segfault)
— this candidate is looking weak.**
- A glibc-based slim distro (e.g. `debian:bookworm-slim`) — same manual-toolchain approach as
Alpine, but without the musl-compatibility risk. See #8.
- A trimmed / multi-stage Debian or Ubuntu build (e.g. `debian:slim`, discard `build-essential`
and dev headers after compiling export templates, keep only runtime `.so`s) — no libc risk, but
a smaller size win.
- Staying on `barichello/godot-ci` but slimming what's layered on top of it.
- Anything else the research surfaces.
Blocked by [#3](https://git.arthurerlich.de/haylan/godot-ci/issues/3),
[#4](https://git.arthurerlich.de/haylan/godot-ci/issues/4),
[#5](https://git.arthurerlich.de/haylan/godot-ci/issues/5),
[#6](https://git.arthurerlich.de/haylan/godot-ci/issues/6),
[#8](https://git.arthurerlich.de/haylan/godot-ci/issues/8).
Part of [Smaller/faster godot-ci image (map)](https://git.arthurerlich.de/haylan/godot-ci/issues/2).
Decided: debian:bookworm-slim, dropping barichello/godot-ci as a base entirely — Godot
downloaded straight from official godot-builds releases (per abarichello's own approach), matching
candidate 2 from this ticket's options.
Why: #4/#5/#6 showed Alpine's compatibility risk was real and unresolved (glibc-only official
Godot/Blender binaries, Alpine's musl-native alternatives stuck on the unpinned edge repo). #8
showed a bare glibc-slim swap (Ubuntu → Debian) wasn't meaningfully smaller on its own. But
barichello/godot-ci's actual weight turned out to be mostly Android SDK/NDK (~2.4GB base, before
this repo's own layers) — weight this image never used (no Android export in scope). Dropping that
dependency entirely, not just swapping its base OS, is where the real win was.
Verified with a real local docker build + docker run: final image (Godot 4.7.1 + export
templates + Blender 4.2.3 + mingw-w64-posix + X11/audio dev libs) = 2343MB total, vs.
barichello/godot-ci:4.7.1's bare base alone = 2460MB (before any of this repo's packages were
added). Godot runs headless, export templates are present, x86_64-w64-mingw32-gcc-posix is the
active alternative, Blender runs — all smoke-tested in the built image.
Implemented on branch feat/debian-slim-base (commit 8feeb2b), not yet merged/published.
Supersedes the planned use of ticket #3's measurement (that data got captured directly as part of
resolving this ticket instead of as a separate session) — closing #3 as redundant.
## Answer
**Decided: `debian:bookworm-slim`**, dropping `barichello/godot-ci` as a base entirely — Godot
downloaded straight from official godot-builds releases (per abarichello's own approach), matching
candidate 2 from this ticket's options.
Why: #4/#5/#6 showed Alpine's compatibility risk was real and unresolved (glibc-only official
Godot/Blender binaries, Alpine's musl-native alternatives stuck on the unpinned `edge` repo). #8
showed a bare glibc-slim swap (Ubuntu → Debian) wasn't meaningfully smaller on its own. But
barichello/godot-ci's actual weight turned out to be mostly Android SDK/NDK (~2.4GB base, before
this repo's own layers) — weight this image never used (no Android export in scope). Dropping that
dependency entirely, not just swapping its base OS, is where the real win was.
Verified with a real local `docker build` + `docker run`: final image (Godot 4.7.1 + export
templates + Blender 4.2.3 + mingw-w64-posix + X11/audio dev libs) = **2343MB total**, vs.
barichello/godot-ci:4.7.1's bare base alone = **2460MB** (before any of this repo's packages were
added). Godot runs headless, export templates are present, `x86_64-w64-mingw32-gcc-posix` is the
active alternative, Blender runs — all smoke-tested in the built image.
Implemented on branch `feat/debian-slim-base` (commit 8feeb2b), not yet merged/published.
Supersedes the planned use of ticket #3's measurement (that data got captured directly as part of
resolving this ticket instead of as a separate session) — closing #3 as redundant.
Blocking a user prevents them from interacting with repositories, such as opening or commenting on pull requests or issues. Learn more about blocking a user.
Question
Given the measured size/build-time breakdown (Measure where current image's size/build-time
actually go (#3)) and the musl-compatibility
findings for Godot (#4), Blender
(#5), and mingw-w64
(#6) — plus the glibc-slim-alternative
findings (#8) — which approach actually
delivers the win?
abarichello/godot-ci's ownapproach: download official binaries directly rather than depending on a base image for them),
with
gcompatif the research tickets show it's needed for Blender/Godot. Early signal from#4/#5/#6: everything this needs lives on Alpine's unpinned
edge/communityrepos, andGodot/Blender musl compatibility is unverified (one open Godot issue reports a musl segfault)
— this candidate is looking weak.
debian:bookworm-slim) — same manual-toolchain approach asAlpine, but without the musl-compatibility risk. See #8.
debian:slim, discardbuild-essentialand dev headers after compiling export templates, keep only runtime
.sos) — no libc risk, buta smaller size win.
barichello/godot-cibut slimming what's layered on top of it.Blocked by #3,
#4,
#5,
#6,
#8.
Part of Smaller/faster godot-ci image (map).
Answer
Decided:
debian:bookworm-slim, droppingbarichello/godot-cias a base entirely — Godotdownloaded straight from official godot-builds releases (per abarichello's own approach), matching
candidate 2 from this ticket's options.
Why: #4/#5/#6 showed Alpine's compatibility risk was real and unresolved (glibc-only official
Godot/Blender binaries, Alpine's musl-native alternatives stuck on the unpinned
edgerepo). #8showed a bare glibc-slim swap (Ubuntu → Debian) wasn't meaningfully smaller on its own. But
barichello/godot-ci's actual weight turned out to be mostly Android SDK/NDK (~2.4GB base, before
this repo's own layers) — weight this image never used (no Android export in scope). Dropping that
dependency entirely, not just swapping its base OS, is where the real win was.
Verified with a real local
docker build+docker run: final image (Godot 4.7.1 + exporttemplates + Blender 4.2.3 + mingw-w64-posix + X11/audio dev libs) = 2343MB total, vs.
barichello/godot-ci:4.7.1's bare base alone = 2460MB (before any of this repo's packages were
added). Godot runs headless, export templates are present,
x86_64-w64-mingw32-gcc-posixis theactive alternative, Blender runs — all smoke-tested in the built image.
Implemented on branch
feat/debian-slim-base(commit8feeb2b), not yet merged/published.Supersedes the planned use of ticket #3's measurement (that data got captured directly as part of
resolving this ticket instead of as a separate session) — closing #3 as redundant.