前提条件
- Developer ID Application 証明書がインストールされていること(例:
Developer ID Application: <Developer Name> (<TEAMID>))。 - Sparkle の秘密鍵パスを
SPARKLE_PRIVATE_KEY_FILEとして環境変数に設定していること(Sparkle の ed25519 秘密鍵へのパス。公開鍵はInfo.plistに組み込まれます)。見つからない場合は~/.profileを確認してください。 - Gatekeeper で安全な DMG / zip 配布を行う場合は、
xcrun notarytool用の認証情報(キーチェーン プロファイルまたは API キー)が必要です。- 使用しているキーチェーン プロファイル名は
openclaw-notaryです。これはシェル プロファイル内の App Store Connect API キー環境変数から作成します。APP_STORE_CONNECT_API_KEY_P8APP_STORE_CONNECT_KEY_IDAPP_STORE_CONNECT_ISSUER_IDecho "$APP_STORE_CONNECT_API_KEY_P8" | sed 's/\\n/\n/g' > /tmp/openclaw-notary.p8xcrun 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 ツールは
apps/macos/.build/artifacts/sparkle/Sparkle/bin/に SwiftPM 経由で自動取得されます(sign_update、generate_appcastなど)。
ビルドとパッケージ化
注意:APP_BUILDはCFBundleVersion/sparkle:versionに対応します。Sparkle の比較が正しく動くよう、数値のみで単調増加にしてください(-betaは不可)。APP_BUILDを省略した場合、scripts/package-mac-app.shはAPP_VERSIONから Sparkle 安全な既定値を導出します(YYYYMMDDNN形式。安定版は90、プレリリースはサフィックス由来のレーンを使用)。その値と git のコミット数を比較し、大きい方を採用します。- リリース エンジニアリング上、特定の単調増加値が必要であれば、
APP_BUILDを明示的に上書きできます。 BUILD_CONFIG=releaseの場合、scripts/package-mac-app.shは既定でユニバーサル ビルド(arm64 x86_64)になります。必要であればBUILD_ARCHS=arm64またはBUILD_ARCHS=x86_64で上書きできます。ローカル / 開発ビルド(BUILD_CONFIG=debug)では、既定で現在のアーキテクチャ($(uname -m))を使用します。- リリース用アーティファクト(zip + DMG + 公証)には
scripts/package-mac-dist.shを使います。ローカル / 開発用のパッケージングにはscripts/package-mac-app.shを使ってください。
appcast エントリ
Sparkle が整形済み HTML のリリース ノートを表示できるよう、リリース ノート生成スクリプトを使用します。CHANGELOG.md から HTML リリース ノートを生成し(scripts/changelog-to-html.sh 経由)、appcast エントリへ埋め込みます。公開時には、更新済みの appcast.xml をリリース アセット(zip + dSYM)と一緒にコミットしてください。
公開と検証
OpenClaw-2026.3.9.zip(およびOpenClaw-2026.3.9.dSYM.zip)を、タグv2026.3.9の GitHub リリースへアップロードします。- 生の appcast URL がアプリに組み込まれたフィード 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>が 200 を返すこと - 以前の公開ビルドで About タブから
Check for Updates…を実行し、Sparkle が新しいビルドを正常にインストールできること