fix: promote 실패 시 거짓 성공 방지 + 기본 소스 이름 프로젝트 고유화(공용 클러스터 충돌 예방) (v0.29.0)

- bin/yakcloud: promote 의 리컨실(deploy.py) 실패면 '✓ 승격 완료' 대신 die(운영 승인 대기 403 안내 포함).
  set -e 미사용이라 이전엔 배포 차단돼도 성공으로 표시되던 버그.
- yakcloud.yaml: 기본 소스 이름 appdb→my-app-db(init 이 <project>-db 로 치환). 공용 클러스터에서
  리컨실이 동명 기존 소스를 재사용·바인딩 → 남의 DB 에 테이블 만드는 사고 예방.
- deploy.py: 기존 소스 재사용 시 로그를 ⚠ 로 강화(공유 위험·고유 이름 권고 명시).

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
jungwoo choi
2026-08-31 15:01:26 +09:00
parent 63021f63b2
commit 6ffc6425bb
3 changed files with 14 additions and 6 deletions

View File

@ -109,7 +109,10 @@ def reconcile_source(req: dict) -> str | None:
if cur and cur != mode:
log(f"⚠ source '{name}' 은 이미 mode={cur} 로 존재 → 매니페스트 mode={mode} 는 무시(재프로비저닝 안 함). "
f"바꾸려면 삭제 후 재배포: 'yakcloud source rm {name}'.")
log(f"source '{name}' ({stype}) 이미 READY → 스킵 (id={match['id']})")
log(f"source '{name}' ({stype}) 이미 READY → 재사용·바인딩 (id={match['id']}). "
f"본인 프로젝트가 만든 소스면 정상이나, 공용 클러스터라면 '다른 프로젝트의 소스'일 수 있음 "
f"— 이 앱의 마이그레이션이 그 소스(DB)에 테이블을 만든다. 전용이 필요하면 매니페스트에서 "
f"프로젝트 고유 이름(예: <project>-db)으로 바꿔 재배포하라.")
return match["id"]
if DRY:
if match: