OpenClaw macOS रिलीज़ (Sparkle)¶
- यह ऐप अब Sparkle ऑटो‑अपडेट्स के साथ शिप होता है। 44. रिलीज़ बिल्ड्स को Developer ID से साइन किया जाना चाहिए, ज़िप किया जाना चाहिए, और साइन की हुई appcast एंट्री के साथ प्रकाशित किया जाना चाहिए।
पूर्वापेक्षाएँ¶
- Developer ID Application प्रमाणपत्र इंस्टॉल हो (उदाहरण:
Developer ID Application: <Developer Name> (<TEAMID>))। -
- Sparkle प्राइवेट की पाथ को एनवायरनमेंट में
SPARKLE_PRIVATE_KEY_FILEके रूप में सेट करें (आपकी Sparkle ed25519 प्राइवेट की का पाथ; पब्लिक की Info.plist में बेक की गई है)। 46. यदि यह गायब है, तो~/.profileजांचें।
- Sparkle प्राइवेट की पाथ को एनवायरनमेंट में
- यदि आप Gatekeeper-सुरक्षित DMG/zip वितरण चाहते हैं, तो
xcrun notarytoolके लिए Notary क्रेडेंशियल्स (कीचेन प्रोफ़ाइल या API कुंजी)। - हम
openclaw-notaryनाम की Keychain प्रोफ़ाइल का उपयोग करते हैं, जो आपके शेल प्रोफ़ाइल में App Store Connect API कुंजी पर्यावरण चरों से बनाई गई है:APP_STORE_CONNECT_API_KEY_P8,APP_STORE_CONNECT_KEY_ID,APP_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 टूल्स SwiftPM के माध्यम से
apps/macos/.build/artifacts/sparkle/Sparkle/bin/पर स्वचालित रूप से फ़ेच होते हैं (sign_update,generate_appcast, आदि)।
बिल्ड और पैकेज¶
टिप्पणियाँ:
APP_BUILDका मैपिंगCFBundleVersion/sparkle:versionसे होता है; इसे संख्यात्मक और मोनोटोनिक रखें (-betaनहीं), अन्यथा Sparkle इसे समान के रूप में तुलना करता है।-
- डिफ़ॉल्ट रूप से वर्तमान आर्किटेक्चर (
$(uname -m)) लिया जाता है। 48. रिलीज़/यूनिवर्सल बिल्ड्स के लिएBUILD_ARCHS="arm64 x86_64"(याBUILD_ARCHS=all) सेट करें।
- डिफ़ॉल्ट रूप से वर्तमान आर्किटेक्चर (
-
- रिलीज़ आर्टिफ़ैक्ट्स (zip + DMG + notarization) के लिए
scripts/package-mac-dist.shका उपयोग करें। 50. लोकल/डेव पैकेजिंग के लिएscripts/package-mac-app.shका उपयोग करें।
- रिलीज़ आर्टिफ़ैक्ट्स (zip + DMG + notarization) के लिए
# From repo root; set release IDs so Sparkle feed is enabled.
# APP_BUILD must be numeric + monotonic for Sparkle compare.
BUNDLE_ID=bot.molt.mac \
APP_VERSION=2026.2.9 \
APP_BUILD="$(git rev-list --count HEAD)" \
BUILD_CONFIG=release \
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
scripts/package-mac-app.sh
# Zip for distribution (includes resource forks for Sparkle delta support)
ditto -c -k --sequesterRsrc --keepParent dist/OpenClaw.app dist/OpenClaw-2026.2.9.zip
# Optional: also build a styled DMG for humans (drag to /Applications)
scripts/create-dmg.sh dist/OpenClaw.app dist/OpenClaw-2026.2.9.dmg
# Recommended: build + notarize/staple zip + DMG
# First, create a keychain profile once:
# xcrun notarytool store-credentials "openclaw-notary" \
# --apple-id "<apple-id>" --team-id "<team-id>" --password "<app-specific-password>"
NOTARIZE=1 NOTARYTOOL_PROFILE=openclaw-notary \
BUNDLE_ID=bot.molt.mac \
APP_VERSION=2026.2.9 \
APP_BUILD="$(git rev-list --count HEAD)" \
BUILD_CONFIG=release \
SIGN_IDENTITY="Developer ID Application: <Developer Name> (<TEAMID>)" \
scripts/package-mac-dist.sh
# Optional: ship dSYM alongside the release
ditto -c -k --keepParent apps/macos/.build/release/OpenClaw.app.dSYM dist/OpenClaw-2026.2.9.dSYM.zip
ऐपकास्ट एंट्री¶
Sparkle द्वारा फ़ॉर्मैटेड HTML नोट्स रेंडर करने के लिए रिलीज़ नोट जेनरेटर का उपयोग करें:
SPARKLE_PRIVATE_KEY_FILE=/path/to/ed25519-private-key scripts/make_appcast.sh dist/OpenClaw-2026.2.9.zip https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml
CHANGELOG.md से HTML रिलीज़ नोट्स जनरेट करता है ( scripts/changelog-to-html.sh के माध्यम से ) और उन्हें appcast एंट्री में एम्बेड करता है।
Commit the updated appcast.xml alongside the release assets (zip + dSYM) when publishing.
प्रकाशित करें और सत्यापित करें¶
- Upload
OpenClaw-2026.2.9.zip(andOpenClaw-2026.2.9.dSYM.zip) to the GitHub release for tagv2026.2.9. - सुनिश्चित करें कि रॉ ऐपकास्ट URL बेक्ड फ़ीड से मेल खाता है:
https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml। - सैनीटी जाँच:
curl -I https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml200 लौटाता है।- एसेट्स अपलोड के बाद
curl -I <enclosure url>200 लौटाता है। - पिछले सार्वजनिक बिल्ड पर, About टैब से “Check for Updates…” चलाएँ और सुनिश्चित करें कि Sparkle नया बिल्ड बिना किसी समस्या के इंस्टॉल करता है।
पूर्णता की परिभाषा: साइन किया हुआ ऐप + ऐपकास्ट प्रकाशित हों, पुराने इंस्टॉल किए गए संस्करण से अपडेट फ़्लो काम करे, और रिलीज़ एसेट्स GitHub रिलीज़ से संलग्न हों।