OpenClawSkills
GitHub
Plataformas • 5 min de lectura

Versión macOS

Lista de verificación de versión macOS de OpenClaw (feed Sparkle, empaquetado, firma)

Esta app ahora envía actualizaciones automáticas Sparkle. Las compilaciones de versión deben estar firmadas con Developer ID, comprimidas en zip, y publicadas con una entrada appcast firmada.

Tutorial.step

Requisitos previos

- Certificado Developer ID Application instalado (ejemplo: ''Developer ID Application: <Nombre del Desarrollador> (<TEAMID>)'').

- Ruta de clave privada Sparkle establecida en el entorno como ''SPARKLE_PRIVATE_KEY_FILE'' (ruta a tu clave privada ed25519 de Sparkle; clave pública incluida en Info.plist). Si falta, revisa ''~/.profile''.

- Credenciales de notaría (perfil keychain o API key) para ''xcrun notarytool'' si quieres distribución DMG/zip compatible con Gatekeeper.

- Usamos un perfil Keychain llamado ''openclaw-notary'', creado desde variables de entorno de API key de App Store Connect en tu perfil de shell:

- ''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"''

- Dependencias ''pnpm'' instaladas (''pnpm install --config.node-linker=hoisted'').

- Las herramientas Sparkle se obtienen automáticamente vía SwiftPM en ''apps/macos/.build/artifacts/sparkle/Sparkle/bin/'' (''sign_update'', ''generate_appcast'', etc.).

Tutorial.step

Compilar y empaquetar

Notas:

- ''APP_BUILD'' mapea a ''CFBundleVersion''/''sparkle:version''; mantenlo numérico + monótono (sin ''-beta''), o Sparkle lo comparará como igual.

- Por defecto usa la arquitectura actual (''$(uname -m)''). Para compilaciones release/universal, establece ''BUILD_ARCHS="arm64 x86_64"'' (o ''BUILD_ARCHS=all'').

- Usa ''scripts/package-mac-dist.sh'' para artefactos de versión (zip + DMG + notarización). Usa ''scripts/package-mac-app.sh'' para empaquetado local/dev.

Bash
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: '<Nombre del Desarrollador>' ('<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: '<Nombre del Desarrollador>' ('<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.zip
Tutorial.step

Entrada Appcast

Usa el generador de notas de versión para que Sparkle renderice notas HTML formateadas:

Bash
SPARKLE_PRIVATE_KEY_FILE=/ruta/a/ed25519-private-key scripts/make_appcast.sh dist/OpenClaw-2026.1.27-beta.1.zip https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml

Genera notas de versión HTML desde ''CHANGELOG.md'' (vía ''''scripts/changelog-to-html.sh'''') y las embebe en la entrada appcast.

Confirma el ''appcast.xml'' actualizado junto con los artefactos de versión (zip + dSYM) al publicar.

Tutorial.step

Publicar y verificar

- Sube ''OpenClaw-2026.1.27-beta.1.zip'' (y ''OpenClaw-2026.1.27-beta.1.dSYM.zip'') a la versión de GitHub para el tag ''v2026.1.27-beta.1''.

- Asegúrate que la URL raw del appcast coincida con el feed incluido: ''https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml''.

- Verificaciones de sanidad:

- ''curl -I https://raw.githubusercontent.com/openclaw/openclaw/main/appcast.xml'' retorna 200.

- ''curl -I <enclosure url>'' retorna 200 después de subir los artefactos.

- En una versión pública anterior, ejecuta "Buscar Actualizaciones…" desde la pestaña Acerca de y verifica que Sparkle instala limpiamente la nueva versión.

Definición de terminado: app firmada + appcast publicados, flujo de actualización funciona desde una versión instalada más antigua, y artefactos de versión adjuntos a la versión de GitHub.