Files
security-game/docs/RELEASING.md
T
zwitschi 191377fae2 Prepare first downloadable release: install export templates, build 0.1.0 binaries, add publish helper
- Install Godot 4.3 export templates locally and fix macOS export
  (enable rendering/textures/vram_compression/import_etc2_astc)
- Build Linux/Windows/macOS artifacts into build/ via tools/build_releases.sh;
  Linux binary passes headless smoke test
- Add tools/publish_release.sh (creates Gitea release + uploads assets with a token)
- TODO: mark build/install steps done; publishing v0.1.0 + link verification
  remain as the single action blocker (needs GITEA_TOKEN)
2026-10-31 12:57:20 +01:00

3.3 KiB

Releasing Step Line

This guide describes how to produce downloadable executables and publish them so the README "Downloads" links always point at the latest release.

1. Install export templates

Godot needs platform export templates to build standalone binaries. The first time you export, either:

  • Open the editor and use Editor → Manage Export Templates (downloads the matching templates), or
  • Install them manually from the Godot downloads page by placing the Godot_v4.3-stable_export_templates.tpz contents into ~/.local/share/godot/export_templates/4.3.stable/.

Verify with:

godot --headless --export-release "Linux" build/step-line-smoke.x86_64

2. Bump the version

project.godot sets config/version. Keep it in sync with the release tag (e.g. v0.3.0 → config/version="0.3.0", plus a git tag v0.3.0).

3. Run the checks first

A release candidate must pass:

godot --headless --path . --script res://src/test/test_runner.gd   # all tests
godot --headless --path . --quit-after 120                        # boot smoke test

4. Build

./tools/build_releases.sh

Artifacts are written to build/:

  • build/step-line-linux-<version>.x86_64
  • build/step-line-windows-<version>.exe
  • build/step-line-macos-<version>.zip

macOS builds are unsigned and will need xattr -dr com.apple.quarantine guidance or notarization for production releases.

5. Publish on the repository host (Gitea/Forgejo)

The repository lives at https://git.allucanget.biz/zwitschi/security-game.

Preferred path — use the helper script with a token:

GITEA_TOKEN=your_api_token ./tools/publish_release.sh 0.1.0

The script creates the release from project.godot's config/version, uploads all three build/ artifacts, and prints the release URL. The token needs only write:repository scope on the Gitea host.

Manual alternative:

Via the web UI

  1. Create a New Release with tag v<version>.
  2. Attach all three build/ artifacts.
  3. Write release notes (see checklist below).

Via the API

TOKEN="your_api_token"
REPO="zwitschi/security-game"
VERSION="0.3.0"
API="https://git.allucanget.biz/api/v1/repos/$REPO/releases"

# Create the release
RELEASE_JSON=$(curl -s -X POST "$API" \
  -H "Authorization: token $TOKEN" \
  -H "Content-Type: application/json" \
  -d "{\"tag_name\":\"v$VERSION\",\"name\":\"v$VERSION\",\"body\":\"Playable prototype release.\"}")

RELEASE_ID=$(echo "$RELEASE_JSON" | python3 -c "import sys,json;print(json.load(sys.stdin)['id'])")

for f in build/step-line-*"$VERSION"*; do
  curl -s -X POST "$API/$RELEASE_ID/assets" \
    -H "Authorization: token $TOKEN" \
    -F "attachment=@$f"
done

6. Update the README

The Downloads section links to the host releases page (https://git.allucanget.biz/zwitschi/security-game/releases), so no README edit is needed when the page follows the naming pattern. If artifact names change, update tools/build_releases.sh first.

Release notes checklist

  • All headless tests pass (exit code 0).
  • Game boots cleanly in a smoke test.
  • Controls documented in README.md match the build.
  • Version in project.godot matches the tag.
  • Export templates used are the official ones for the pinned engine.
  • Artifacts uploaded; README downloads page shows them.