This repo now automates GitHub Release page creation only.
App build, DMG packaging, and the readme/PDF inside the DMG remain local (manual).
- Validate runtime architecture coverage before archive:
scripts/validate_release_architectures.sh- Run explicit dual-architecture compile checks (arm64 + x86_64):
scripts/verify_dual_arch_build.shThis step now enforces architecture isolation automatically via:
scripts/enforce_runtime_arch_isolation.sh-
Build and verify the new version in Xcode.
-
(Recommended) Validate the built
.appagain before DMG packaging:
scripts/validate_release_architectures.sh --bundle "/path/to/CatchBan.app"- Package your final
.dmglocally (including your readme/PDF).
Create versioned release files before tagging:
.github/releases/<tag>.env.github/releases/<tag>.md
Example for v2.0.0-beta.1:
cat .github/releases/v2.0.0-beta.1.env
cat .github/releases/v2.0.0-beta.1.mdThe .env file controls release metadata:
RELEASE_NAME="CatchBan V2.0 Beta"
PRERELEASE="false"
MAKE_LATEST="true"Supported keys:
RELEASE_NAME: Human-facing release title.PRERELEASE:trueorfalse.MAKE_LATEST:true,false, orlegacy.
If .github/releases/<tag>.md exists, the workflow uses that bilingual Markdown as the release body.
If it does not exist, the workflow falls back to GitHub-generated release notes.
git tag -a v2.0.0-beta.1 -m "CatchBan V2.0 Beta"
git push origin v2.0.0-beta.1What automation does:
- Creates or updates
releases/tag/v2.0.0-beta.1 - Uses
.github/releases/v2.0.0-beta.1.envfor release title and publish flags - Uses
.github/releases/v2.0.0-beta.1.mdfor the final release body - Falls back to GitHub-generated notes if no versioned Markdown body exists
- Does not upload any assets
Actions -> Create Release Page -> Run workflow -> input tag (for example v2.0.0-beta.1)
After the release page exists, upload your local .dmg by either:
- GitHub web UI (Release page ->
Attach binaries) - CLI:
gh release upload v2.0.0-beta.1 /path/to/CatchBan.dmg --clobberOptional checksum upload:
shasum -a 256 /path/to/CatchBan.dmg > /path/to/CatchBan.dmg.sha256
gh release upload v2.0.0-beta.1 /path/to/CatchBan.dmg.sha256 --clobber- The release workflow prefers versioned
.github/releases/<tag>.mdfiles when present. - If no versioned Markdown body exists, the workflow falls back to GitHub-generated release notes.
- This keeps release pages brand-safe and bilingual while preserving a fallback path for technical releases.