release-openclaw-mac

Exécuter ou récupérer la signature, la notarisation, le fil d'actualité (appcast) et la promotion des assets macOS pour la sortie stable d'OpenClaw.

Qu'est-ce que release-openclaw-mac ?

Cette compétence est conçue pour les responsables de publication d'OpenClaw qui gèrent le pipeline de publication macOS. Elle automatise la signature, la notarisation, la promotion des assets et la mise à jour du fil d'actualité (appcast) pour les versions stables. Elle s'appuie sur des outils tels que `xcrun notarytool`, `gh` (GitHub CLI), et `op` (1Password CLI) pour interagir avec le Mac App Store Connect (ASC) et GitHub. La compétence gère la validation des identifiants, la récupération après des échecs de notarisation (y compris les faux positifs 401), et la reprise des exécutions grâce à des points de contrôle. Elle fonctionne en parallèle avec la publication npm sans la bloquer, et exige que l'opérateur suive les politiques d'environnement configurées par le propriétaire, sans jamais court-circuiter les règles de validation ou d'approbation. Les secrets sont gérés via 1Password et GitHub Secrets, avec des validations préalables pour éviter les erreurs de configuration.

Compatible avec~Claude Code~Codex CLI~Cursor
npx skills add https://github.com/clawdbot/clawdbot/tree/main/.agents/skills/release-openclaw-mac

Installed? Explore more Développement et programmation skills: steipete/bluebubbles, steipete/eightctl, steipete/blucli · View all 6 →

Demander à votre IA préférée

Ouvre une nouvelle conversation avec cette compétence d'agent déjà préchargée.

Documentation

Publication macOS OpenClaw

Utilisez avec $release-openclaw-maintainer, $release-openclaw-ci, $one-password, et $release-private si ce dernier existe lorsqu'il s'agit d'assets macOS stables, de prévol release-ops macOS, de notarisation, de promotion du fil d'actualité (appcast), ou de récupération de publication macOS.

Ceci est une compétence standard pour les versions stables. Ne l'invoquez pas pour une version étendue-stable ; la GitHub Release de ce canal transporte des preuves de validation partagées mais n'hérite pas des assets macOS ni de la promotion du fil d'actualité.

Autorisation de publication

Une demande explicite de version stable ou complète inclut la publication macOS, sauf si l'opérateur en limite la portée. Poursuivez la validation, la signature, la notarisation, la promotion et la vérification sans demander de consentement séparé pour macOS. Conservez l'identité exacte de la version et toutes les vérifications des artefacts. La publication macOS s'exécute en parallèle avec npm et ne la bloque jamais ; un échec macOS ne retient pas la version npm/ClawHub, la finalisation de la GitHub Release, ni la clôture principale. Corrigez-le en parallèle.

Suivez la politique d'environnement configurée par le propriétaire actuel. N'inventez pas d'exigence supplémentaire de relecture et ne recréez pas une exigence obsolète. Si GitHub impose toujours une approbation, signalez la règle réelle et résolvez-la via son propriétaire ; les changements de politique nécessitent une directive explicite du propriétaire de l'organisation et une appartenance admin active vérifiée. N'usurpez jamais l'identité d'un relecteur, ne fabriquez pas d'approbation, et n'utilisez pas un autre chemin de signature pour contourner une règle imposée.

Identifiants

  • Résolvez les références d'éléments ASC appartenant à Peter, les identifiants de clés, les identifiants d'émetteur et la provenance des jetons de service à partir de $release-private.
  • Champs : private_key_p8, key_id, issuer_id.
  • Symptôme d'une clé périmée/révoquée : xcrun notarytool submit échoue avec HTTP status code: 401. Unauthenticated.
  • Validez les identifiants ASC candidats avec xcrun notarytool history avant de définir les secrets GitHub.

1Password

  • Utilisez $one-password : tout le travail op dans une seule session tmux persistante, aucune sortie secrète.
  • Utilisez les directives de jeton de service de $release-private lorsqu'elles sont disponibles.
  • Si un jeton de service échoue, exécutez des vérifications de statut uniquement : présence/longueur du jeton et op whoami ; n'imprimez jamais les valeurs des jetons.
  • Si l'authentification par application de bureau est nécessaire mais que Touch ID est indisponible, définissez OP_BIOMETRIC_UNLOCK_ENABLED=false pour le chemin manuel op account add --signin.

Secrets GitHub

Environnement du dépôt release-ops cible : openclaw/releases, env mac-release.

Définissez uniquement après validation locale de l'authentification notary :

  • APP_STORE_CONNECT_API_KEY_P8
  • APP_STORE_CONNECT_KEY_ID
  • APP_STORE_CONNECT_ISSUER_ID

