macOS Release
OpenClaw macOS release checklist (Sparkle feed, packaging, signing)
このアプリは現在 Sparkle 自動更新を提供しています。リリースビルドは Developer ID で署名され、圧縮され、署名された appcast エントリで公開する必要があります。
Prereqs
- Developer ID Application cert installed (example: ''Developer ID Application: <Developer Name> (<TEAMID>)'').
- Sparkle 秘密鍵のパスが ''SPARKLE_PRIVATE_KEY_FILE'' として環境変数に設定されています(Sparkle ed25519 秘密鍵へのパス;公開鍵は Info.plist に組み込まれています)。欠落している場合は、''~/.profile'' を確認してください。
- Gatekeeper セーフな DMG/zip 配布を行う場合、''xcrun notarytool'' の認証情報(キーチェーンプロファイルまたは API キー)が必要です。
- シェルプロファイルの App Store Connect API キー環境変数から作成された ''openclaw-notary'' という名前のキーチェーンプロファイルを使用します:
- ''APP_STORE_CONNECT_API_KEY_P8''、''APP_STORE_CONNECT_KEY_ID''、''APP_STORE_CONNECT_ISSUER_ID''
- ''echo "$APP_STORE_CONNECT_API_KEY_P8" | sed 's/\\n/\n/g' > /tmp/openclaw-notary.p8''
- ''xcrun notarytool store-credentials "openclaw-notary" --key /tmp/openclaw-notary.p8 --key-id "$APP_STORE_CONNECT_KEY_ID" --issuer "$APP_STORE_CONNECT_ISSUER_ID"''
- ''pnpm'' 依存関係がインストールされています(''pnpm install --config.node-linker=hoisted'')。
- Sparkle ツールは SwiftPM を介して ''apps/macos/.build/artifacts/sparkle/Sparkle/bin/'' に自動的に取得されます(''sign_update''、''generate_appcast'' など)。
ビルドとパッケージ化
Notes:
- ''APP_BUILD'' は ''CFBundleVersion''/''sparkle:version'' にマップされます。数値と単調(''-beta'' なし)に保ってください。そうしないと、Sparkle はそれを等しいと比較します。
- デフォルトは現在のアーキテクチャ(''$(uname -m)'')です。リリース/ユニバーサルビルドの場合、''BUILD_ARCHS="arm64 x86_64"'' を設定します(または ''BUILD_ARCHS=all'')。
- リリースアーティファクト(zip + DMG + 認証)には ''scripts/package-mac-dist.sh'' を使用します。ローカル/開発パッケージ化には ''scripts/package-mac-app.sh'' を使用します。
BUNDLE_ID=bot.molt.mac \
APP_VERSION=2026.1.27-beta.1 \
APP_BUILD="$(git rev-list --count HEAD)" \
BUILD_CONFIG=release \
SIGN_IDENTITY="Developer ID Application: '<Developer Name>' ('<TEAMID>')" \
scripts/package-mac-app.sh
ditto -c -k --sequesterRsrc --keepParent dist/OpenClaw.app dist/OpenClaw-2026.1.27-beta.1.zip
scripts/create-dmg.sh dist/OpenClaw.app dist/OpenClaw-2026.1.27-beta.1.dmg
NOTARIZE=1 NOTARYTOOL_PROFILE=openclaw-notary \
BUNDLE_ID=bot.molt.mac \
APP_VERSION=2026.1.27-beta.1 \
APP_BUILD="$(git rev-list --count HEAD)" \
BUILD_CONFIG=release \
SIGN_IDENTITY="Developer ID Application: '<Developer Name>' ('<TEAMID>')" \
scripts/package-mac-dist.sh
ditto -c -k --keepParent apps/macos/.build/release/OpenClaw.app.dSYM dist/OpenClaw-2026.1.27-beta.1.dSYM.zipAppcast エントリ
リリースノートジェネレーターを使用して、Sparkle がフォーマットされた HTML ノートをレンダリングするようにします:
SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-private-key scripts/make_appcast.sh dist/OpenClaw-2026.1.27-beta.1.zip https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
''CHANGELOG.md'' から HTML リリースノートを生成し(''''scripts/changelog-to-html.sh'''' を介して)、appcast エントリに埋め込みます。
公開時に更新された ''appcast.xml'' をリリースアーティファクト(zip + dSYM)と一緒にコミットします。
公開と検証
- ''OpenClaw-2026.1.27-beta.1.zip''(および ''OpenClaw-2026.1.27-beta.1.dSYM.zip'')をタグ ''v2026.1.27-beta.1'' の GitHub リリースにアップロードします。
- 生の appcast URL が組み込まれたフィードと一致することを確認します:''https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml''。
- 正常性チェック:
- ''curl -I https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml'' が 200 を返します。
- ''curl -I <enclosure url>'' returns 200 after assets upload.
- 以前の公開ビルドで、[バージョン情報] タブから [更新を確認...] を実行し、Sparkle が新しいビルドをクリーンにインストールすることを確認します。
完了の定義:署名されたアプリ + appcast が公開され、古いインストール済みバージョンから更新フローが機能し、リリースアーティファクトが GitHub リリースに添付されています。