3.1 KiB
3.1 KiB
| title | description |
|---|---|
| Releasing | Cutting an imsg release: changelog, version bump, signed/notarized build, tag, GitHub release, Homebrew tap update. |
Release notes source
- GitHub Release notes come from
CHANGELOG.mdfor the matching version section (## X.Y.Z - YYYY-MM-DD). - Keep the unreleased section at the top. During a release train it may be
versioned, for example
## 0.8.0 - Unreleased; before tagging, change it to## X.Y.Z - YYYY-MM-DD.
Steps
- Update
CHANGELOG.mdand version- Move entries from
Unreleasedinto a new## X.Y.Z - YYYY-MM-DDsection, or date the existing## X.Y.Z - Unreleasedsection. - Credit contributors (e.g.
thanks @user). - Update
version.envtoX.Y.Z. - Run
scripts/generate-version.sh(also refreshesSources/imsg/Resources/Info.plist).
- Move entries from
- Ensure CI is green on
mainmake lintmake test- GitHub Actions
linux-read-core make format(optional, if formatting changes are expected)
- Build, sign, and notarize
- Requires
APP_STORE_CONNECT_API_KEY_P8,APP_STORE_CONNECT_KEY_ID,APP_STORE_CONNECT_ISSUER_ID. scripts/sign-and-notarize.sh(outputs/tmp/imsg-macos.zipby default)- Linux release archives are built by
.github/workflows/release.ymlwithscripts/build-linux.shand uploaded asimsg-linux-x86_64.tar.gz. - Verify the zip contains required SwiftPM bundles (e.g.
PhoneNumberKit_PhoneNumberKit.bundle). - Verify entitlements/signing:
unzip -q /tmp/imsg-macos.zip -d /tmp/imsg-checkcodesign -d --entitlements :- /tmp/imsg-check/imsgspctl -a -t exec -vv /tmp/imsg-check/imsg
- Requires
- Tag, push, and publish
git tag -a vX.Y.Z -m "vX.Y.Z"git push origin vX.Y.Zgh release create vX.Y.Z /tmp/imsg-macos.zip -t "vX.Y.Z" -F /tmp/release-notes.txt- Run
.github/workflows/release.ymlfor the tag to upload the Linux archive (imsg-linux-x86_64.tar.gz). Leaveinclude_macosoff unless you intentionally want a manual macOS rebuild. gh release edit vX.Y.Z --notes-file /tmp/release-notes.txt(if needed)
- Update Homebrew tap
- Run
scripts/update-homebrew.sh vX.Y.Zto trigger the centralized formula updater. - Requires a GitHub token with workflow dispatch access to
steipete/homebrew-tap.
- Run
What happens in CI
- Release signing + notarization are done locally via
scripts/sign-and-notarize.sh. .github/workflows/release.ymlis only for manual rebuilds, not the primary release path.
Linux support schedule
- 0.8.0 is the Linux read-only preview release. It may include an experimental
Linux
x86_64archive, but docs must keep describing Linux as read-only support for existing copied Messages databases. - Linux support is staged as a read-only core pass: SwiftPM build, Linux-only tests, release archive generation, and CI coverage for reading copied Messages database fixtures.
- Do not document Linux send/watch/Contacts/IMCore support unless those features are implemented and proven on Linux. They currently depend on macOS frameworks or Messages.app automation.