HowTo 2026

2026 OpenClaw MeshMac en pratique : Webhook Linear pour diffusion d’état de build partagé et résumé de retour

2026.04.10 Équipe Meshmac 9 min de lecture

Relier Linear à OpenClaw sur un pool MeshMac, c’est choisir une passerelle qui vérifie les webhooks, une file partagée pour que n’importe quel Mac exécute le build, un broadcast unique vers le chat d’équipe, et un commentaire API court sur le ticket comme résumé opérationnel. Ce guide condense un chemin numéroté et reproductible pour 2026, avec une emphase sur la valeur multi-nœuds : ajouter des builders augmente la capacité CPU et disque sans multiplier les secrets exposés à Linear ni les URLs publiques.

Sommaire

Installation de la passerelle et vérification de santé

Seule la passerelle doit accepter les webhooks Linear en POST. Les builders rejoignent ou quittent le maillage sans faire tourner les URL ni les secrets ; le champ mesh_node_id identifie les exécuteurs, pas des entrées réseau supplémentaires. Suivez le guide de déploiement multi-nœuds MeshMac pour les rôles, et concentrez les appels API Linear ainsi que les webhooks de chat sur la passerelle afin de conserver un périmètre d’audit lisible lorsque le pool grandit.

  1. Étape 1. Installez OpenClaw sur la passerelle, définissez OPENCLAW_CONFIG_ROOT, et exécutez le service sous LaunchDaemon (ou équivalent) pour survivre aux redémarrages pendant que les Mac du pool mettent à jour Xcode.
  2. Étape 2. Publiez https://… sur le nom d’hôte de passerelle que vous collerez dans Linear ; isolez le chemin webhook derrière un location reverse-proxy avec une taille maximale de corps raisonnable (rappels TLS dans la matrice Nginx vs Caddy).
  3. Étape 3. Validez la disponibilité avec openclaw doctor, les journaux applicatifs, et un GET /health (ou une sonde fusionnée issue du guide préchauffage skills et sonde de santé) afin que le répartiteur retire le trafic des instances dégradées pendant les déploiements.
  4. Étape 4. Journalisez correlation_id, route et latence de file ; dimensionnez la concurrence des webhooks avec le how-to rate limit et sessions passerelle. Pour des motifs voisins, voir aussi webhooks de notification de build partagé et le hub OpenClaw.

Chemins et journaux par dépôt : configuration et logs par projet.

Vérification de signature Linear

Vérifier d’abord, analyser ensuite. Linear signe le corps brut exact ; un middleware qui parse le JSON trop tôt casse le contrôle HMAC dès que le cadre réécrit les espaces ou l’ordre des champs.

  1. Étape 1. Créez le webhook dans Linear, copiez le secret de signature une fois, stockez-le en 0440 selon secrets et moindre privilège (par exemple /etc/openclaw/secrets.d/linear/webhook.secret).
  2. Étape 2. Mettez le corps en tampon octet par octet, calculez HMAC-SHA256 conformément à la documentation Linear, et comparez l’en-tête Linear-Signature en temps constant ; rejetez les rejeux avec une fenêtre d’horodatage serrée lorsque la plateforme l’expose.
  3. Étape 3. Répondez 401 si la signature est invalide ; ne journalisez que des métadonnées redactées (même hygiène que pour Teams webhook et état de build).
  4. Étape 4. Ne renvoyez 200 qu’après persistance durable de l’enqueue, sinon les retries Linear multiplient les jobs. Indices d’ordonnancement dans déploiement unifié et synchronisation de file. Option : encapsuler la logique dans un LinearWebhookClient côté passerelle uniquement.

Enchaînement avec les scripts de build partagés

