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
+10 -6
View File
@@ -9,9 +9,9 @@ on:
inputs:
godot_version:
description: >-
Godot version to (re)build, e.g. 4.7.1 — must exist as a
barichello/godot-ci tag (https://hub.docker.com/r/barichello/godot-ci/tags).
Leave empty to build the newest stable, same as the nightly run.
Godot version to (re)build, e.g. 4.7.1 — must exist as a stable release at
https://github.com/godotengine/godot-builds/releases. Leave empty to build
the newest stable, same as the nightly run.
required: false
type: string
@@ -40,12 +40,16 @@ jobs:
UPDATE_LATEST=true
fi
if ! docker manifest inspect "barichello/godot-ci:${VERSION}" >/dev/null 2>&1; then
# This image no longer depends on barichello/godot-ci as a base — it downloads Godot
# directly from godot-builds' own GitHub releases (see Dockerfile), so the gate here
# is against *that* release existing, not a third party's Docker tag.
RELEASE_URL="https://github.com/godotengine/godot-builds/releases/download/${VERSION}-stable/Godot_v${VERSION}-stable_linux.x86_64.zip"
if ! curl -fsSL -o /dev/null -r 0-0 "$RELEASE_URL"; then
if [ "${{ github.event_name }}" = "workflow_dispatch" ]; then
echo "::error::No barichello/godot-ci tag for '${VERSION}'. Check https://hub.docker.com/r/barichello/godot-ci/tags"
echo "::error::No godot-builds stable release for '${VERSION}'. Check https://github.com/godotengine/godot-builds/releases"
exit 1
fi
echo "::notice::Newest Godot stable is ${VERSION} but barichello/godot-ci has no matching tag yet — skipping, will retry tomorrow."
echo "::notice::Newest Godot stable is ${VERSION} but its godot-builds release isn't up yet — skipping, will retry tomorrow."
echo "skip=true" >> "$GITHUB_OUTPUT"
exit 0
fi