diff --git a/.gitea/workflows/build.yml b/.gitea/workflows/build.yml index aa63bd1..d18bdbe 100644 --- a/.gitea/workflows/build.yml +++ b/.gitea/workflows/build.yml @@ -7,10 +7,6 @@ on: pull_request: workflow_dispatch: -env: - GODOT_VERSION: "4.7.2" - GODOT_BIN: /usr/local/bin/godot - jobs: checks: name: Import + headless tests @@ -21,18 +17,8 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Restore Godot binary cache - uses: actions/cache@v4 - with: - path: /usr/local/bin/godot - key: godot-checks-${{ runner.os }}-${{ env.GODOT_VERSION }}-v2 - - name: Install Godot 4.7.2 run: | - if [ -x /usr/local/bin/godot ]; then - godot --version - exit 0 - fi curl -sL -o /tmp/godot.zip \ https://github.com/godotengine/godot/releases/download/4.7.2-stable/Godot_v4.7.2-stable_linux.x86_64.zip unzip -qo /tmp/godot.zip -d /tmp/godot-bin @@ -71,38 +57,15 @@ jobs: steps: - uses: actions/checkout@v4 - - name: Restore Godot binary cache - uses: actions/cache@v4 - with: - path: /usr/local/bin/godot - key: godot-build-${{ runner.os }}-${{ env.GODOT_VERSION }}-v2 - - - name: Restore export templates cache - uses: actions/cache@v4 - with: - path: ~/.local/share/godot/export_templates/4.7.2.stable - key: godot-templates-${{ runner.os }}-${{ env.GODOT_VERSION }}-v2 - - name: Install Godot 4.7.2 and export templates run: | - if [ ! -x /usr/local/bin/godot ]; then - curl -sL -o /tmp/godot.zip \ - https://github.com/godotengine/godot/releases/download/4.7.2-stable/Godot_v4.7.2-stable_linux.x86_64.zip - unzip -qo /tmp/godot.zip -d /tmp/godot-bin - sudo install /tmp/godot-bin/Godot_v4.7.2-stable_linux.x86_64 /usr/local/bin/godot - fi + curl -sL -o /tmp/godot.zip \ + https://github.com/godotengine/godot/releases/download/4.7.2-stable/Godot_v4.7.2-stable_linux.x86_64.zip + unzip -qo /tmp/godot.zip -d /tmp/godot-bin + sudo install /tmp/godot-bin/Godot_v4.7.2-stable_linux.x86_64 /usr/local/bin/godot godot --version TEMPLATE_DIR="$HOME/.local/share/godot/export_templates/4.7.2.stable" NEEDED="version.txt icudt_godot.dat linux_release.x86_64 windows_release_x86_64.exe macos.zip web_nothreads_release.zip web_dlink_nothreads_release.zip" - missing=0 - for file in $NEEDED; do - [ -f "$TEMPLATE_DIR/$file" ] || missing=1 - done - if [ "$missing" -eq 0 ]; then - echo "export templates restored from cache" - ls "$TEMPLATE_DIR" | head -10 - exit 0 - fi curl -sL -o /tmp/templates.tpz \ https://github.com/godotengine/godot/releases/download/4.7.2-stable/Godot_v4.7.2-stable_export_templates.tpz rm -rf /tmp/tpl && mkdir -p /tmp/tpl diff --git a/CHANGELOG.md b/CHANGELOG.md index 73cfa68..7453999 100644 --- a/CHANGELOG.md +++ b/CHANGELOG.md @@ -10,8 +10,8 @@ Semantic Versioning. - Unified the project, local tooling and CI/release environment on Godot 4.7.2, including matching export templates and project feature metadata. -- Added Gitea Actions cache for the Godot binary and export templates to reduce - repeated download time. +- Evaluated Gitea Actions cache for the Godot binary/templates; disabled it after + cache saves timed out or were rejected, pending a healthy host cache service. - Updated release and setup documentation for the 4.7.2 baseline. ## [0.9.0] — 2026-11-01 diff --git a/MEMORY.md b/MEMORY.md index 3d65807..3580fe3 100644 --- a/MEMORY.md +++ b/MEMORY.md @@ -63,7 +63,8 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o Export templates for 4.7.2 are installed under `~/.local/share/godot/export_templates/4.7.2.stable`. Godot 4.7 writes `*.gd.uid` files; they are kept out of this clone's status via - `.git/info/exclude`. CI caches the binary/templates with Gitea Actions cache. + `.git/info/exclude`. CI downloads the binary/templates directly; Gitea + Actions cache is currently unreliable (see CI cache evaluation below). - **Blender invocation (v0.6.0):** `flatpak run org.blender.Blender --background --python /run/media/system/DATA/Documents/06-games/security-game/tools/npc_pipeline.py -- build`. The flatpak cannot read `/tmp`; use absolute repo paths. `assets/models/npc/.gdignore` is @@ -576,9 +577,11 @@ Session memory for durable decisions, state, and gotchas. Keep concise, remove o - Venue cycling: `V` switches Hollywood Blvd → The Joke Shop → TV Studio and restarts the shift. - Venue door-staff dialogue: `VenueScenario.door_staff_line(context, rng)` and GameManager logging (id/ticket/wand-check, refusal, prohibited-item) — Joke Shop flavor. -- CI cache: `.gitea/workflows/build.yml` caches `/usr/local/bin/godot` and the - 4.7.2 export templates with Gitea Actions cache. `GODOT_SILENCE_ROOT_WARNING=1` - is set on jobs. +- CI cache evaluation: Gitea Actions cache was tested for the Godot binary and + trimmed 4.7.2 templates. Restores were inconsistent and saves timed out in + `CreateCacheEntry` or were rejected as reserved by another job. The cache steps + are disabled until the host cache service is healthy; keep direct downloads. + `GODOT_SILENCE_ROOT_WARNING=1` is set on jobs. Logs live in `.gitea/logs/` after each run. - Visual polish (v0.2.0): phase lighting (GameManager.PHASE_LIGHTING + ProceduralSkyMaterial), street lamps + night mode in WorldBuilder.set_night_mode, marquee Label3D, crosswalk/planters/ diff --git a/docs/RELEASING.md b/docs/RELEASING.md index 182595b..53bb4ad 100644 --- a/docs/RELEASING.md +++ b/docs/RELEASING.md @@ -63,11 +63,12 @@ setup, so do not rely on it. > artifacts. If CI publishing fails again, run > `./tools/publish_release.sh ` from a checkout with `~/.git-credentials`. -> **Godot cache:** the workflow uses Gitea Actions cache for the Godot binary and a -> trimmed 4.7.2 export-template set (Linux/Windows/macOS/Web release files only, not -> Android/iOS). The first run still downloads them; subsequent runs restore from cache. -> If the host cache service is unavailable, remove the cache steps and let the install -> steps download fresh copies. +> **Godot cache evaluation:** Gitea Actions cache was tested for the Godot binary and +> trimmed 4.7.2 templates. Restores worked intermittently, but cache saves timed out +> in `CreateCacheEntry` / were rejected as reserved by another job. The cache steps +> were removed because they added restore/save overhead without a reliable hit. +> Revisit when the host's Gitea Actions cache service is healthy; otherwise keep +> downloading the binary/templates directly. > The workflow lives in `.gitea/workflows/` (Gitea's canonical path). The old > `.github/workflows/ci.yml` was removed to avoid double runs on hosts that scan diff --git a/docs/architecture.md b/docs/architecture.md index c3b21b7..8fc5622 100644 --- a/docs/architecture.md +++ b/docs/architecture.md @@ -188,7 +188,7 @@ Future options include external analytics, cloud saves, or replay sharing, but t A continuous-integration pipeline keeps the headless test suite green on every change and publishes tagged releases. -- **Workflow:** `.gitea/workflows/build.yml` runs on pushes, pull requests, tags, and manual dispatches. The `checks` job restores/caches Godot 4.7.2, imports the project, and runs `res://src/test/test_runner.gd`; it fails on a non-zero exit code or any `SCRIPT ERROR` in the output. +- **Workflow:** `.gitea/workflows/build.yml` runs on pushes, pull requests, tags, and manual dispatches. The `checks` job installs Godot 4.7.2, imports the project, and runs `res://src/test/test_runner.gd`; it fails on a non-zero exit code or any `SCRIPT ERROR` in the output. - **Build job:** runs for tags and manual dispatches. It installs export templates, exports Linux/Windows/macOS and the non-threaded Web build, packages the NSIS installer, Linux AppImage and optional Desktop HQ zip, verifies the installer contents, and uploads the artifacts. - **Publish job:** tag builds call `tools/publish_release.sh` to create the Gitea release and upload the standard artifacts plus the optional Desktop HQ zip. The script uses `GITEA_TOKEN` when configured and otherwise reuses the runner's checkout extraheader credentials. - **Hosting:** the repository lives on Gitea (`https://git.allucanget.biz/zwitschi/security-game`). Export templates must match the pinned Godot version; macOS builds are unsigned and need quarantine guidance or notarization for wider distribution.