# 로컬 배포 (GitHub CI 우회)

GitHub Actions 결제/한도 문제로 자동 배포가 막혔을 때, 로컬에서 직접 운영/스테이징 site 를 배포하는 스크립트.
**평소엔 GitHub push → CI 가 정상.** 이건 CI 가 막힌 동안의 백업 경로다.

## 무엇을 하나
`deploy-site.sh <env>` = GitHub CI 의 site 배포와 동일:
1. `origin/<env>` 브랜치 최신 받아 worktree 로 빌드 (로컬 미커밋 변경은 안 올라감). **앱은 `front/` 서브디렉토리.**
2. S3 의 `<env>.env` 받아 `front/` 에서 `npm run build`
3. S3 버킷에 sync (index.html 은 no-cache 로 별도)
4. 해당 CloudFront 배포 무효화 (`/*`)

> 버킷명이 env 마다 불규칙(stg=`s.insuniverse.com`, prod=`insuniverse-prod-site`)이라,
> 스크립트가 `.github/workflows/<env>.yml` 의 `S3_BUCKET`·`ENV_S3_URI` 를 직접 읽어 CI 와 항상 일치시킨다.

## 준비물
- **AWS 자격증명** — 배포 권한(S3 / CloudFront) 있는 프로파일. 기본값 `insuniverse-readonly`(쓰기 권한 있음).
  다른 프로파일이면 `AWS_PROFILE=xxx`.
- **node**, **npm**, **aws cli**, **git**, **bash**
- 리전 기본 `ap-northeast-2` (`AWS_REGION` 으로 변경)

## 사용
```bash
cd deploy
./deploy-site.sh stg     # 스테이징 → https://s.insuniverse.com
./deploy-site.sh prod    # 운영
```
배포할 코드는 **먼저 해당 브랜치(stg/prod)에 push** 되어 있어야 한다.

## 메모
- 빌드는 worktree(`/tmp/iu-site-<env>-deploy/front`)에서 하며 node_modules 는 메인 체크아웃의 `front/node_modules` 를 재사용(없으면 `npm install`).
- 빌드 로그: `/tmp/iu-site-build-<env>.log`
