1.5 KiB
1.5 KiB
Releasing
Release notes source
- GitHub Release notes come from
CHANGELOG.mdfor the matching version section (## X.Y.Z - YYYY-MM-DD).
Steps
- Update changelog and version
- Ensure
CHANGELOG.mdhas## 0.1.0 - YYYY-MM-DDwith final notes. - Update
version.envto0.1.0(already set for the first release). - Run
scripts/generate-version.sh(refreshesSources/remindctl/Version.swift+ embedded Info.plist).
- Ensure
- Ensure checks are green
make check
- Build, sign, and notarize (local)
- Requires
APP_STORE_CONNECT_API_KEY_P8,APP_STORE_CONNECT_KEY_ID,APP_STORE_CONNECT_ISSUER_ID. scripts/sign-and-notarize.sh(outputs/tmp/remindctl-macos.zipby default).
- Requires
- Tag, push, and publish
git tag -a v0.1.0 -m "v0.1.0"git push origin v0.1.0- Extract release notes:
version=0.1.0 notes_file=/tmp/release-notes.txt awk -v v="$version" ' $0 ~ ("^## " v "($|[[:space:]]-)") { in_section=1; next } in_section && $0 ~ "^## " { exit } in_section { print } ' CHANGELOG.md > "$notes_file" - Create GitHub release:
gh release create v0.1.0 /tmp/remindctl-macos.zip -t "v0.1.0" -F /tmp/release-notes.txt
- Homebrew tap
- Update
../homebrew-tap/Formula/remindctl.rbto point at the GitHub release asset.
- Update
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.