HowTo 2026

2026 OpenClaw MeshMac 실전: 다중 노드 monorepo 경로 필터로 증분 빌드·Slack 요약 알림까지 최소 재현

2026.04.09 Meshmac R&D Team 7분 읽기

공유 MeshMac 풀에서 매 푸시마다 전체 monorepo를 돌리면 시간이 새니, path filter큐/락증분OpenClaw 요약Slack 웹훅(게이트웨이만) → 백오프·멱등 최소 고리를 정리합니다. 서술은 약 800–1500자 분량, 명령·표는 재현용으로 유지했습니다.

클러스터 동기화·웹훅 레이아웃·OpenClaw 허브와 같이 보면 확장이 수월합니다.

변경 감지: monorepo path filter

diff 앵커를 고정하세요. GitHub Actions에서는 dorny/paths-filter 또는 git diff --name-only "$BASE_SHA"...HEAD 한 줄로 1차 버전을 만들 수 있습니다. 변경 파일을 패키지 루트로 접는 규칙은 저장소 루트 YAML에 두어 리뷰어가 오탐·누락을 PR 단계에서 잡게 하세요. 예: apps/ios/**apps/ios.

산출물은 JSON 한 덩어리로 통일하면 노드마다 같은 빌드 계획을 읽습니다. 필터가 비면 스모크만; Turborepo·Nx·Bazel affected도 같은 계약으로 계획 파일만 갱신하면 됩니다.

main에서 ci/**·.github/** 변경 시 한 번 넓게 빌드한 뒤 증분으로 복귀하세요. 체크아웃은 worktree·lockfile 글과 맞춰 path filter와 Package.resolved 경합을 피합니다.

큐 또는 락: 증분 전에 입장 통제

경로가 달라도 서명·시뮬레이터·Pods 샌드박스는 동시에 건드리면 깨질 수 있어, 패턴 하나를 문서화하세요.

  • 중앙 큐다중 노드 배포·태스크 큐 동기화처럼 Redis·RabbitMQ·OpenClaw 태스크 패브릭에서 레인당 소비자를 Xcode 구간에서는 1로 캡합니다.
  • 협력적 flock — 공유 NFS·APFS에 /build-locks/ios.signing.lock을 두고 타임아웃 있는 flock을 씁니다. 만료·정리는 flock 빌드 큐 FAQ를 참고하세요.

락 범위는 게이트웨이 rate limit·세션 동시성과 맞춰 CI가 서명 슬롯 하나인데 세션만 스무 개 열지 않도록 하세요.

OpenClaw가 빌드 요약을 만든다

CI 로그 전체 대신 게이트웨이 OpenClaw 태스크에 종료 코드·패키지 목록·mesh_node_id·시간·첫 실패 힌트만 넘기고, 짧은 불릿·provider URL로 렌더링합니다.

path filter JSON을 컨텍스트에 넣고, xcresult는 실패 슬라이스만. 녹색 빌드는 정적 템플릿으로 지연을 고정하세요.

요약에 시크릿을 넣지 마세요. 자격 증명은 credential_id나 잡 이름으로만 가리킵니다. 큐 쪽 재시도 규율은 태스크 큐·재시도 단계와 함께 설계하세요.

Slack Incoming Webhook: 실질 최소 권한

Incoming Webhook URL은 베어러 비밀입니다. 0440·커밋 금지·POST는 게이트웨이만, 러너는 큐로 이벤트만.

이그레스는 hooks.slack.com만 허용하고, 자동화 전 게이트웨이에서 curl로 검증합니다.

export SLACK_URL="$(sudo cat /etc/openclaw/secrets.d/slack/build-summary.url)"
curl -sS -X POST -H 'Content-Type: application/json' \
  -d '{"text":"MeshMac 프로브 OK ('"$(hostname -s)"')"}' "$SLACK_URL"

노드별 최소 권한·디렉터리 레이아웃은 MeshMac 노드 시크릿·최소 권한과 동일하게 맞추면 로테이션이 단순해집니다. 앱·봇 토큰으로 넘어가도 단일 송신자 원칙은 유지하세요.

실패 백오프(그리고 재시도하지 않을 때)

429·일시 5xx는 지수 백오프·전체 지터·상한(예 2분·5회). Retry-After 준수.

400·404는 수정 후에만 재시도. provider_run_id+결론으로 72h 멱등.

게이트웨이·토큰 로테이션 요약표

표면 무엇을 돌릴지 힌트
OpenClaw 게이트웨이 TLS 인증서·키 또는 ACME 진행 중 웹훅을 끊지 않게 프록시 리로드. Nginx·Caddy 매트릭스
Slack Incoming Webhook 전체 URL(새 통합) 전환기에 이중 URL로 잠깐 병행 후 Slack UI에서 구 URL 폐기
CI → 게이트웨이 HMAC 공유 서명 비밀 버전 교차 기간을 두고 미서명 POST는 엣지에서 거절
Git 읽기 토큰 PAT 또는 GitHub App 설치 monorepo에 contents:read

로드밸런서 뒤 게이트웨이면 드레인·헬스를 로드밸런싱·페일오버 단계와 맞춰 Slack 전달이 반쯤만 나가지 않게 하세요.

FAQ

이미 증분인데 락을 생략해도 되나요?
증분은 컴파일 부하만 줄입니다. 서명·시뮬레이터·전역 캐시 경합은 남으므로 해당 구간만이라도 좁게 잠급니다.
녹색 빌드마다 LLM을 돌려야 하나요?
아니요. 성공은 이모지·소요·패키지 목록 정적 템플릿으로 충분하고, 실패나 모호한 로그에만 모델 호출을 쓰면 됩니다.
Incoming Webhook은 곧 없어지나요?
Slack은 앱 기반을 권장하지만 내부 CI에서는 여전히 흔합니다. 여기서는 최소 파이프라인을 막지 않고, 나중에 앱 토큰으로 이전할 여지만 남기면 됩니다.

한 줄 정리

path filter큐 또는 flock증분 빌드OpenClaw 요약게이트웨이만 Slack유한 백오프·멱등. 오후 스프린트 하나로 재현하고 한 주 안에 운영 규율을 다듬기 좋은 최소 루프입니다.

MeshMac 빌더를 늘릴수록 시크릿은 한 곳에만

monorepo 큐 깊이에 맞춰 노드를 고르시려면 플랜·패키지가격로그인 없이 비교해 보세요. SSH·VNC·게이트웨이 온보딩은 도움말, ·블로그도 계정 없이 열람할 수 있습니다.