Three follow-ups from run #12:
- export-desktop: comment out the macOS matrix entry. The preset
is still missing in export_presets.cfg; the entry can be
uncommented once the macOS preset is added in the Godot editor.
- export Windows: `application/icon` referenced
res://releases/windows/project.ico, which has never been in the
repo (releases/windows/ holds only .keep). Godot rejected the
export with "Invalid icon path". Cleared the field in both
WindowsDebug and WindowsTesting presets — Godot falls back to
its built-in icon.
- export-android: Godot validation requires all three of
keystore/debug{,_user,_password} to be set together (or all
empty). The keystore step only patched keystore/debug and left
the other two empty, triggering
"Either Debug Keystore, Debug User AND Debug Password must be
configured OR none of them". Patch all three now.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Three follow-up fixes from the first non-container run (#10):
- lint: Ubuntu 24.04 / Python 3.12 enforces PEP 668, so
`pip install --user` exits with externally-managed-environment.
Install gdtoolkit into a throwaway venv at /tmp/gdlint-venv
instead.
- exports: drop the .godot/ artifact cache shared between
`validate` and the export jobs. Gitea's artifact service returns
404 on actions/download-artifact@v3 (v3 protocol incomplete on
this server). Each export job now runs its own
`godot --headless --import` before exporting — costs ~30s but
avoids the failing cross-job artifact dependency.
- export-android: `yes | sdkmanager --licenses` returned 141
(SIGPIPE) under `set -o pipefail` because sdkmanager closes
stdin after accepting all licenses while `yes` keeps writing.
Feed a finite `printf 'y\n%.0s' {1..50}` instead.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
The first Gitea Actions runs failed at actions/checkout@v4 because
barichello/godot-ci:4.6 ships without Node.js, which the JS-based
checkout action requires. Rather than chase a Godot CI image that
bundles Node, drop the container: blocks entirely: the default
catthehacker/ubuntu:act-latest runner image already has Node /
Python / git / JDK, and Godot is installed per-job from the
official GitHub release.
Pulled the install logic into a local composite action at
.gitea/actions/setup-godot/ to avoid duplicating 15 lines of wget +
unzip across the three Godot-using jobs. Inputs:
- version (default 4.6)
- templates (default false — export jobs flip to true)
Other tweaks:
- export-android now puts $ANDROID_HOME under $GITHUB_WORKSPACE so
no sudo is needed; editor_settings-4.tres interpolates that path.
- export-android writes the keystore under /tmp instead of /root
(catthehacker runners don't run as root).
README updated: jobs table reflects the new "Tooling installed by the
job" column, prerequisites no longer mention the Docker image, and
known-issue #1 is closed out with the dated fix.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Adds a "Known issues from first runs" section to the workflow
README capturing what broke on 2026-05-17:
- Container jobs (validate, export-*) fail at actions/checkout@v4
with `node: not found` because barichello/godot-ci:4.6 has no Node.
Workflow fix pending.
- The earlier `actions/checkout` URL-prefix problem (Gitea behind
YunoHost at /gitea/) is now resolved server-side by moving Gitea
to the root; the note records this for future reference.
- Default-branch mismatch (Gitea = main, CLAUDE.md says dev).
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Temporary addition so the workflow can run before the branch is
merged into dev. Remove this branch from the push: list once dev
has the workflow.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Lints scripts/, db/, scenes/ via gdtoolkit==4.* on ubuntu-latest
(Python, no Godot needed), in parallel with the validate job.
addons/ (third-party LOD plugin) and developers/ (sandbox) are
left out. Non-blocking for now: the export jobs still only need
validate, so a lint regression won't break builds while the
Godot-3 leftover code is being cleaned up.
gdlintrc bumps max-line-length from 100 to 140 because Godot
$-style node paths and typed signatures routinely push past 100
without that being a real readability problem.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>
Drone server is gone; CI now lives in .gitea/workflows/build.yml.
Three jobs: GDScript validation (godot --headless --import + error
grep), desktop matrix (Windows / Linux / macOS), and Android (JDK 17
+ SDK installed at runtime, keystore from ANDROID_KEYSTORE_BASE64
secret or generated). Build only — Butler / itch.io deploy not wired.
Notes in .gitea/workflows/README.md cover the Godot-4 pre-reqs
(macOS preset to add, Linux/X11Debug likely renamed on first 4.x
save, Docker image tag) and how to plug Butler back in later.
Co-Authored-By: Claude Opus 4.7 (1M context) <noreply@anthropic.com>