Node 22.12+ 고정 후 원격 Mac CI에서 openclaw config validate로 키를 막고 invalid-key 줄로 경로를 찍습니다. 핫 리로드 직후 두 번째 validate 필수. 일본어·중국어·롤백·인증·Azure 웹훅·목록. 요금·구매·고객 지원 로그인 불필요.
CI 게이트가 자주 무너지는 세 갈래
런타임 드리프트·핫 리로드 창·아티팩트 오염입니다. 러너 Node가 22.12 미만이면 먼저 빨간불, 리로드 직후엔 구워커가 옛 SecretRef를 쥐어 invalid-key가 남고, tarball에 키 실체가 들어가면 감사가 역위험이 됩니다. 같은 셸에서 doctor까지 한 파일로 묶어 단일 산출물을 남기세요.
검증 수단 짧은 판단표
| 관심사 | config validate | doctor·짧은 재시작 |
|---|---|---|
| 필수 키·스키마 | 비대화형 CI에 적합, 종료 코드로 게이트 | 경고·권한 드리프트, 수리는 별도 창에서만 |
| invalid-key | 표준 오류에 JSON 포인터·파일 경로가 자주 노출 | grep 결과와 plist EnvironmentVariables를 한 줄로 맞춤 |
| 핫 리로드 직후 | 두 번째 validate로 설정 파일과 런타임 상태를 재동기화 | 여전히 섞이면 수 초 재시작으로 구워커를 끊음 |
사전 조건 체크리스트
- Node 22.12+:스크립트 선두에서 소수 비교로 게이트.
- 2026.3.x 핀:
npm install -g openclaw@<태그>·openclaw --version로그 첫 줄. - tarball:
*.pem·*.key제외. - 핫 리로드:reload 직후
config validate두 번째 필수. - UID:CI 셸·plist·
HOME일치.
단계별 명령(위에서 아래로 고정)
node -v
node -e "const [a,b]=process.versions.node.split('.').map(Number); process.exit(a>22||a===22&&b>=12?0:1)"
tar -czf openclaw-checkpoint-pre.tar.gz \
--exclude='*.pem' --exclude='*.key' \
"${OPENCLAW_CONFIG_DIR:-$HOME/.openclaw}" 2>/dev/null || true
set -o pipefail openclaw config validate 2>&1 | tee openclaw-ci.log openclaw doctor 2>&1 | tee -a openclaw-ci.log grep -Ei 'invalid[-_]?key|INVALID_KEY' openclaw-ci.log || true
reload·짧은 재시작 뒤 config validate를 한 번 더 필수.
tarball·로그·마스킹된 변수명만 업로드.
흔한 오류 서명과 조사
invalid-key에 경로·포인터가 있으면 모델 키와 게이트웨이 키를 분리합니다. validate 초록·런타임만 빨강은 plist·셸 환경 불일치, 리로드 직후 간헐은 구워커—짧은 재시작 후 두 번째 로그를 첨부하세요.
CI 아티팩트 아카이브와의 연동
성공·실패 tarball 이름 규칙·보존 일수를 고정하고 로그엔 마스킹만 남깁니다. 실패 시 직전 성공 tarball과 diff로 변경 블록을 한 장 요약하세요. 업로드 단계·권한은 Argo CD 웹훅 요약 글과 같이 런북에 적습니다.
배포 전 반복 점검표
- Node 22.12+·
openclaw --version로그 상단. - 핫 리로드 후 두 번째 validate 녹색.
- 아티팩트에 키 확장자 없음.
- 실패 시 tarball 이름·보존 기한 티켓 기록.
인용 가능한 최소 증거 세 줄
node -v·openclaw --version·npm 태그.- grep한 invalid-key 한 줄·PR 링크.
- reload 전후 validate 로그 파일명.
현장 FAQ(짧게)
Q. validate 초록·배포 직후 invalid-key
A. plist·셸 UID 맞추고 재기동.
Q. grep에 옛 키
A. 두 번째 validate 이후 로그만.
Q. ZIP 보안 스캔 실패
A. 키 제외·env 전체 덤프 제거.
정리:검증을 심장에 두기
Node·CLI를 못 박고 config validate를 CI 심장에 두면 invalid-key는 한 줄 좌표가 됩니다. tarball·로그 아티팩트로 롤백과 감사를 같이 닫습니다.