diff --git a/.github/workflows/test.yml b/.github/workflows/test.yml index 6311fa0..670c367 100644 --- a/.github/workflows/test.yml +++ b/.github/workflows/test.yml @@ -218,3 +218,55 @@ jobs: echo "::error::Layout regression tests failed (exit code $LAYOUT_EXIT)" exit 1 fi + + export-validation: + name: Export validation (Linux) + runs-on: ubuntu-latest + steps: + - uses: actions/checkout@9c091bb21b7c1c1d1991bb908d89e4e9dddfe3e0 # v7 + + - uses: ./.github/actions/load-godot-toolchain + id: godot-config + + - name: Download Godot + shell: bash + run: | + set -euo pipefail + mkdir -p .tools + curl -fsSL "${{ steps.godot-config.outputs.linux_url }}" -o /tmp/godot_linux.zip + printf '%s %s\n' "${{ steps.godot-config.outputs.linux_sha256 }}" /tmp/godot_linux.zip | shasum -a 256 -c - + unzip -oq /tmp/godot_linux.zip -d .tools/ + chmod +x .tools/Godot_v${{ steps.godot-config.outputs.version }}-${{ steps.godot-config.outputs.status }}_linux.x86_64 + + - name: Install export templates + shell: bash + run: | + set -euo pipefail + mkdir -p ~/.local/share/godot/export_templates/${{ steps.godot-config.outputs.version }}.${{ steps.godot-config.outputs.status }} + curl -fsSL "${{ steps.godot-config.outputs.templates_url }}" -o /tmp/godot_export_templates.tpz + printf '%s %s\n' "${{ steps.godot-config.outputs.templates_sha256 }}" /tmp/godot_export_templates.tpz | shasum -a 256 -c - + unzip -oq /tmp/godot_export_templates.tpz -d /tmp/godot_export_templates + cp -f /tmp/godot_export_templates/templates/* ~/.local/share/godot/export_templates/${{ steps.godot-config.outputs.version }}.${{ steps.godot-config.outputs.status }}/ + + - name: Export Linux build + shell: bash + run: | + set -euo pipefail + mkdir -p build/export-validation/linux + .tools/Godot_v${{ steps.godot-config.outputs.version }}-${{ steps.godot-config.outputs.status }}_linux.x86_64 --headless --path . --export-release "Linux/X11" ./build/export-validation/linux/windowstead.x86_64 + + - name: Verify export output + shell: bash + run: | + set -euo pipefail + BINARY="build/export-validation/linux/windowstead.x86_64" + PCK="build/export-validation/linux/windowstead.pck" + if [ ! -s "$BINARY" ]; then + echo "::error::Export binary not found or empty: $BINARY" + exit 1 + fi + if [ ! -s "$PCK" ]; then + echo "::error::Export PCK not found or empty: $PCK" + exit 1 + fi + echo "Export validation passed — binary and PCK present"