Use this guide when publishing a new IDX0 desktop release.
- Confirm Apple credentials for notarization are stored in a keychain profile:
xcrun notarytool store-credentials "<profile-name>" --apple-id "<apple-id>" --team-id "<team-id>" --password "<app-specific-password>"- Confirm your DMG signing identity exists:
security find-identity -v -p codesigning- Confirm GitHub CLI auth:
gh auth status- Choose version
X.Y.Z. - Make sure this repo and
README.mdare clean (no unstaged/staged local edits). - If you want idx-web auto-update, make sure the target file is clean too.
- From repo root, verify project checks:
./scripts/setup.sh
xcodegen generate
xcodebuild -project idx0.xcodeproj -scheme idx0 -destination 'platform=macOS' test
./scripts/maintainability-gate.shRun:
./scripts/manual-release.sh \
--version X.Y.Z \
--notary-profile "<profile-name>" \
--dmg-sign-identity "Developer ID Application: <name> (<team-id>)"Default behavior:
- Runs setup/project generation/tests/maintainability gate.
- Builds release app.
- Packages
zip,tar.gz, anddmg. - Signs and notarizes artifacts.
- Staples DMG.
- Runs DMG smoke test.
Artifacts are written to dist/:
IDX0-X.Y.Z.dmgIDX0-X.Y.Z-mac.zipIDX0-X.Y.Z-mac.tar.gzSHA256SUMS.txt
Draft release (default):
./scripts/publish-github-release.sh --version X.Y.ZPublished release:
./scripts/publish-github-release.sh --version X.Y.Z --publishNotes:
--versionis required.- Script publishes appcast by default via
scripts/publish-appcast.sh. - Appcast defaults are inferred from
project.ymlINFOPLIST_KEY_SUFeedURLwhen it matchesraw.githubusercontent.com/<owner>/<repo>/<branch>/appcast.xml. - If inference does not work for your feed URL, pass
--appcast-repoand--appcast-download-base-url, or use--skip-appcast. - Download URL now follows the selected
--repo(or current repo). - Default idx-web path is
/Users/gal/Documents/Github/idx-web/index.html. - Override idx-web path with
--idx-web-index <path>. - Enforce idx-web update success with
--require-idx-web-update. - If idx-web update is not required and preflight fails, the script warns and skips idx-web automation.
- Validate release assets:
gh release view vX.Y.Z --repo galz10/IDX0- Open release page and verify download links.
- Confirm
README.mddownload link points tovX.Y.Z. - If idx-web update was enabled, confirm CTA URL and
data-release-version.
VERSION="X.Y.Z"
NOTARY_PROFILE="<profile-name>"
DMG_SIGN_IDENTITY="Developer ID Application: <name> (<team-id>)"
./scripts/manual-release.sh \
--version "$VERSION" \
--notary-profile "$NOTARY_PROFILE" \
--dmg-sign-identity "$DMG_SIGN_IDENTITY"
./scripts/publish-github-release.sh \
--version "$VERSION" \
--publish