01핵심 리스크: gym 성공·업로드 실패·Webhook 무응답
릴리스 창에서는 exit 0만으로 성공을 정의하면 같은 야근이 반복됩니다. 메모리 피크·업로드 임계·구조화된 알림 없이는 재현이 불가능합니다.
- 리스크 1: SSH 끊김으로 xcodebuild 로그가 중간만 남고 코드 서명 오류가 랜덤처럼 보입니다.
- 리스크 2: TestFlight 처리 중 OpenClaw gateway와 두 번째 gym이 M4 16GB에서 스왑을 유발합니다.
- 리스크 3: CI가 exit code만 전달하고 Webhook에
summary가 없어 온콜이 30분 이상 소모됩니다.
02예산형 M4 16GB에서 Fastlane gym 메모리 피크
vuzcloud 현장 기준(단일 스킴·Release·dSYM 포함). openclaw gateway 병렬 시 1.5GB RAM 여유를 남기세요. Archive 전 sysctl hw.memsize 스크린샷을 남기면 24GB 승급 근거가 됩니다.
| 단계 | 16GB 피크 | 임계·안정 |
|---|---|---|
| DerivedData 예열 | 6–8 GB | 단일 레인 안정 |
| gym Archive 스파이크 | 10–12 GB | 시뮬레이터 병렬 금지 |
| 스왑 위험 | 14GB+ 지속 | 24GB 또는 분할 임대 |
03gym/xcodebuild 로그 파싱 필드(OpenClaw 슬라이스)
권장: bundle exec fastlane gym --verbose 2>&1 | tee ~/build-logs/gym.log — OpenClaw가 Webhook용 JSON을 만듭니다.
| 필드 | 로그 앵커 | 의사결정 |
|---|---|---|
| exit_signal | ARCHIVE FAILED / ** ARCHIVE SUCCEEDED ** |
빌드 vs 서명 단계 |
| signing_hint | Code Sign error, Provisioning profile |
키체인·프로파일 |
| target_line | 첫 error: 줄 |
Webhook 제목 |
| duration_sec | ▸ Archive~종료 |
gym 타임아웃 90분 |
Fastfile의 scheme·export_method를 같은 JSON에 넣으면 Slack에 전체 xcodebuild를 붙이지 않고 서명/컴파일을 구분할 수 있습니다.
04TestFlight 업로드 전 사전 점검·임계 표
매 TestFlight 업로드 전 아래 임계를 체크—컴플라이언스 한 항목이 수 시간을 잡아먹습니다.
- 버전:
CFBundleShortVersionString과 Connect 일치, 빌드 번호 +1 - 컴플라이언스: Export compliance·암호화·개인정보 URL
- 아티팩트: IPA 4GB 미만, Archive에 dSYM
- 서명: Distribution 유효,
security find-identity -v -p codesigning - 경로:
fastlane pilot upload또는 Transporter 런북—혼용 금지 - 네트워크: 시스템 디스크 30GB+ 여유, Connect RTT 중앙값 250ms 미만
05OpenClaw 게이트웨이 Webhook 실패 요약(최소 JSON)
게이트웨이는 OpenClaw 설치 매트릭스 참고. 실패 시 HTTPS POST:
pipeline:fastlane_gym|testflight_uploadnode_region: hk | sg | uswsummary: 280자 이내(signing_hint+target_line)log_tail_url: 격리 경로·Presigned URL—비밀 금지
06홍콩·싱가포르 vs 미서부 노드 RTT 요약
동아시아 터미널 P90 참고—자체 측정 필수. 배경: 아태·미서부 RTT 매트릭스.
| 경로 | 홍콩·싱가포르 | 미서부 |
|---|---|---|
| SSH 인터랙션 | 15–45 ms | 120–200 ms |
| Connect 업로드 | 태평양 변동 | 대형 IPA 안정(오프피크) |
| 분할 임계 | 인터랙션 P90 > 200ms → 빌드 미서부·리뷰 홍콩·싱가포르 | |
07통합 검수: gym부터 TestFlight 처리까지
① 구매에서 M4 16GB·리전 선택, 문서로 SSH, 디스크 30GB+ ② gym verbose 로그, ARCHIVE SUCCEEDED·IPA 경로 확인 ③ 사전 표 체크 후 pilot/Transporter, 타임아웃 45분 ④ OpenClaw pipeline:testflight_upload Webhook, Connect 빌드 표시 ⑤ IAP 회귀는 StoreKit 2 매트릭스—피크·RTT 스크린샷으로 승급 근거 보관
인용 1: gym 타임아웃 90분, 업로드 45분; 3회 지터 백오프 후 Webhook.
인용 2: Archive 중 SSD 65% 넘으면 일시 중지, 16GB에서 VNC 종료.
인용 3: 과금 5일 후 요금에서 주간 티어 확인.
08FAQ: 서명·타임아웃·Webhook
임대 Mac에서 gym 타임아웃? 키체인 잠금·DerivedData SSH 동기화·16GB 스왑—캐시 예열, 병렬 중단, 24GB 검토.
gym OK·TestFlight만 실패? 사전 표 후 pilot/Transporter 로그를 OpenClaw로 슬라이스.
Webhook 미수신? 게이트웨이 포트·TLS·Body 제한; curl POST 수동 테스트.
Provisioning profile does not match? Fastfile·Xcode·Connect의 Bundle ID 정렬, Distribution 프로파일 1개만 유지.
예산 M4 임대로 iOS 릴리스 파이프라인을 재현 가능하게
Transporter 실전·StoreKit 2를 이어 읽고, 홈에서 전체 제품을 확인한 뒤 요금에서 예산형 M4를 고르세요.