Export build CI job + Godot version pinning #3

Closed
opened 2026-09-21 18:47:33 +00:00 by Mark · 1 comment
Owner

export_presets.cfg ships skeleton presets for Windows Desktop, Linux/X11, and Android (arm64), but CI never exercises them — nothing catches a broken preset until a human tries to export by hand. Also, the project targets Godot 4.3 while dev hosts may run newer editors (a 4.7 shadowing bug already bit once: VirtualJoystick native-class collision, fixed in c16562f).

Landable scope:

  • Add a CI job that runs a headless Linux export (godot --headless --export-release) and archives the artifact
  • Record the intended Godot version in README/ci.yml and document the forward-compat policy
`export_presets.cfg` ships skeleton presets for Windows Desktop, Linux/X11, and Android (arm64), but CI never exercises them — nothing catches a broken preset until a human tries to export by hand. Also, the project targets Godot 4.3 while dev hosts may run newer editors (a 4.7 shadowing bug already bit once: `VirtualJoystick` native-class collision, fixed in c16562f). Landable scope: - Add a CI job that runs a headless Linux export (`godot --headless --export-release`) and archives the artifact - Record the intended Godot version in README/ci.yml and document the forward-compat policy
Author
Owner

Landed in commit d63172e (ci: add headless Linux/X11 release export job + pin Godot 4.3).

What landed:

  • New export-linux job in .forgejo/workflows/ci.yml that downloads the official Godot 4.3 stable Linux binary + matching export templates from godotengine/godot-builds, installs the X11/GL runtime libs the produced binary links against, runs godot --headless --export-release "Linux/X11" headlessly, smoke-tests the resulting binary's --version, and uploads it as the veilwalkers-linux-x86_64 workflow artifact (14-day retention). Gated on push to main only (PR exports produce artifacts no one can fetch).
  • README tightened from Godot 4.3+ to exact Godot 4.3, with a new Forward-compat policy section documenting the 4.3 pin and the VirtualJoystick native-class shadowing incident from c16562f that motivates it.

Why the explicit 4.3 download: the check job still uses whatever Godot the self-hosted runner ships with — that's fine for import/parse/tests because those catch shadowing at parse time. The export job downloads a known-good 4.3 explicitly so the export path stays reproducible regardless of runner drift, and matches what project.godot config/features=PackedStringArray("4.3", ...) declares.

Next push to main should produce the artifact under Actions → CI → export-linux.

Landed in commit d63172e (`ci: add headless Linux/X11 release export job + pin Godot 4.3`). **What landed:** - New `export-linux` job in `.forgejo/workflows/ci.yml` that downloads the official Godot 4.3 stable Linux binary + matching export templates from `godotengine/godot-builds`, installs the X11/GL runtime libs the produced binary links against, runs `godot --headless --export-release "Linux/X11"` headlessly, smoke-tests the resulting binary's `--version`, and uploads it as the `veilwalkers-linux-x86_64` workflow artifact (14-day retention). Gated on push to `main` only (PR exports produce artifacts no one can fetch). - README tightened from `Godot 4.3+` to exact `Godot 4.3`, with a new **Forward-compat policy** section documenting the 4.3 pin and the `VirtualJoystick` native-class shadowing incident from c16562f that motivates it. **Why the explicit 4.3 download:** the `check` job still uses whatever Godot the self-hosted runner ships with — that's fine for import/parse/tests because those catch shadowing at parse time. The export job downloads a known-good 4.3 explicitly so the export path stays reproducible regardless of runner drift, and matches what `project.godot` `config/features=PackedStringArray("4.3", ...)` declares. Next push to `main` should produce the artifact under Actions → `CI` → `export-linux`.
Mark closed this issue 2026-09-22 16:15:19 +00:00
Sign in to join this conversation.
No description provided.