Normalisez chaque charge utile vérifiée en une tâche exécutable par n’importe quel Mac du pool : dépôt, référence, identifiant d’issue, acteur, libellés, plus une idempotency_key dérivée des métadonnées de livraison Linear. Le nœud A peut être saturé pendant que le nœud B exécute le même script — sans second webhook public ni second secret Linear.

  1. Étape 1. Listez blanc les transitions qui doivent déclencher un build (colonne cible ou libellé ci). Répondez 200 rapidement pour les événements ignorés afin de ne pas saturer la file.
  2. Étape 2. Poussez la tâche vers votre file partagée (Redis, RabbitMQ, tâches OpenClaw — voir file de tâches et étapes de retry) avec linear_issue_id, équipe, demandeur et clé d’idempotence.
  3. Étape 3. Exécutez un point d’entrée verrouillé en version partout (verrou de version de skill ; worktrees et verrous lorsque plusieurs pipelines touchent le même dépôt).
  4. Étape 4. Émettez « build terminé » avec mesh_node_id, durée, extrait de journal, artefacts. La passerelle diffuse vers le chat via vos connecteurs existants : Slack, Google Chat, Teams.
  5. Étape 5. Publiez le commentaire de résumé via GraphQL Linear depuis la passerelle (clé API à périmètre restreint, rotation selon canaux d’alerte et rotation des jetons) : emoji d’état, SHA court, nœud, lien de run, résumé OpenClaw en deux lignes.

Si Linear déclenche aussi GitHub Actions, séparez les couloirs avec la matrice routage runner GHA et files pour éviter que deux orchestrateurs se disputent le disque partagé.

Nouvelles tentatives en cas d’échec et notifications

Un maillage multiplie les défaillances transitoires ; gardez une seule narration de notification. Séparez clairement l’entrant (Linear → vous) de l’sortant (vous → chat / API Linear).

  1. Étape 1. Accusez réception vite après enqueue durable ; laissez Linear retenter son bord. Gardez les timeouts du handler dans les enveloppes de concurrence passerelle.
  2. Étape 2. Webhooks chat : backoff exponentiel + jitter sur 429 / 5xx, plafonnez les tentatives, dédupliquez sur idempotency_key + état (~72 h) comme pour Teams et déduplication.
  3. Étape 3. GraphQL Linear : journalisez errors[], backoff sur limitation de débit, ne bouclez pas sur 401 — corrigez la clé d’abord.
  4. Étape 4. Si chat et Linear échouent tous deux, déclenchez une alerte opérateur via les canaux IM. Prévoyez la bascule passerelle avec équilibrage de charge et failover.

FAQ

Les signatures passent en curl mais échouent en production
Vous n’envoyez probablement pas les mêmes octets que le framework reçoit — reproduisez la chaîne de tampon brut depuis la préproduction, désactivez la recompression gzip en bordure, vérifiez qu’aucun WAF ne supprime les en-têtes. Rejouez la vérification sur des corps capturés côté passerelle (redactés).
Des builds en double partent quand je déplace vite une carte entre colonnes
Anti-rebond sur les transitions dans votre mappeur, ou exigez un libellé stable « prêt pour build ». Combinez identifiant d’issue, colonne et court créneau temporel dans la clé d’idempotence pour absorber le jitter humain.
Les commentaires n’apparaissent pas sur l’issue malgré un build vert
Vérifiez que la clé API conserve le droit de commenter pour cette équipe, que vous ciblez le bon issueId issu du webhook, et inspectez les erreurs GraphQL après une mise à jour du schéma Linear.
Un seul Mac doit parler à Linear — vraiment ?
Oui pour les secrets et l’audit. Les builders restent simples, rapides et remplaçables ; la passerelle détient vérification, jetons API et URL de chat. C’est ce découplage qui fait qu’ajouter un quatrième ou cinquième nœud MeshMac est un choix de capacité, pas un nouvel audit de sécurité complet.

Résumé

Installez OpenClaw sur une passerelle unique, prouvez sa santé, vérifiez les signatures Linear sur corps brut, mettez en file des tâches normalisées pour tout le maillage, diffusez l’état de build via vos hooks chat existants, et postez des résumés via l’API Linear avec retries et déduplication. L’accueil, l’index du blog, la page forfaits publics et le centre d’aide restent consultables sans compte.

Maillage 2026 · pages publiques

Étendre le Mesh sans recâbler Linear

Quand vous ajoutez des builders, vous ajoutez du CPU et du disque, pas de nouveaux secrets webhook. Ouvrez les forfaits MeshMac publics sans connexion pour louer de la capacité Mac mutualisée, parcourez le blog pour les checklists cluster, et le centre d’aide pour SSH, VNC et accès passerelle. L’accueil et le hub OpenClaw restent lisibles sans inscription — idéal pour dimensionner passerelle et nombre de nœuds avant commande.

Plus de nœuds, une seule URL Linear Tarifs visibles sur page publique Aide et articles sans compte
Forfaits publics