7b6a141767
Move the 40-odd root-level scripts and scenes into a tree that groups by role,
per the approved roadmap (WS2/WS3): actors/{player,matador,bear}, systems/{combat,
fx,input,debug,render,crowd,config}, ui/, props/ (was tscn_s/). Rename the shell
scene.tscn -> levels/game_shell.tscn and every PascalCase scene to snake_case
(Player.tscn -> player.tscn, MainMenu.tscn -> main_menu.tscn, etc.) so the
case-insensitive web/macOS filesystems can't alias two files together.
Done as a scripted move: each file travels with its .uid; every quoted res:// path
across scenes, scripts, .tres, and project.godot's 9 autoloads is rewritten; the
.godot uid/class cache is rebuilt from scratch. Scenes still resolve by uid, so the
rewrite is belt-and-suspenders. Lint globs (run_tests.sh + both CI workflows) now
walk the new dirs; an orphan animation_tree.gd.uid and 7 pre-existing trailing-
whitespace lints (barrel/torch, never covered by the old root-only glob) are cleaned.
Full suite green on both sides. Asset consolidation (Assets/Animations/fonts ->
art/) is deferred — moving imported .glb/.png/.ttf is safer done in the editor.
Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_017KoYBYQgRyY1zDHXMsXY3V
70 lines
2.8 KiB
YAML
70 lines
2.8 KiB
YAML
name: CI
|
|
|
|
# Gitea Actions is GitHub-Actions-compatible: drop this in .gitea/workflows/, enable Actions on the
|
|
# repo ([actions] ENABLED=true in app.ini, Gitea >= 1.19) and register an act_runner — it then runs
|
|
# on every push / PR just like the GitHub workflow. This mirrors .github/workflows/ci.yml but installs
|
|
# Godot and gdtoolkit with plain shell steps instead of the chickensoft setup-godot action, because a
|
|
# self-hosted runner usually can't reach the GitHub action registry (unless DEFAULT_ACTIONS_URL is set
|
|
# to proxy github.com). Only actions/checkout and actions/upload-artifact remain as external actions —
|
|
# both ship with Gitea's default proxy; if yours is offline, mirror them into your instance.
|
|
|
|
on:
|
|
push:
|
|
pull_request:
|
|
|
|
env:
|
|
# The Godot build the team runs (godot --version -> 4.7.beta.custom_build.417cd33bf). Pin this to a
|
|
# PUBLISHED build from https://github.com/godotengine/godot-builds/releases. If you run a custom
|
|
# build with no public binary, host the linux headless zip where the runner can reach it and set
|
|
# GODOT_URL to that (it overrides the constructed URL below).
|
|
GODOT_VERSION: "4.7-beta1"
|
|
GODOT_URL: ""
|
|
|
|
jobs:
|
|
test:
|
|
name: Lint & headless tests
|
|
runs-on: ubuntu-latest # must match a label your act_runner registered with
|
|
steps:
|
|
- name: Checkout
|
|
uses: actions/checkout@v4
|
|
|
|
- name: Install Godot ${{ env.GODOT_VERSION }}
|
|
run: |
|
|
set -eux
|
|
url="${GODOT_URL:-https://github.com/godotengine/godot-builds/releases/download/${GODOT_VERSION}/Godot_v${GODOT_VERSION}_linux.x86_64.zip}"
|
|
curl -fL "$url" -o /tmp/godot.zip
|
|
unzip -o /tmp/godot.zip -d /tmp/godot
|
|
install -m 755 /tmp/godot/Godot_v*_linux.x86_64 /usr/local/bin/godot
|
|
godot --version
|
|
|
|
- name: Install gdlint (gdtoolkit)
|
|
# A venv sidesteps PEP-668 "externally managed" pip on recent runner images; putting its bin on
|
|
# GITHUB_PATH lets run_tests.sh call bare `gdlint` in later steps.
|
|
run: |
|
|
set -eux
|
|
python3 -m venv /tmp/venv
|
|
/tmp/venv/bin/pip install "gdtoolkit==4.*"
|
|
echo "/tmp/venv/bin" >> "$GITHUB_PATH"
|
|
|
|
# First run imports assets and builds the .godot cache (gitignored) so headless tests can load
|
|
# the .glb/.png resources they instance. Import can exit non-zero on warnings.
|
|
- name: Import resources
|
|
run: godot --headless --import
|
|
continue-on-error: true
|
|
|
|
- name: gdlint
|
|
run: gdlint actors systems ui props levels tests
|
|
|
|
- name: Headless tests
|
|
env:
|
|
GODOT: godot
|
|
run: bash run_tests.sh --no-gameplay
|
|
|
|
- name: Upload test output on failure
|
|
if: failure()
|
|
uses: actions/upload-artifact@v4
|
|
with:
|
|
name: test-output
|
|
path: tests/output/
|
|
if-no-files-found: ignore
|