Commit Graph
25 Commits
Author SHA1 Message Date
haylan 1452c4ac96 chore(cache): cache rework and update 2026-08-07 01:05:10 +02:00
haylan f0307c6558 Merge pull request 'docs(research): investigate Blender on Alpine/musl' (#18) from research/blender-musl-alpine into main 2026-08-06 22:43:59 +00:00
haylan 0c3a55a8cf Merge pull request 'docs(research): investigate Godot on Alpine/musl' (#17) from research/godot-musl-alpine into main 2026-08-06 22:43:42 +00:00
haylan 9982d6d098 Merge pull request 'docs(research): evaluate debian-slim vs alpine for base image (#8)' (#15) from research/glibc-slim-alternative into main 2026-08-06 22:41:51 +00:00
haylan c2795b0bba Merge pull request 'fix(docker): bake blender_path into EditorSettings for headless import' (#16) from fix/bake-blender-editor-settings into main 2026-08-06 22:38:53 +00:00
haylan a785bb2af0 Merge pull request 'docs(research): investigate mingw-w64 availability on Alpine' (#14) from research/mingw-w64-alpine into main 2026-08-06 22:37:58 +00:00
haylanandClaude-Bot 4a4e5d5f6d fix(docker): bake blender_path into EditorSettings for headless import
Godot's headless --import/--export-release refuses to auto-detect Blender
for .blend import: "Blender path is invalid or not set... Cannot configure
blender path in headless mode" (modules/gltf/editor/editor_scene_importer_blend.cpp).
Without this, the image's Blender install was silently unusable for its one
job — no .blend file would ever import in CI.

Bakes filesystem/import/blender/blender_path into a per-minor-version
EditorSettings .tres, same pattern barichello/godot-ci and abarichello's own
Dockerfile use for Android SDK/JDK paths.

Found and verified while resolving ticket #9 (Merge, publish, and validate
the debian-slim image end-to-end): confirmed a .blend import produces a real
.scn with this fix, and fails without it, on a real container built from
this Dockerfile.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-07 00:37:48 +02:00
haylan 516b61018e Merge branch 'main' into research/glibc-slim-alternative 2026-08-06 22:31:37 +00:00
haylan 8c36d01e2e Merge branch 'main' into research/mingw-w64-alpine 2026-08-06 22:31:24 +00:00
haylan 1907fd360d Merge pull request 'chore(docs): remove superseded handoff spec' (#13) from chore/remove-handoff-docs into main 2026-08-06 22:04:49 +00:00
haylanandClaude-Bot 8c7eccf948 chore(docs): remove superseded handoff spec
docs/handoff/godot-ci-custom-image.md was the original handoff spec for this
repo's creation, already marked "done, and superseded" — it describes the
barichello/godot-ci-based Dockerfile this repo has since moved off of (see
wayfinder map #2, ticket #7). No longer a useful reference now that the
current README and Dockerfile are the source of truth.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-07 00:04:33 +02:00
haylan ff5113a9cd Merge pull request 'feat(docker): switch base from barichello/godot-ci to debian:bookworm-slim' (#12) from feat/debian-slim-base into main 2026-08-06 22:02:10 +00:00
haylan 8feeb2b428 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
2026-08-06 23:11:53 +02:00
haylan ea7f49fe9f docs(research): evaluate debian-slim vs alpine for base image (#8)
Answers wayfinder ticket #8: does a glibc-based slim distro
(debian:bookworm-slim / trixie-slim) get most of Alpine's size win
without the musl risk #4-#6 found?

Verdict: not worth it. Debian bookworm-slim (26.92 MB compressed) is
within ~5% of ubuntu:noble (28.37 MB) per Docker Hub's official image
listings - nowhere near Alpine's musl size class. Debian does clear
every capability gap Alpine hit (posix-threads mingw-w64 in stable,
X11/audio dev headers, official Blender tarball runs unmodified since
it's glibc), but the size case for leaving Ubuntu was Alpine's alone.

Related to #4, #5, #6
2026-08-06 22:44:34 +02:00
haylan 2bfbffd5c5 docs(research): investigate mingw-w64 availability on Alpine
Answers wayfinder issue #6: Alpine's community/edge repo ships a
posix-threads-only mingw-w64-gcc cross toolchain, but it's edge-only
(not in a stable release) and no primary source confirms anyone has
built Godot Windows export templates with it.

Related to #6
2026-08-06 22:37:29 +02:00
haylanandClaude-Bot c33760b3af docs(research): investigate Godot musl/Alpine compatibility (#4)
Captures findings for wayfinder ticket #4: whether official Godot
Linux editor/export-template binaries run under Alpine/musl.

Throwaway research branch, not intended to merge.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 22:36:46 +02:00
haylanandClaude-Bot a6645add28 docs(research): investigate Blender under Alpine/musl (ticket #5)
Verdict: official glibc tarball does not run on Alpine as-is; gcompat
is not a credible fix for something Blender-sized (per gcompat's own
docs and one concrete failed community attempt). A musl-native
alternative exists (Alpine community's blender-headless package,
5.2.0-r0) but only on the edge branch, not a stable release — a real
argument against Alpine for this pipeline's pinned-version needs.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 22:34:33 +02:00
haylanandClaude-Bot 20d3660485 fix(ci): restore executable bit on directly-invoked scripts
scripts/resolve-blender-url.sh, resolve-godot-version.sh, and
test-lib.sh were committed as mode 644 (Windows checkouts don't
preserve the git exec bit, and it was never set). publish.yml invokes
the first two as ./scripts/resolve-*.sh, which needs it — the runner
failed with "Permission denied". lib.sh stays 644, it's only sourced.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 22:16:06 +02:00
haylan 2071119c0d Merge pull request 'fix(publish,docker): fix Blender runtime, CI disk/retry, local build docs' (#1) from feat/auto-godot-blender-tracking into main 2026-08-06 20:04:05 +00:00
haylanandClaude-Bot 5564948d0a docs: document building the image locally for testing
Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 22:03:10 +02:00
haylanandClaude-Bot 5ef5fce4a4 fix(publish): free runner disk before build and retry docker push
Auto-tracking the newest Godot/Blender means most nightly runs now
build genuinely new multi-GB layers instead of hitting cache, and
nothing ever pruned old ones — the runner's disk fills up over
successive runs until a push fails. Prune before building, and retry
docker push a few times to ride out transient registry 500s.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 22:03:06 +02:00
haylanandClaude-Bot 1e283fd77f fix(docker): install Blender's missing runtime libs
blender --version failed with "libxkbcommon.so.0: cannot open shared
object file" — libxkbcommon0, libsm6, and libice6 aren't pulled in by
anything else in the image. Caught via a local docker build (see
README), which the prior push-only workflow never exercised.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 22:02:59 +02:00
haylanandClaude-Bot e1f3cba486 feat: auto-track newest Godot and Blender in publish workflow
Replace the fixed 4.7.1 Dockerfile/workflow pin with:
- a nightly schedule that resolves the newest stable Godot (4.0+) and
  newest stable Blender, and builds+pushes <version> plus a floating
  latest tag only when the Godot version actually changed
- a workflow_dispatch free-text version input to (re)build any specific
  Godot version on demand, always with newest-at-build-time Blender,
  overwriting that tag without touching latest
- scripts/resolve-godot-version.sh and scripts/resolve-blender-url.sh,
  with shared parsing logic in scripts/lib.sh and an offline smoke test
  in scripts/test-lib.sh
- Blender is now fetched directly from download.blender.org instead of
  apt (Ubuntu noble's apt package is stuck on 4.0.2)
- drop the push-to-main trigger; schedule + workflow_dispatch only

Scope is Godot 4.0+ only — .blend import is a Godot 4 feature, so 3.x
builds have no use for the Blender toolchain this image adds.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 20:55:21 +02:00
haylanandClaude-Bot 1d15d6950f fix(publish): explicitly link pushed image to this repository
Gitea packages belong to the owner, not a repo, by default — pushing
alone doesn't surface the image under this repo's Packages tab, and
the org.opencontainers.image.source label some workflows set for this
doesn't auto-link on Gitea (closed feature request, never
implemented). Call the link API explicitly after push instead.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 20:20:13 +02:00
haylanandClaude-Bot 9d1b3e8a04 feat: add custom godot-ci export-toolchain image
Publish godot-ci image / publish (push) Failing after 7s
Bakes export-template.yml's apt-get toolchain into an image extending
barichello/godot-ci:4.7.1, plus a publish workflow to push it to this
repo's Gitea package registry.

Co-Authored-By: Claude Sonnet 5 <noreply@anthropic.com>
2026-08-06 19:50:34 +02:00