release-openclaw-ci

Exécuter, surveiller, déboguer et résumer les CI de publication complète d'OpenClaw, les vérifications de version, les vérifications des fournisseurs en direct, les preuves d'installation/mise à jour et les pré-vérifications des secrets de publication.

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

Cette compétence permet à un agent IA de gérer l'ensemble du pipeline de publication d'OpenClaw, depuis la validation des candidats jusqu'à la publication finale. Elle définit des règles strictes pour éviter les erreurs humaines, comme le gel du code source (SHA) et l'isolation des vérifications de qualification (Q) et de publication (P). L'agent peut lancer, surveiller et déboguer des exécutions CI complexes, en gérant les redémarrages, les échecs de fournisseurs externes et les preuves de continuité après fusion. Elle est conçue pour les plateformes GitHub Actions et prend en charge les environnements Linux, Windows, macOS et Android. La compétence s'appuie sur des commandes `pnpm frv` et des scripts personnalisés, et intègre des mécanismes de récupération après panne sans corruption de l'état.

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

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

CI de publication OpenClaw

Utilisez cette compétence avec $release-openclaw-maintainer et $openclaw-testing lorsqu'un candidat de publication nécessite une validation complète, une preuve d'installation/mise à jour, des vérifications de fournisseurs en direct ou une récupération de CI.

