-
-
Notifications
You must be signed in to change notification settings - Fork 4
Release Process
github-actions[bot] edited this page Aug 4, 2026
·
5 revisions
Firestaff uses semantic versioning: MAJOR.MINOR.PATCH (e.g., 3.0.277). The version is set in CMakeLists.txt line ~3505:
project(Firestaff VERSION 3.0.277 LANGUAGES C)-
Bump version in
CMakeLists.txt -
Update changelog in
RELEASE_NOTES.md(add a section headed# Firestaff vX.Y.Z) - Update TODO.md and DONE.md as needed
- Commit the version bump
-
Tag with
vprefix:git tag v3.0.277 -
Push with tags:
git push --tags
The GitHub Actions release workflow triggers automatically on v* tags.
Runs on every push and PR. Tests on:
- Ubuntu 24.04
- macOS 14
- Windows 2022
Checks: build, test suite, compiler warnings, asset hygiene (no game data committed).
Triggers on v* tags or manual workflow_dispatch. Jobs:
-
Preflight — validates version against
CMakeLists.txt, extracts release notes -
macOS — builds x86_64 (Intel) and arm64 (Apple Silicon) in parallel
- Produces:
.dmg,.zip - Bundles: Artpack Studio, Dungeon Studio, Savegame Editor
- Runs Phase A and Audio smoke probes
- Produces:
-
Windows — builds x86_64 via MSYS2 UCRT64
- Produces: portable
.zip, Inno Setup installer.exe - Bundles: Artpack Studio, Dungeon Studio, Savegame Editor
- Produces: portable
-
Linux — builds x86_64 and arm64 in parallel
- Produces:
.deb,.rpm - x86_64 also produces Steam Deck pacman
.pkg.tar.zstand AppImage - SDL3 built from source (pinned to
release-3.2.14)
- Produces:
-
iOS — builds arm64 on macOS 14
- Cross-compiles with iOS toolchain (deployment target iOS 14.0)
- SDL3 built as static library for iOS
- Produces:
.ipa(ad-hoc signed, AltStore Classic sideloadable)
-
Android — builds arm64 on Ubuntu 24.04
- Cross-compiles with Android NDK 27 (API 24, arm64-v8a)
- SDL3 built as shared library for Android
- Produces:
.apk(debug-signed)
-
Publish — creates/updates the GitHub Release
- Downloads all platform artifacts
- Generates release notes from
RELEASE_NOTES.md - Creates combined SHA-256 checksum manifest
- Uploads all artifacts to the GitHub Release
All platform builds pin SDL3 to release-3.2.14 via the SDL3_TAG environment variable.
| Platform | Artifacts | Architecture |
|---|---|---|
| macOS |
.dmg, .zip
|
x86_64, arm64 |
| Windows |
.zip, .exe (installer) |
x86_64 |
| Linux |
.deb, .rpm
|
x86_64, arm64 |
| Steam Deck |
.pkg.tar.zst, .AppImage
|
x86_64 |
| iOS | .ipa |
arm64 |
| Android | .apk |
arm64 |
Each platform artifact set includes a .sha256 checksum file. A combined all-assets.sha256 manifest covers every artifact in the release.
Three checks run on every commit:
- newline_eof: all committed files must end with a newline
- trailing_whitespace: no trailing whitespace allowed
- no_game_data_payloads: original game data files (DUNGEON.DAT, GRAPHICS.DAT, etc.) must never be tracked by git
The release workflow can also be triggered manually via workflow_dispatch with optional inputs:
-
version: override release version (defaults to
CMakeLists.txtversion) - draft: create as draft release
- prerelease: mark as prerelease