2026 OpenClaw MeshMac 실전: Mattermost Incoming Webhook으로 다중 노드 빌드 상태 브로드캐스트
MeshMac 풀에서 어느 Mac이 빌드하든 Mattermost 채널 하나로 상태를 모읍니다. OpenClaw 2026 게이트웨이만 Incoming Webhook을 호출하는 최소 경로와 네 가지 축—게이트웨이·웹훅, 다중 노드 집계, 토큰·최소 권한, 미수신 FAQ—을 압축했습니다(본문 약 800–1500자).
클러스터 설치로 게이트웨이를 두고 워커는 공유 큐만 쓰며 Mattermost POST는 게이트웨이만 합니다. 레이트는 FAQ, 유사 패턴은 Teams·Matrix, 목록은 OpenClaw 허브.
게이트웨이와 Webhook 설정
통합 → Incoming Webhooks로 URL을 발급해 /hooks/<token>를 베어러 비밀로 두고, OpenClaw에는 게이트웨이 한 프로필·파일 0440만 둡니다. 인바운드는 공유 Webhook과 같이 단일 HTTPS 경로·토큰 검증, 아웃바운드는 Mattermost 호스트 443·프록시 HTTPS_PROXY를 검증합니다. JSON은 text 또는 attachments, 스테이징·프로덕션 URL은 분리하고 설정·로그 절차로 정리합니다.
다중 노드 상태 집계 최소 단계
러너는 게이트웨이로만 정규화 JSON을 보내고, 게이트웨이는 mesh_node_id·provider_run_id·state로 큐에 넣은 뒤 Mattermost로 한 줄 요약합니다. 429·5xx는 재시도 백오프를 씁니다.
| 게이트웨이 키 | CI 예시 필드 | 용도 |
|---|---|---|
workflow |
workflow, pipeline, name | 잡·워크플로 식별 |
state |
conclusion, status | 성공·실패·취소 |
mesh_node_id |
runner, hostname, 풀 태그 | 풀 안 어느 Mac인지 표시 |
provider_run_id |
run_id, build number | state와 함께 멱등 키 |
멱등 키는 provider_run_id+state로 중복을 막고, 재실행 시 상태가 바뀌면 새 알림이 나가게 분리합니다.
토큰과 최소 권한
URL 경로의 토큰=비밀, 로그에는 끝 4자만. PAT는 웹훅만으로 충분할 때 빌더에 두지 않습니다. 최소 권한·로테이션 런북을 따르고, 팀 외 채널 오버라이드는 정책을 먼저 확인합니다.
메시지 수신 실패 FAQ
- CI는 녹색인데 채널에 아무것도 없음
- 게이트웨이의 Mattermost POST 로그·HTTP 코드를 확인하고, 통합이 삭제되지 않았는지 Mattermost 콘솔에서 봅니다.
curl로 최소{"text":"ping"}를 보내 재현합니다. 400또는404- 400은 JSON 키·길이·필드명 오류 가능성이 큽니다. 404는 토큰이 바뀌었거나 URL이 잘못 붙은 경우입니다.
- 일부 노드만 간헐 실패
- 노드에서 Mattermost로 직통 POST하는 옛 스크립트가 남아 있는지 찾아 게이트웨이 단일 경로로 통일합니다.