OpenClaw Mac リリース は何をしますか?
$openclaw-release-maintainer、$openclaw-release-ci、$one-password を、安定版 macOS アセット、プライベート mac 事前検証、公証、アプリケーションキャストプロモーション、または mac リリース復旧が関わる場合に使用します。
認証情報
- 正規の ASC アイテム: 保管庫
Molty、タイトルAPI Key - App Store Connect - Personal - Release。 - フィールド:
private_key_p8、key_id、issuer_id。 - 現在既知の有効なキーID:
AKVLXW849T。 - レガシーミラー: 保管庫
Private、タイトルAPI Key - App Store Connect - Personal。古い参照用に同期を維持してください。 - 古い/失効したキーの症状:
xcrun notarytool submitがHTTP status code: 401. Unauthenticatedで失敗する。 - GitHub シークレットを設定する前に、
xcrun notarytool historyで候補の ASC 認証情報を検証してください。
1Password
$one-passwordを使用: すべてのop処理は単一の永続的な tmux セッション内で行い、出力はシークレットにしません。- Molty の読み取りには、
~/.profileからのOP_SERVICE_ACCOUNT_TOKENを優先します。 MOLTY_OP_SERVICE_ACCOUNT_TOKENが有効であると仮定しないでください。以前に削除されたサービスアカウントを指していたことがあります。- サービストークンが失敗した場合は、ステータスのみのチェックを実行します: トークンの存在/長さと
op whoami。トークンの値を表示しないでください。 - デスクトップアプリの認証が必要だが Touch ID が利用できない場合は、手動の
op account add --signinパスのためにOP_BIOMETRIC_UNLOCK_ENABLED=falseを設定します。
GitHub シークレット
対象プライベートリポジトリ環境: openclaw/releases-private、env mac-release。
ローカルの公証認証検証後にのみ設定:
APP_STORE_CONNECT_API_KEY_P8APP_STORE_CONNECT_KEY_IDAPP_STORE_CONNECT_ISSUER_ID
これらを複数のソースから混在して更新しないでください。3 つの ASC フィールドすべてが同じ 1Password アイテムからのものでなければなりません。
ワークフローの形態
- 公開リリースブランチは、安定版タグ/npm がすでに公開された後でも、mac のみのパッケージ修正を含む場合があります。
- そのブランチバリエーションをビルドする際は、プライベート mac 事前検証/検証に
source_ref=release/YYYY.M.Dを使用します。 tag=vYYYY.M.Dは元の安定版リリースコミットを指すように維持します。- 実際の mac 公開は以下を再利用する必要があります:
- 同じタグ/ソース SHA に対する成功したプライベート mac 事前検証実行
- 同じタグ/ソース SHA に対する成功したプライベート mac 検証実行
- 事前検証のソース SHA がタグ SHA と異なる場合、検証も同じ
source_refを使用する必要があります。プロモーションは一致しない証明を拒否します。
公証
- OpenClaw は
scripts/notarize-mac-artifact.shを使用します。 xcrun notarytool submitは--no-s3-accelerationを使用する必要があります。高速化アップロードは、notarytool historyが成功していても誤解を招く 401 を表面化させる可能性があります。- 署名は成功するが公証がすぐに 401 で失敗する場合は、まず ASC キーの鮮度を確認してください。
- キーファイル書き込み後、公証が数分間進行中のままの場合、それは通常の Apple 待機時間です。盲目的に編集しないでください。
ディスパッチ
プライベート事前検証:
gh workflow run openclaw-macos-publish.yml --repo openclaw/releases-private --ref main \
-f tag=vYYYY.M.D \
-f source_ref=release/YYYY.M.D \
-f preflight_only=true \
-f smoke_test_only=false \
-f allow_late_calver_recovery=false \
-f public_release_branch=release/YYYY.M.D
ブランチバリエーション事前検証のためのプライベート検証:
gh workflow run openclaw-macos-validate.yml --repo openclaw/releases-private --ref main \
-f tag=vYYYY.M.D \
-f source_ref=release/YYYY.M.D
実際の公開:
gh workflow run openclaw-macos-publish.yml --repo openclaw/releases-private --ref main \
-f tag=vYYYY.M.D \
-f preflight_only=false \
-f smoke_test_only=false \
-f preflight_run_id=<成功した事前検証実行ID> \
-f validate_run_id=<成功した検証実行ID> \
-f allow_late_calver_recovery=false \
-f public_release_branch=release/YYYY.M.D
確認
gh release view vYYYY.M.D --repo openclaw/openclawに zip、dmg、dSYM zip が表示され、draft でも prerelease でもないこと。- 公開
mainのappcast.xmlがOpenClaw-YYYY.M.D.zipを指していること。 - アプリケーションキャストエントリに
sparkle:version、sparkle:shortVersionString、長さ、およびsparkle:edSignatureが含まれていること。