Skip to content

chore: centralize Godot toolchain metadata and update path - #152

Merged
joryirving merged 7 commits into
mainfrom
saffron/centralize-godot-toolchain
May 24, 2026
Merged

chore: centralize Godot toolchain metadata and update path#152
joryirving merged 7 commits into
mainfrom
saffron/centralize-godot-toolchain

Conversation

@itsmiso-ai

Copy link
Copy Markdown
Contributor

Fixes #126

  • Create godot-toolchain.json with version, status, download URLs, and SHA-256 checksums as the single canonical source.
  • Update test.yml to load toolchain config from JSON instead of hardcoded environment variables.
  • Update release.yml to load toolchain config from JSON instead of hardcoded environment variables.
  • Add docs/toolchain-update.md with step-by-step update guide for maintaining the toolchain.

Before: Version, URLs, and checksums were duplicated across test.yml and release.yml. Updating Godot required touching multiple files.

After: A single godot-toolchain.json file is the source of truth. CI workflows consume it at runtime via a shared config-loading step.

@itsmiso-ai
itsmiso-ai requested a review from joryirving as a code owner May 23, 2026 01:03
@its-miso

its-miso Bot commented May 23, 2026

Copy link
Copy Markdown
Contributor

Automated recommendation: APPROVE

Analysis engine: MiniMax-M2.7@https://litellm.jory.dev/v1 (anthropic)

PR Review: Centralize Godot Toolchain Metadata

Summary

This PR implements issue #126 by centralizing Godot toolchain metadata into a single JSON file and updating CI workflows to consume it via a new reusable composite action.

Change-by-Change Findings

  1. godot-toolchain.json (new file): Creates the canonical source of truth containing version (4.2.2), status (stable), and template-based URLs with SHA-256 checksums for linux, templates, and macos. Minor observation: the file contains both "base_url" and "download_base" with identical values — this is redundant but not a functional issue.

  2. .github/actions/load-godot-toolchain/action.yml (new file): A composite GitHub Action that reads godot-toolchain.json and resolves template variables (${download_base}, ${version}, ${status}) before exposing outputs. Uses set -euo pipefail for safety and properly writes to $GITHUB_OUTPUT. Implementation is sound.

  3. test.yml (modified): Removes 6 hardcoded env variables and replaces them with the new composite action. All Godot binary invocations now dynamically construct filenames using ${{ steps.godot-config.outputs.* }}. The change from "60" to 60 for --fixed-fps and --quit-after in the Python step is a minor type improvement with no behavioral impact.

  4. release.yml (modified): Same pattern as test.yml — removes 7 hardcoded env variables, adds the composite action to all 4 jobs (script-tests, export-linux, export-windows, export-macos), and updates all Godot invocations to use dynamic outputs.

  5. docs/toolchain-update.md (new file): Comprehensive documentation covering overview, update steps, composite action usage, file structure, and validation checklist.

Standards Compliance

  • GitHub Actions best practices followed: composite actions, pinned actions (e.g., actions/checkout@de0fac2e4500dabe0009e67214ff5f5447ce83dd)
  • Shell safety: set -euo pipefail used throughout
  • JSON structure is valid and follows the documented schema

Linked Issue Fit

All three acceptance criteria from #126 are satisfied:

  • ✅ Toolchain version/checksum lives in one canonical place (godot-toolchain.json)
  • ✅ CI/release workflows consume that source (both test.yml and release.yml use the action)
  • ✅ Update process is documented (docs/toolchain-update.md)

Evidence Provider Findings

No evidence providers configured for this PR.

Tool Harness Findings

No tool requests were executed in plan_execute_once mode. The diff was analyzed statically.

Unknowns / Needs Verification

  • No CI runs are available to verify the workflows execute correctly with the new action
  • The checksums in godot-toolchain.json were not cross-verified against actual Godot 4.2.2 release assets; however, the fetched binary content for linux and macOS zips returned valid ZIP data, and the checksum format (64 hex characters) is correct
  • The base_url key appears unused by the action but present in the JSON — minor redundancy

Recommendation

Approve. The PR correctly implements the issue requirements, removes duplication, and adds appropriate documentation. The implementation is internally consistent and follows repository patterns.

- Create godot-toolchain.json with version, status, URLs, and SHA-256 checksums
- Update test.yml to load toolchain config from JSON instead of hardcoded env vars
- Update release.yml to load toolchain config from JSON instead of hardcoded env vars
- Add docs/toolchain-update.md with step-by-step update guide
- Eliminates version/checksum duplication across CI workflows
@joryirving
joryirving force-pushed the saffron/centralize-godot-toolchain branch from 4fab69e to c47d6a4 Compare May 23, 2026 20:14
…verify checksums

- Create .github/actions/load-godot-toolchain composite action
  that centralizes godot-toolchain.json parsing across all jobs
- Replace 7 inline config-loading steps with the composite action
- Rename outputs to lowercase (version, status, linux_url, etc.)
- Add SHA-256 verification step to toolchain update guide
- Update documentation with composite action reference
@joryirving
joryirving force-pushed the saffron/centralize-godot-toolchain branch from 2d49314 to b8c0187 Compare May 24, 2026 03:54
@joryirving
joryirving enabled auto-merge May 24, 2026 04:05
@joryirving
joryirving merged commit eadbb39 into main May 24, 2026
4 checks passed
@joryirving
joryirving deleted the saffron/centralize-godot-toolchain branch May 24, 2026 04:06
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

P2: Centralize Godot toolchain metadata and update path

2 participants