OpenClaw macOS 릴리스(Sparkle)
이 앱은 이제 Sparkle auto-updates를 사용합니다. release builds는 Developer ID로 서명하고, zip으로 패키징한 뒤, 서명된 appcast entry와 함께 게시해야 합니다.사전 요구 사항
- Developer ID Application cert가 설치되어 있어야 합니다(예:
Developer ID Application: <Developer Name> (<TEAMID>)). - Sparkle private key path가
SPARKLE_PRIVATE_KEY_FILE로 설정되어 있어야 합니다. Sparkle ed25519 private key를 가리키며 public key는 Info.plist에 포함됩니다. 누락되어 있으면~/.profile을 확인하세요. - Gatekeeper-safe DMG/zip 배포를 원한다면
xcrun notarytool용 notary credentials(keychain profile 또는 API key)이 필요합니다.- 우리는
openclaw-notary라는 keychain profile을 사용하며, 이 프로필은 shell profile의 App Store Connect API key env vars로 생성합니다.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"
- 우리는
pnpmdependencies가 설치되어 있어야 합니다 (pnpm install --config.node-linker=hoisted).- Sparkle tools는 SwiftPM을 통해
apps/macos/.build/artifacts/sparkle/Sparkle/bin/아래로 자동으로 가져옵니다 (sign_update,generate_appcast등).
빌드 및 패키징
참고:APP_BUILD는CFBundleVersion/sparkle:version에 매핑됩니다. 숫자형이면서 단조 증가하게 유지하세요 (-beta금지). 그렇지 않으면 Sparkle이 같은 값으로 비교합니다.APP_BUILD를 생략하면scripts/package-mac-app.sh가APP_VERSION에서 Sparkle-safe 기본값을 파생합니다 (YYYYMMDDNN: stable은 기본적으로90, prerelease는 suffix-derived lane 사용). 그리고 그 값과 git commit count 중 더 큰 값을 사용합니다.- release engineering에서 특정 monotonic value가 필요하면 여전히
APP_BUILD를 명시적으로 override할 수 있습니다. BUILD_CONFIG=release일 때scripts/package-mac-app.sh는 기본적으로 universal (arm64 x86_64) 빌드를 사용합니다. 필요하면BUILD_ARCHS=arm64또는BUILD_ARCHS=x86_64로 override할 수 있습니다. local/dev builds (BUILD_CONFIG=debug)에서는 현재 architecture($(uname -m))를 기본값으로 사용합니다.- release artifacts(zip + DMG + notarization)에는
scripts/package-mac-dist.sh를 사용하세요. local/dev packaging에는scripts/package-mac-app.sh를 사용하세요.
Appcast 항목
Sparkle이 서식 있는 HTML 노트를 렌더링하도록 릴리스 노트 생성기를 사용하세요.CHANGELOG.md에서 HTML release notes를 생성하고 (scripts/changelog-to-html.sh 사용) 이를 appcast entry에 포함합니다.
게시할 때는 업데이트된 appcast.xml을 release assets(zip + dSYM)와 함께 커밋하세요.
게시 및 검증
OpenClaw-2026.3.11.zip(및OpenClaw-2026.3.11.dSYM.zip)을 태그v2026.3.11의 GitHub release에 업로드하세요.- 원시 appcast URL이 내장된 피드와 일치하는지 확인하세요:
https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml. - 기본 점검:
curl -I https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml가 200을 반환합니다.- assets 업로드 후
curl -I <enclosure url>가 200을 반환합니다. - 이전 공개 빌드에서 About 탭의 “Check for Updates…”를 실행하고 Sparkle이 새 빌드를 문제없이 설치하는지 확인합니다.