NAS 정식 스택과 배포 파이프라인 도구를 고정
This commit is contained in:
parent
f1b80676c1
commit
d6d9dc5f61
8 changed files with 812 additions and 1 deletions
70
docs/ops/deployment-pipeline.md
Normal file
70
docs/ops/deployment-pipeline.md
Normal file
|
|
@ -0,0 +1,70 @@
|
|||
# 배포 파이프라인 (Deployment Pipeline)
|
||||
|
||||
> 작성: 2026-08-31 · 문서 소유: docs/ops (SSOT 방향)
|
||||
> 상태: **초기 이관 완료 / NAS 자동배포 구성 잔여**
|
||||
|
||||
## 목표 아키텍처 (소유자 지시)
|
||||
|
||||
```
|
||||
이 PC(개발 워크스테이션)
|
||||
│ push (master)
|
||||
▼
|
||||
Forgejo git.chanpaca.net ────── 소스 SSOT (이관 완료 2026-08-31)
|
||||
│ ├─ 미러(백업) ── github.com (private 유지) [현행 origin]
|
||||
│ └─ 배포 ──▶ NAS Production (vignette-prod)
|
||||
│ docker-compose.nas.yml (SSOT-host=nas, runtime-class=production)
|
||||
│
|
||||
Cloudflare = 서비스 공개 서빙용만 유지 (tunnel 제거 대상)
|
||||
```
|
||||
|
||||
- 나는 이 PC를 **개발 전용**으로만 사용한다. 배포 대상은 반드시 **NAS Production**이다.
|
||||
- github.com은 **private**로 백업/미러만 유지한다 (제거 아님).
|
||||
- git 관리·배포 파이프라인은 **git.chanpaca.net (Forgejo)** 이 소유한다.
|
||||
|
||||
## 1. 저장소 (소스 SSOT)
|
||||
|
||||
| 원격 | URL | 역할 | 상태 |
|
||||
|---|---|---|---|
|
||||
| `origin` | https://github.com/yunchan8804-blip/vignette.git | private 백업/미러 | 유지 |
|
||||
| `forgejo` | ssh://git@git.chanpaca.net:2222/yunchan/vignette.git | **소스 SSOT·배포** | ✅ 이관 완료 |
|
||||
|
||||
- Forgejo 레포: `yunchan/vignette` (id 14, public, default master)
|
||||
- 이관 기준 커밋: `be08c0b5` (master 최신, 로컬 HEAD와 일치)
|
||||
- Forgejo 접근: SSH 키(`~/.ssh/id_ed25519`, Host `git.chanpaca.net` → `192.168.0.38:2222`) · API 토큰(`infra/.env.deploy`의 `FORGEJO_API_TOKEN`, gitignore)
|
||||
|
||||
## 2. 로컬 브랜치 규칙
|
||||
|
||||
- `master` = Forgejo `master`와 동기화 (배포 기준선)
|
||||
- 기능/scoped 브랜치 = 개발용, 검증 후 master로 합침
|
||||
|
||||
## 3. NAS Production 배포 흐름 (구성 예정)
|
||||
|
||||
```
|
||||
[이 PC] git push forgejo master
|
||||
▼
|
||||
[Forgejo] master = be08c0b5 (SSOT)
|
||||
▼
|
||||
[NAS 192.168.0.38] git pull origin master (vignette-prod 소스)
|
||||
▼ docker compose -f docker-compose.nas.yml up -d --build
|
||||
vignette-prod (api/web/engine/db/proxy) 재기동
|
||||
▼
|
||||
[Cloudflare] 서빙 (api-vignette.chanpaca.net / vignette.chanpaca.net)
|
||||
```
|
||||
|
||||
NAS 배포는 Forgejo에서 직접 pull하는 방식으로 전환하고, cloudflare tunnel에 의존하지 않는다.
|
||||
|
||||
## 4. 검증 게이트 (배포 전)
|
||||
|
||||
- `apps/web`: `npm run typecheck`, `npm run build`
|
||||
- `apps/api`: 관련 test suite
|
||||
- SSOT checker `scripts/test_dev_dashboard_ssot.py`
|
||||
- Forgejo master == 로컬 master (배포 무결성)
|
||||
- NAS: `docker compose ps` healthy, `/api/health` ok·db/engine true
|
||||
|
||||
## 5. 남은 구성 작업 (TODO)
|
||||
|
||||
- [ ] Forgejo master를 기준으로 NAS 자동배포 스크립트/후크 구성 (또는 NAS에서 git pull)
|
||||
- [ ] `origin`(github) private 유지하나 Forgejo가 SSOT임을 문서·SSOT 대시보드에 반영
|
||||
- [ ] cloudflare tunnel 제거 (서빙용만 유지)
|
||||
- [ ] 배포 시 NAS 접근 자격(SSH 키/배포 계정)을 `.env.deploy`/시크릿으로 관리
|
||||
```
|
||||
Loading…
Add table
Add a link
Reference in a new issue