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>
godot-ci
Custom image extending barichello/godot-ci with the Godot export-template toolchain and Blender
pre-installed, so Project4x's export-template.yml doesn't apt-get install them on every
release run.
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.
Image
git.arthurerlich.de/haylan/godot-ci:<godot-version>, e.g. git.arthurerlich.de/haylan/godot-ci:4.7.1,
plus a floating git.arthurerlich.de/haylan/godot-ci:latest that always points at the newest.
Godot 4.0+ only (Blender's .blend import is a Godot 4 feature — 3.x builds have no use for
this image's Blender toolchain).
How versions get built
.gitea/workflows/publish.yml:
- 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>+latestonly if that Godot version isn't already published. Ifbarichello/godot-cihasn't tagged the new Godot version 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 touchlatest. Fails clearly ifbarichello/godot-cihas no matching tag — check its tag list 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
logic both resolve scripts share (scripts/lib.sh).
Auth
The publish workflow pushes to this repo's Gitea package (container) registry using a Personal
Access Token stored as the repo secret REGISTRY_PUSH_PAT — the built-in per-run GITEA_TOKEN
cannot push to the package registry on this instance.
- Scope:
write:package(read:packagetoo if the workflow ever needs to pull the image back before tagging). - Owner: TODO — fill in once the token is generated (Settings → Applications → Generate New Token on the account that should own the published packages).
Consuming this image
In Project4x's .gitea/workflows/export-template.yml, pin to a specific version (recommended,
matches whatever GODOT_VERSION the project itself targets) or float on latest:
- container: barichello/godot-ci:4.7.1
+ container: git.arthurerlich.de/haylan/godot-ci:4.7.1