This repo ships desktop releases from Git tags.
Use this flow when the packaging workflows are already healthy.
- Make sure
maincontains the exact commit you want to ship. - Push
main. - Create a version tag in
vX.Y.Zformat. - Push the tag.
- Wait for the macOS, Windows, and Linux workflows to finish.
- Confirm the GitHub release contains all release assets.
git checkout main
git pull --ff-only origin main
git tag v0.1.1
git push origin main
git push origin v0.1.1
gh run list --limit 10
gh release view v0.1.1- macOS:
Scene-Ripper-<version>-arm64.dmg - Windows:
SceneRipper-Setup-<version>.exe - Linux:
Scene_Ripper-<version>-x86_64.AppImage
The release workflows upload all three assets to the GitHub release for the matching tag.
They also generate per-platform update-feed artifacts in workflow artifacts:
- macOS:
Scene-Ripper-macOS-Appcast - Windows:
SceneRipper-Windows-Appcast
The workflows also publish stable feed assets to a dedicated GitHub release tag named update-feed:
appcast-macos.xmlrelease-notes-macos.htmlappcast-windows.xmlrelease-notes-windows.html
These assets are the stable public URLs used by native in-app updates, while the DMG and installer downloads still come from the versioned vX.Y.Z releases.
Release workflows run on:
- tag push matching
v* - manual
workflow_dispatch
The Linux workflow also runs on main pushes and pull requests for continuous validation.
Check workflow status:
gh run list --limit 10
gh run watchInspect the published release:
gh release view v0.1.1Use this flow if the first tag-triggered release fails and you need to fix packaging or workflow logic.
- Fix the issue on
main. - Push the fix.
- Rerun the failed tag workflow or push a corrected replacement tag.
- Confirm the successful runs uploaded the correct assets to the existing release.
- Make sure the tag still points to the exact commit used by the successful release builds.
Example:
git checkout main
git pull --ff-only origin main
git log --oneline -5
git tag -f v0.1.1 <good_commit_sha>
git push origin -f v0.1.1Do not use Windows workflow_dispatch to publish release assets from an arbitrary branch tip. The Windows workflow now treats manual dispatch as a validation build only.
Use manual dispatch when you want a validation build without creating a new tag yet.
From GitHub Actions:
- Open
macOS Build. - Run workflow on
mainwithversion=0.1.1. - Open
Windows Build. - Run workflow on
mainwithversion=0.1.1. - Open
Linux Build. - Run workflow on
mainwithversion=0.1.1.
The macOS workflow can still publish from manual dispatch. The Windows and Linux workflows upload artifacts for inspection but only publish release assets from tagged runs.
The macOS workflow signs and notarizes only when these GitHub secrets are configured:
MACOS_CERTIFICATEMACOS_CERTIFICATE_PWDKEYCHAIN_PASSWORDCODESIGN_IDENTITYAPPLE_IDAPPLE_TEAM_IDAPPLE_APP_PASSWORD
Without those secrets, the DMG still builds, but it will not be signed or notarized.
Native updater feeds use EdDSA signatures for the DMG and Windows installer when these secrets are configured:
UPDATE_PUBLIC_ED_KEYUPDATE_PRIVATE_ED_KEY
The public key is embedded into packaged builds. The private key is only used in CI to sign release artifacts before generating appcast metadata.
Use local builds to test packaging before tagging.
macOS:
APP_VERSION=0.1.1 ./packaging/macos/build.sh --dmgWindows:
$env:APP_VERSION="0.1.1"
.\packaging\windows\build.ps1To build a local Windows installer with native updater metadata, also set:
$env:WINSPARKLE_APPCAST_URL="https://github.com/<owner>/<repo>/releases/download/update-feed/appcast-windows.xml"
$env:WINSPARKLE_PUBLIC_ED_KEY="<base64-public-key>"If you only have the private updater key available locally, build.ps1 will derive the public key from UPDATE_PRIVATE_ED_KEY before invoking PyInstaller.
Scripts:
Before tagging:
mainis pushed and green enough to ship- release notes, README, or docs updates are included if needed
- macOS signing secrets are present if you want a signed/notarized DMG
After tagging:
- macOS workflow succeeds
- Windows workflow succeeds
- Linux workflow succeeds
gh release view vX.Y.Zshows all three assetsgh release view update-feedshows refreshed appcast and release-notes assets- the tag points to the exact commit used by the successful release builds