This playbook is the source of truth for public releases.
- Clean working tree
- Version selected (example:
2.0.5) - Signing identity available (
Developer ID Application) - Notary profile configured (
MEMENTO_NOTARYormemento-notary)
Update before tagging:
CHANGELOG.mdwith new section:## [X.Y.Z] - YYYY-MM-DDREADME.mdLatest (vX.Y.Z)sectionbuild-dmg.shdefault version if needed
./build-dmg.sh X.Y.ZExpected output asset:
dist/Memento-Native-X.Y.Z.dmg
git tag -a vX.Y.Z -m "vX.Y.Z"
git push origin vX.Y.Z
gh release create vX.Y.Z --title "vX.Y.Z" --notes-file <notes-file>gh release upload vX.Y.Z dist/Memento-Native-X.Y.Z.dmg --clobbergh api repos/owgit/memento-native/releases/tags/vX.Y.Z --jq '.assets[].name'Must include:
Memento-Native-X.Y.Z.dmg
Release Guard runs on release: published and can be run manually.
Manual run example:
gh workflow run release-guard.yml -f tag=vX.Y.Z- In-app updater on previous version should detect new release
- Dialog should show Install now (not only Open release page)
- Install path updates
Memento Capture.appin/Applications
If Release Guard fails:
- Missing changelog entry -> add
## [X.Y.Z] - YYYY-MM-DD - Missing DMG asset -> upload DMG with expected naming
- README mismatch -> update
Latest (vX.Y.Z)heading