Garde-fous

  • Pas d'incrémentation de version, de tag, de publication npm, de version GitHub ou de promotion de publication sans approbation explicite de l'opérateur.
  • Après une compaction, une reprise ou une nouvelle orientation, réécrivez l'objectif effectif et la phase actuelle à partir de la dernière instruction explicite de l'opérateur. Ne fusionnez pas l'ancien périmètre dans la publication active.
  • Maintenez le périmètre de publication une fois qu'une branche de publication ou un SHA de code existe. Validez et expédiez cette publication exacte ; ne transformez pas main mouvant en une deuxième file de travail.
  • Enregistrez C (candidat), Q (qualification), P (admission/vérificateur/éditeur), groupe de réexécution, profil, trempage effectif et références de contexte/transport. La qualification par défaut d'un nouveau candidat est Q=C, incluant le flux de travail complet, le flux de travail réutilisable, l'action locale, le script, le planificateur, le contrat et la clôture de couverture. Le SHA de code et le SHA de publication restent des rôles de cycle de vie, pas des identités de flux de travail supplémentaires.
  • L'assistant candidat accepte un tag de publication absent ou un tag léger ou annoté existant qui se résout au SHA exact du candidat. Un tag conflictuel ou une recherche distante échouée arrête la validation ; ne déplacez jamais un tag pour récupérer.
  • Gelez C/Q et sélectionnez indépendamment un P de confiance sur main ou sur un tag de publication protégé. C/Q n'ont pas besoin d'être un ancêtre de P. Les contrats candidats manquants nécessitent un backport délibéré ; ne substituez jamais silencieusement un outillage main plus récent.
  • Appliquez une coupure de publication après le gel du SHA de code. Admettez uniquement les défauts de produit confirmés, les octets de paquet erronés ou invérifiables, les défauts de sécurité ou les échecs rendant la publication impossible. Mettez en file d'attente les autres résultats pour la confiance post-publication ou la prochaine bêta. Les avis de dépendance ne sont jamais des admissions de coupure de publication : enregistrez-les comme preuve de publication et mettez en file d'attente le bump sur main après la publication ; seul un logiciel malveillant connu arrête la publication.
  • Les enfants de CI gelés utilisent le planificateur de shard Node de Q et les coûts mesurés, tout en découvrant et en exécutant les tests à partir du checkout candidat. Les plans de publication complète hébergés divisent les lignes mesurées au-dessus de 12 minutes ; préservez la couverture des fichiers, les limites de travailleurs et les générations de temps complètes. Un propriétaire indivisible au-dessus du budget doit être divisé plutôt que d'augmenter le budget de publication. Une fois l'enfant terminé, la clôture exécute scripts/ci-shard-timings-refresh.mts pour cette exécution exacte et valide les coûts générés ; ne modifiez pas les mesures à la main.
  • La qualification candidate exécute sa propre clôture Q gelée. Les vérifications uniquement sur main et les scénarios futurs de main ne sont pas des exigences implicites de publication. Réparer un harnais de qualification gelé signifie un nouveau C/Q, avec de nouvelles preuves liées. Une réparation P uniquement d'admission/vérificateur/éditeur peut conserver C/Q et leurs preuves originales.
  • Les tags légers protégés release-publish/<12sha>-<provenance-run> identifient P, pas Q. Le suffixe enregistre la provenance de création du tag, pas le parent actuel. Les assistants de publication conservent leur argument --workflow-sha <P> ; l'argument --workflow-sha de l'assistant FRV sélectionne plutôt Q et doit être égal à C sur la route candidate.
  • Touchez main uniquement pour un changement demandé par l'opérateur ou le plus petit bloqueur critique appartenant à main qui empêche cette publication et ne peut pas être traité depuis la branche de publication. La santé CI de main ne bloque jamais une publication. Si un atterrissage d'outillage de publication est bloqué par des échecs main qu'il ne cause pas, prouvez sur un checkout propre de main que l'échec existe déjà là, enregistrez-le dans le corps de la PR et fusionnez ; pendant une publication active, une fusion admin est autorisée pour ce cas exact. Une voie séparée corrige le main rouge en parallèle, hors du chemin critique de la publication.
  • Atterrissez les correctifs d'outillage uniquement sur main avec l'étiquette release-fast-lane ajoutée avant le push (voir Voie rapide d'outillage de publication) : openclaw/ci-gate exécute ensuite lint, types, gardes, dépendances, documentation et les lignes Node modifiées uniquement. Atterrissez via le chemin natif scripts/pr avec sa revue ClawSweeper terminée ; les résultats sont consultatifs pour cette étiquette, alors enregistrez tout P1 que le propriétaire de la publication refuse de corriger dans la PR avec son suivi avant l'atterrissage.
  • OPENCLAW_RELEASE_RUNNER_GROUP achemine optionnellement les parents et travailleurs de validation et le parent de publication plus ses enfants de publication vers une capacité réservée avec des étiquettes inchangées ; les travaux d'édition et d'approbation avec informations d'identification restent sur les étiquettes hébergées GitHub par défaut. Configurez d'abord les runners éligibles et l'accès au dépôt ; non défini préserve l'acheminement ordinaire. Les travailleurs partagés héritent du groupe de l'appelant ; la CI PR/main et le travail planifié non lié restent en dehors.
  • Vérifiez le parent nocturne pour le SHA de code avant d'envoyer une nouvelle validation main ; il scelle les reçus par enfant que les envois à cible exacte adoptent lorsque les entrées correspondent. Le nocturne exécute cette route d'assistant main de confiance explicite (--sha <main-sha> --workflow-sha <main-sha> --trusted-workflow-ref main), donc son parent s'exécute sur une branche release-ci/<sha12>-<id>, pas main.
  • Chaque voie de validation sélectionnée doit réussir ; voir Exigences de publication. Les tags stables nécessitent des preuves stables/complètes, un trempage et des performances bloquantes. Les preuves de profil bêta ne peuvent pas qualifier de stable. Aucune voie ou dérogation de trempage ne contourne ces exigences. La qualification de tous les groupes nécessite les neuf combinaisons d'installation/mise à niveau Gateway Linux/Windows/macOS. Préservez les premiers échecs, l'identité et les preuves complètes.
  • La publication native macOS, Windows, Linux et Android est indépendante de npm/ClawHub, de la finalisation GitHub et de la clôture main. Chaque plateforme conserve ses propres exigences de signature, qualification, artefact et mise à jour ; signalez les plateformes en attente avec précision et réparez les échecs natifs uniquement en parallèle.
  • Ne définissez pas de secrets GitHub à partir de candidats 1Password non validés. Si un candidat renvoie 401/403, laissez le secret existant tranquille et signalez le fournisseur manquant exact.
  • Utilisez $one-password pour les lectures/écritures de secrets : une session tmux persistante, éléments ciblés uniquement, pas de sortie de secret.
  • Surveillez une exécution parent avec pnpm frv watch --run <parent> (voir Surveillance). Évitez les boucles larges de gh run view ; le quota REST est facile à épuiser.
  • Récupérez les logs uniquement pour les travaux en échec ou actuellement bloquants. Si le quota est bas, arrêtez le sondage et attendez la réinitialisation.
  • Traitez les échecs de fournisseurs en direct séparément des échecs de code : prouvez la validité de la clé, le statut HTTP du fournisseur, les preuves de nouvelle tentative et la voie exacte en échec avant de modifier le code.
  • Lors du diagnostic d'un échec de fournisseur en direct, une réponse de liste de modèles prouve l'authentification, pas la facturation ou le droit d'inférence. Confirmez l'information d'identification avec un sondage de complétion réel avant de le traiter comme valide. Corrigez d'abord l'information d'identification ; n'ajoutez pas de chemin d'authentification alternatif simplement pour contourner une information d'identification de publication en échec.
  • La validation complète de publication sépare l'envoi d'enfant exact, la décision de publication et le drainage diagnostique. Avec fail_fast=false, elle ne fait aucun appel d'annulation d'enfant ; le drainage diagnostique suit chaque enfant sélectionné jusqu'au terminal à moins que le collecteur lui-même ne soit annulé ou perde l'accès à l'API GitHub. Avec fail_fast=true, la décision de publication peut annuler uniquement l'enfant exact encore actif qui possède un échec bloquant.
  • La continuation du même parent nécessite que la racine originale ait été envoyée avec fail_fast=false. Le contrôleur vérifie cette entrée exacte enregistrée avant toute mutation de réexécution.
  • Un parent qui a produit ses propres artefacts candidats scellés ne peut pas être continué : les réexécutions GitHub rendent ces artefacts de tentative précédente indisponibles. Gardez les SHA candidats et de qualification gelés, remplacez ce parent et démarrez une nouvelle validation complète de publication de tous les groupes.
  • Après l'envoi, un artefact de plan d'exécution immuable enregistre la tentative parente originale, les tuples et titres exacts des enfants, la couverture sélectionnée, les portes et l'identité de réutilisation. Les mêmes octets sont sauvegardés sous une clé de cache d'ID d'exécution exacte. La décision, le drainage, l'écriture du manifeste, la validation des preuves et la vérification finale consomment l'artefact pour leur tentative actuelle. Une nouvelle tentative de collecteur restaure le plan mis en cache, le valide, retélécharge son artefact et adopte les mêmes enfants ; un état de plan manquant est un échec d'orchestration, pas une permission de reconstruire le plan ou de réenvoyer.
  • Les preuves réutilisées ne sont pas fiables simplement parce que le scellement du plan les a trouvées. La décision de publication répète le SHA cible scellé, le SHA de preuve, la politique, les chemins modifiés, l'exécution sélectionnée, l'exécution racine, le manifeste source, l'identité d'outillage de confiance et les vérifications d'enfant exact avant de renvoyer passed.
  • Les nouvelles tentatives parent sélectionnent indépendamment les artefacts de décision et de drainage les plus récents ; les deux doivent lier le même plan immuable même lorsque leurs tentatives source diffèrent.
  • Les nouvelles tentatives enfant font partie du même plan immuable uniquement lorsque l'ID d'exécution enfant, le chemin de flux de travail, la référence, le SHA Q, le titre d'envoi, l'événement, la cible, le candidat et les entrées de validation restent exacts. Les tentatives enfant plus récentes remplacent les travaux correspondants ; les travaux absents d'une tentative plus récente sont reportés. Une identité de travail en double, une tentative manquante, une tentative régressée ou un tuple modifié échoue fermé. frv status et continue permettent jusqu'à 60 secondes de réconciliation en lecture seule lorsque GitHub renvoie temporairement des travaux en double dans la tentative de nouvelle tentative la plus récente. Le tuple d'exécution et la tentative restent épinglés ; les doublons persistants et les conflits de tentative plus ancienne restent des erreurs.
  • Utilisez pnpm frv status|watch|rerun --job|rerun --child|continue --failed|verify pour une récupération tenant compte des tentatives. Le contrôleur est sans état : le plan d'exécution immuable, les tentatives d'exécution GitHub exactes, le drainage diagnostique et le manifeste final sont les seules autorités. Il n'écrit jamais de tag, de paquet, d'entrée de registre, de candidat de publication ou de publication.
  • La preuve de contrôleur post-fusion doit utiliser le SHA atterri examiné sur main protégé via le FRV Proof Broker et le FRV Proof Fixture non liés à la publication. Envoyez le courtier avec le numéro de PR fusionné et le commit atterri exact. Le courtier doit exiger que le commit de fusion de cette PR corresponde au commit atterri, prouver que le commit atterri est identique ou un ancêtre de son SHA de flux de travail de confiance, et répéter les vérifications d'autorité, de fusion et d'ascendance immédiatement avant de réexécuter le fixture. Exigez que l'exécution fixe du fixture no-op exacte passe d'un échec intentionnel de la tentative un à une réussite de la tentative deux. Le courtier doit émettre son reçu sans créer de candidat de publication, d'artefact de publication, de publication, de référence de dépôt, de parent de remplacement ou d'autre mutation de flux de travail. Il s'agit de la preuve de réexécution de travail ciblé hébergé GitHub ; les tests de contrôleur ciblés possèdent l'éligibilité au plan immuable, la préservation de la tentative verte, la collection du même parent et l'invocation de vérificateur strict. N'utilisez jamais une vraie exécution de validation complète de publication pour cette preuve. Voir Validation complète de publication.
  • Utilisez un opérateur de publication, un frv watch et au plus un enquêteur pour la surface d'échec actuelle. Ne construisez pas d'arbres de plan de révision d'audit autour d'une seule transition de flux de travail.
  • Pour les versions stables/bêta régulières, le SHA de code peut déjà contenir les notes finales et servir de SHA de publication. Un seul parent frais complet réussi peut qualifier les deux rôles et leurs octets de publication exacts. Si les notes changent ensuite, un SHA de publication ultérieur peut réutiliser les preuves de produit uniquement lorsque son delta complet par rapport au SHA de code modifie le CHANGELOG/YYYY.M.PATCH.md sélectionné et optionnellement CHANGELOG.md et CHANGELOG/records/YYYY.M.PATCH.md, sans autres chemins, renommages ou suppressions ; ses octets modifiés nécessitent encore une qualification.
  • La version étendue stable valide une seule pointe de branche exacte ; elle ne réutilise pas le modèle de preuve SHA de code/SHA de publication régulier.
  • Dans un arbre de travail clairsemé ou une synchronisation source Testbox, confirmez d'abord package.json, pnpm-lock.yaml et chaque chemin source que la vérification sélectionnée lit. Si l'un d'eux est absent, ce checkout ne peut pas valider une dépendance de publication ou une voie Docker : arrêtez-vous et utilisez la porte modifiée distante du dépôt ou un arbre de travail de tâche complet. Lorsque les entrées sont présentes et qu'un correctif de publication modifie package.json ou pnpm-lock.yaml, reconstruisez uniquement la boîte jetable appartenant à la tâche avec CI=true pnpm install --frozen-lockfile, puis exécutez un sondage require.resolve() explicite avant Docker ou les tests ciblés. Le drapeau CI permet à pnpm de recréer un répertoire de modules préchauffé sans confirmation interactive. N'affaiblissez pas le lockfile et n'étiquetez pas les échecs de checkout clairsemé comme des échecs de produit/Docker.
  • Si le candidat est rebasé ou que son SHA de base change après le préchauffage, arrêtez la boîte appartenant à la tâche et préchauffez-en une fraîche avant de tester. La synchronisation source Testbox est relative à l'arbre source préchauffé ; continuer peut mélanger un ancien fichier de base avec un nouveau diff candidat et produire de faux échecs de lockfile ou Docker.
  • Les Testboxes réutilisées sont vérifiées par rapport à leur source enregistrée après leur première exécution réussie. Les modifications de source uniquement peuvent réutiliser le bail ; la dérive de la base, de la dépendance, du wrapper ou du flux de travail Testbox nécessite un nouveau bail. Ne définissez pas OPENCLAW_TESTBOX_ALLOW_STALE=1 pour les preuves de publication.
  • Pour un candidat de publication validé avec le wrapper compatible capsule pris en charge, exécutez node scripts/crabbox-wrapper.mjs run --blacksmith-ref main -- <commande> à partir du checkout de ce candidat lors de l'utilisation de Testbox. La capsule préserve le code source candidat et les dépendances gelées tandis que main fournit les limites d'admission actuelles. Si le candidat manque de ce contrat de wrapper, utilisez la route de validation de publication à cible exacte ci-dessous avec des SHA de validation et d'outillage séparés. N'envoyez pas de références de flux de travail Testbox candidates et n'empruntez pas le wrapper d'un autre checkout.

Récupération CI différée

La validation de publication ne met pas en pause la CI ou les flux de travail de support. La variable héritée OPENCLAW_RELEASE_PRIORITY_RUN est ignorée par l'admission actuelle du flux de travail, et pnpm frv prioritize --run est retirée. Utilisez pnpm frv prioritize --restore <record> pour récupérer les exécutions différées par des révisions de flux de travail plus anciennes.

[suite tronquée pour la traduction]

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