Files
godot-ci/README.md
T
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

2.6 KiB

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> + 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.
  • 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 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:package too 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