Ne mettez pas à jour ces valeurs à partir de sources mélangées. Les trois champs ASC doivent provenir du même élément 1Password.

Forme du workflow

  • openclaw/openclaw est le dépôt public du produit. Sa page GitHub Releases est l'endroit où les assets macOS sont finalement attachés.
  • openclaw/openclaw macos-release.yml est uniquement une validation de transfert public. Il ne signe, ne notarise ni ne télécharge jamais d'assets macOS, indépendamment de preflight_only.
  • openclaw/releases est le dépôt restreint release-ops. Ses workflows macOS signent, notarisent, valident et promeuvent les assets sur la GitHub Release de openclaw/openclaw.
  • La branche de publication publique peut contenir des correctifs de packaging spécifiques à macOS après que le tag stable/npm est déjà en ligne.
  • Utilisez source_ref=release/YYYY.M.PATCH pour la prévalidation/validation macOS release-ops lors de la construction de cette variation de branche.
  • Gardez tag=vYYYY.M.PATCH pointant vers le commit original de la version stable.
  • La publication macOS réelle doit réutiliser :
    • une exécution réussie de la prévalidation macOS release-ops pour le même tag/SHA source
    • une exécution réussie de la validation macOS release-ops pour le même tag/SHA source
  • La prévalidation et la publication réelle release-ops utilisent l'environnement mac-release pour les secrets de signature et de promotion et sa politique de déploiement réservée à la branche principale. L'opérateur de publication autorisé continue sous les règles actuelles de cet environnement.
  • Si le SHA source de la prévalidation diffère du SHA du tag, la validation doit également utiliser le même source_ref ; la promotion rejette une preuve non correspondante.

Notarisation

  • OpenClaw utilise scripts/notarize-mac-artifact.sh.
  • xcrun notarytool submit doit utiliser --no-s3-acceleration ; un téléchargement accéléré peut faire apparaître des 401 trompeurs même si notarytool history réussit.
  • Si la signature réussit mais que la notarisation échoue immédiatement avec 401, vérifiez d'abord la fraîcheur de la clé ASC.
  • Si la notarisation reste en cours pendant plusieurs minutes après l'écriture du fichier de clé, il s'agit d'un temps d'attente normal d'Apple ; n'éditez pas aveuglément.

Envoi

Le workflow de transfert public valide le tag, la source, la construction et les métadonnées du package avant la publication. Il n'a pas besoin d'une page GitHub Release car il ne télécharge pas d'assets. Conservez cette validation avant le workflow de publication réel. L'éditeur principal possède la finalisation de la GitHub Release ; la promotion macOS attache ses assets vérifiés à cette version, qu'elle soit encore un brouillon ou déjà publique, donc elle n'attend jamais le basculement npm.

Validation de transfert public :

gh workflow run macos-release.yml --repo openclaw/openclaw \
  --ref release/YYYY.M.PATCH \
  -f tag=vYYYY.M.PATCH \
  -f preflight_only=true \
  -f public_release_branch=release/YYYY.M.PATCH
  • Utilisez la branche de publication publique comme ref du workflow afin que la liste Actions affiche release/YYYY.M.PATCH, correspondant aux précédentes exécutions de transfert macOS stables.
  • N'utilisez pas --ref main ou --ref vYYYY.M.PATCH pour cette validation de transfert public. Le workflow vérifie le tag à partir de l'entrée tag en interne.

Prévalidation release-ops :

gh workflow run openclaw-macos-publish.yml --repo openclaw/releases --ref main \
  -f tag=vYYYY.M.PATCH \
  -f source_ref=release/YYYY.M.PATCH \
  -f preflight_only=true \
  -f smoke_test_only=false \
  -f allow_late_calver_recovery=false \
  -f public_release_branch=release/YYYY.M.PATCH

Suivez l'exécution à travers la signature et la notarisation sous la politique d'environnement configurée. Enregistrez l'identifiant de l'exécution réussie de la prévalidation ; une pause d'approbation n'est pas une prévalidation réussie.

La reprise est par défaut. Renvoyer la même commande de prévalidation après un échec (panne notary, packaging DMG, collecteur) reprend chaque variante à partir du point de contrôle le plus récent laissé par un envoi main échoué ou annulé pour le même tag et SHA source ; seules les variantes sans point de contrôle sont reconstruites. Le journal d'exécution affiche Resuming <variant> from run <id> attempt <n> ou Building <variant>. ignore_checkpoints=true force des constructions fraîches. Passez resume_notarization_run_id, resume_notarization_run_attempt, et resume_notarization_variant uniquement pour épingler une exécution spécifique, ou pour des points de contrôle effectués avant l'existence de l'index de reprise (artefacts macos-resume-<tag>-<variant>-<sha>). Préférez gh run rerun <run-id> --failed --repo openclaw/releases lorsque le job échoué est toujours dans l'exécution actuelle.

