feat(docker): switch base from barichello/godot-ci to debian:bookworm-slim

Drop the dependency on barichello/godot-ci as a base image (Ubuntu, ~2.4GB
before this repo adds anything, most of it Android SDK/NDK weight this image
never uses). Download Godot's editor and export templates directly from its
official godot-builds releases instead, the same source barichello's own
Dockerfile pulls from.

Alpine was the first candidate considered and rejected: official Godot and
Blender binaries are glibc-only, and Alpine's musl-native alternatives for
both live only on its unpinned edge repo (see wayfinder tickets #4, #5, #6).
A glibc-slim distro turned out not to be meaningfully smaller than Ubuntu
either (#8) — but dropping barichello's Android-SDK-laden base entirely
still nets a real win: local build measured 2343MB total (Godot + export
templates + Blender + mingw-w64 + X11 dev libs) vs. barichello's bare base
alone at 2460MB before this repo's layers were ever added.

publish.yml's barichello-tag gate is replaced with a check against the
godot-builds release we now actually depend on.

Decided via wayfinder map #2, ticket #7:
#7
This commit is contained in:
2026-08-06 23:11:53 +02:00
parent 20d3660485
commit 8feeb2b428
3 changed files with 52 additions and 21 deletions
+14 -6
View File
@@ -1,9 +1,17 @@
# godot-ci
Custom image extending `barichello/godot-ci` with the Godot export-template toolchain and Blender
A `debian:bookworm-slim`-based image with Godot, its export-template toolchain, and Blender
pre-installed, so `Project4x`'s `export-template.yml` doesn't `apt-get install` them on every
release run.
Godot is downloaded directly from its official [godot-builds
releases](https://github.com/godotengine/godot-builds/releases) rather than from a base image —
this repo previously extended `barichello/godot-ci` (Ubuntu-based) but moved off it to shed that
dependency's weight. Alpine was considered and rejected first: official Godot and Blender
binaries are glibc-only, and Alpine's musl-native alternatives for both live only on its unpinned
`edge` repo — not a safe bet for a nightly-rebuilding image. See [wayfinder map
#2](https://git.arthurerlich.de/haylan/godot-ci/issues/2) for the full research trail.
Built from the handoff spec at `Project4x`'s `docs/handoff/godot-ci-custom-image.md`; scope and
versioning have since moved on from that spec — see below.
@@ -22,13 +30,13 @@ this image's Blender toolchain).
- **Nightly (midnight, `schedule:`)**: resolves the newest *stable* Godot release
(`scripts/resolve-godot-version.sh`) and the newest stable Blender
(`scripts/resolve-blender-url.sh`), and rebuilds+pushes `<version>` + `latest` only if that
Godot version isn't already published. If `barichello/godot-ci` hasn't tagged the new Godot
version yet, the run skips (with a notice, not a failure) and retries the next night.
Godot version isn't already published. If godot-builds hasn't published that release's assets
yet, the run skips (with a notice, not a failure) and retries the next night.
- **Manual (`workflow_dispatch`)**: type a Godot version (e.g. `4.6.3`) to (re)build and push that
exact tag, always with whatever Blender is newest at build time. Overwrites the tag if it
already exists. Does **not** touch `latest`. Fails clearly if `barichello/godot-ci` has no
matching tag — check
[its tag list](https://hub.docker.com/r/barichello/godot-ci/tags) first.
already exists. Does **not** touch `latest`. Fails clearly if godot-builds has no matching
release — check its [releases list](https://github.com/godotengine/godot-builds/releases)
first.
Blender has no official "latest stable" API — `resolve-blender-url.sh` scrapes
`download.blender.org/release/`. `scripts/test-lib.sh` is an offline smoke test for the parsing