HowTo 2026

2026 OpenClaw MeshMac 실전: Linear Webhook으로 공유 빌드 브로드캐스트·요약 회신

2026.04.10 Meshmac R&D Team 9분 읽기

Linear 트리거를 게이트웨이 한 곳에서 서명 검증한 뒤 공유 큐·임의 MeshMac 노드로 빌드하고, 채널 브로드캐스트와 (선택) 이슈 요약까지 한 흐름으로 묶는 최소 단계입니다. 본문은 약 800–1500자 분량으로 압축했습니다.

Mac마다 웹훅을 두면 시크릿·감사·재시도가 N배로 불어납니다. 게이트웨이 단일 인그레스 + 큐 뒤 실행이면 노드 교체·LB 드레인 시에도 Linear URL을 바꿀 필요가 없습니다. 심화는 페일오버·메시 협업을 참고하세요.

항목 Mesh 노드별 URL
확장 워커·큐만 URL 재설정
장애 드레인 수동 DNS

게이트웨이 설치 및 헬스 체크

Linear POSTTLS·본문 상한·타임아웃이 있는 엣지(게이트웨이)에만 두고, 빌더 재부팅과 무관하게 URL을 고정합니다.

  1. 1단계클러스터 가이드로 게이트웨이에 OpenClaw, OPENCLAW_CONFIG_ROOT, 재기동 유지 프로세스를 둡니다.
  2. 2단계https://…/hooks/linear만 프록시에 매핑합니다. TLS는 Nginx·Caddy 매트릭스.
  3. 3단계doctor·/health(헬스 프로브)로 레디니스를 고정합니다.
  4. 4단계 — 동시성은 rate limit 가이드에 맞추고, 패턴은 공유 빌드 알림·OpenClaw 허브를 참고합니다.

Linear 서명 검증

원본 바디로 HMAC → 그다음 JSON 파싱. 먼저 파싱하면 Linear-Signature가 깨집니다.

  1. 1단계 — Signing Secret을 0440·최소 권한 파일(예: …/linear/webhook_hmac)에만 둡니다.
  2. 2단계 — Linear 문서대로 HMAC-SHA256, 헤더 상수 시간 비교, 가능하면 타임스탬프 창으로 리플레이 완화.
  3. 3단계 — 실패 시 401, 시크릿은 로그 금지(Teams 웹훅과 동일).
  4. 4단계200은 큐에 durable enqueue 후에만. 멱등·순서는 큐 동기화.

핸들러는 ack 수준으로 짧게, 긴 빌드는 워커가 처리합니다.

공유 빌드 스크립트와 연동

페이로드를 이슈·ref·멱등 키(delivery id 또는 이슈+전환+분 창)로 정규화하면 어느 노드든 동일 스크립트를 돌리고 웹훅은 하나로 유지됩니다.

  1. 1단계 — 빌드할 전환·라벨만 허용, 나머지는 즉시 200.
  2. 2단계공유 큐에 이슈·팀·멱등 키를 넣습니다.
  3. 3단계버전 고정 엔트리포인트, 저장소는 worktree·락.
  4. 4단계 — 완료 시 mesh_node_id 등으로 게이트웨이가 Slack·Chat·Teams단일 브로드캐스트.
  5. 5단계 — 요약 코멘트는 게이트웨이만 GraphQL, 키 로테이션은 IM·토큰 절차.

GHA와 병행 시 러너 라우팅, 설정은 프로젝트별 로그와 정렬.

실패 재시도 및 알림

인바운드(Linear→큐)와 아웃바운드(채널·Linear API) 재시도 규칙을 분리합니다.

  1. 1단계 — enqueue 후 즉시 응답, Linear 재전송은 멱등 키로 흡수.
  2. 2단계 — 채팅 웹훅: 429·5xx만 백오프+지터, 키+state 멱등.
  3. 3단계 — GraphQL: errors[] 로그, 401은 키 수정 후 재시도.
  4. 4단계 — 양쪽 실패 시 IM 알림, 게이트웨이는 페일오버.

FAQ

curl은 되는데 운영만 서명 실패
WAF·압축·파서 순서 의심. 원본 바이트 캡처로 재현하세요.
칸반을 빠르게 옮기면 빌드 중복
디바운스 또는 라벨 게이트. 멱등 키에 컬럼·시간 버킷 포함.
빌드 성공인데 코멘트 없음
키 권한·issueId·GraphQL 오류 확인.
Linear 호출은 게이트웨이만?
권장. 빌더는 워커로 교체하고 노드 추가 시 큐만 키우면 됩니다.

한 줄 정리

게이트웨이·HMAC·멱등 큐·단일 브로드캐스트·요약 다섯 축이면 Mesh 확장 시 Linear를 다시 묶지 않습니다. ·블로그·OpenClaw 허브·도움말은 공개 페이지입니다.

노드를 늘릴 때 Linear를 다시 묶지 마세요

노드는 용량, 웹훅은 한 벌로 유지하세요. 플랜·패키지(공개)로 풀을 맞추고, 도움말·블로그·로그인 없이 열람합니다.