Validation release-ops pour une prévalidation de variation de branche :

gh workflow run openclaw-macos-validate.yml --repo openclaw/releases --ref main \
  -f tag=vYYYY.M.PATCH \
  -f source_ref=release/YYYY.M.PATCH

Enregistrez l'identifiant de l'exécution réussie de la validation.

Publication réelle :

gh workflow run openclaw-macos-publish.yml --repo openclaw/releases --ref main \
  -f tag=vYYYY.M.PATCH \
  -f preflight_only=false \
  -f smoke_test_only=false \
  -f preflight_run_id=<successful-preflight-run> \
  -f validate_run_id=<successful-validation-run> \
  -f allow_late_calver_recovery=false \
  -f public_release_branch=release/YYYY.M.PATCH

Suivez la promotion à travers le téléchargement des assets et la publication du fil d'actualité sous la même autorisation de publication et la politique d'environnement actuelle.

  • Les workflows de publication/validation release-ops openclaw/releases s'exécutent à partir de leur propre ref de workflow main de confiance. La publication réelle a une garde qui rejette toute autre ref de workflow. Cette ref main affichée est attendue ; la source publique OpenClaw est sélectionnée par tag et source_ref optionnel.

Vérifier

  • gh release view vYYYY.M.PATCH --repo openclaw/openclaw montre zip, dmg, dSYM zip ; une fois que l'éditeur npm a basculé : pas un brouillon, pas une pré-version.
  • Le appcast.xml public main pointe vers OpenClaw-YYYY.M.PATCH.zip.
  • L'entrée du fil d'actualité a sparkle:version, sparkle:shortVersionString, la longueur, et sparkle:edSignature.

Individual skills in this repo

This repo contains 20 individual skills — each has its own dedicated page.

1password

Set up and use 1Password CLI for sign-in, desktop integration, and reading or injecting secrets.

acp-router

Route plain-language requests for Claude Code, Cursor, Copilot, OpenClaw ACP, OpenCode, Gemini CLI, Qwen, Kiro, Kimi, iFlow, Factory Droid, Kilocode, or explicit ACP harness work into either OpenClaw ACP runtime sessions or direct acpx-driven sessions ("telephone game" flow). For coding-agent thread requests, read this skill first, then use only `sessions_spawn` for thread creation. Codex chat binding defaults to the native Codex app-server plugin unless ACP is explicit or background spawn needs ACP.

add-model-provider

Add and live-prove a model provider with non-interactive config one-liners, without exposing credentials.

agent-transcript

Requested GitHub PR/issue agent transcripts: redact, trim, preview, and insert safely.

apple-notes

Create, view, edit, delete, search, move, or export Apple Notes via the memo CLI on macOS.

apple-reminders

List, add, edit, complete, or delete Apple Reminders and reminder lists via remindctl.

auto-qa

Run OpenClaw-wide autonomous QA and live/stress campaigns across independent subsystem lanes, with verified fixes and a resumable evidence report.

autoreview

Structured code review through the shared OpenClaw agent-skills installation.

bear-notes

Create, search, and manage Bear notes via grizzly CLI.

blacksmith-testbox

Run Blacksmith Testbox for CI-parity checks, secrets, hosted services, migrations, or builds local cannot reproduce.

block-kit

Use proactively for structured or interactive Slack replies, and when asked to author or validate native Slack Block Kit JSON.

blogwatcher

Monitor blogs and RSS/Atom feeds for updates using the blogwatcher CLI.

blucli

BluOS CLI (blu) for discovery, playback, grouping, and volume.

bluebubbles

Send and manage iMessages via BlueBubbles, including attachments, tapbacks, edits, replies, and groups.

browser-automation

Use when controlling web pages with the OpenClaw browser tool, especially multi-step flows, login checks, tab management, or recovery from stale refs/timeouts.

camsnap

Capture frames or clips from RTSP/ONVIF cameras and local webcams, including USB pan/tilt/zoom control.

canvas

Present HTML on connected OpenClaw node canvases, navigate/eval/snapshot, and debug canvas host URLs.

channel-message-flows

Use when running QA Lab channel message flow evidence.

clawdtributor

Clawtributor PRs here, last week or another window: discover conversation refs, recheck GitHub, rank by impact.

clawhub

Search ClawHub for plugins by default, or skills when explicitly requested; install, verify, update, uninstall, publish, or sync skills.

Skills associés