Co-Authored-By: Claude Fable 5.1 <noreply@anthropic.com>
4.0 KiB
4.0 KiB
고객사 repo 구조 · 배포 루틴 (2026-09-22 정리)
고객사(GHE, SAML)는 repo 를 하나만 줌. 우리 팀 프로젝트 둘(ABAP_OPENCODE, CODE_ASSISTANT)을 그 안에 폴더로 나눠 넣음. 로컬 개발 repo(sqnotes)는 그대로 각각 씀 — 고객사 repo 는 "배포용 사본".
폴더
/www/abap-ito/ ← -12·-13 VM 둘 다 여기로 clone (https, 계정+PAT 저장됨)
README.md
abap-specgen/ ← ABAP_OPENCODE 전부 (git mv 로 옮겨 히스토리 유지)
.gitignore ← 원래 루트 것이 그대로 따라옴. 경로 패턴은 이 폴더 기준
web/deploy/bare/.env ← -13 설정 (bare 모드). git 밖
web/deploy/bare/run.sh ← -13 기동/중지/상태. "자기 위치 3단계 위" = abap-specgen/ 이 ROOT
bin/ logs/ run/ workspace/ web/BE/code/.venv … ← 런타임(git 밖). ROOT 밑에 있어야 run.sh 가 찾음
code-assistant/ ← CODE_ASSISTANT (zip 반입 → 우리 로컬 히스토리는 없음)
.gitignore
5_django_backend/.env ← -12 설정. git 밖
5_django_backend/deploy.sh ← -12 배포 한 방
5_django_backend/.venv, opencode/wiki, opencode/.opencode/node_modules ← git 밖
.env는 폴더마다 따로. 둘 다 gitignore. 커밋 전git status --short | grep '\.env$'가 비어야 함.-12(code-assistant) 와-13(abap-specgen) 은 서로 통신 안 함. 각자 GHE 만 봄.
배포 루틴
| VM | 명령 |
|---|---|
| -12 (code-assistant, 포트 8914→8080) | cd /www/abap-ito && git pull && cd code-assistant/5_django_backend && bash deploy.sh |
| -13 (abap-specgen, 포트 8918) | cd /www/abap-ito && git pull && bash abap-specgen/web/deploy/bare/run.sh restart |
-13 에서 git pull 이 "local changes would be overwritten" 로 막히면 서버에서 직접 고친 파일이 있는 것:
git diff > /tmp/p.patch && git checkout -- . && git pull && git apply /tmp/p.patch.
로컬 → 고객사 repo 로 코드 넣는 법 (code-assistant)
고객사 PC 는 우리 로컬 repo 에 못 붙음. 그래서 tracked 파일만 zip 으로 뽑아 덮어씀:
# 이 PC (CODE_ASSISTANT 루트)
git archive -o ~/Desktop/code-assistant_repo.zip --prefix=code-assistant/ HEAD
cp ~/Desktop/code-assistant_repo.zip ~/Desktop/code-assistant_repo.txt # 메일이 .zip 막음 → .txt 로
# 고객사 PC, repo 루트 (PowerShell — Git Bash 없음)
Rename-Item code-assistant_repo.txt code-assistant_repo.zip
Remove-Item -Recurse -Force code-assistant; Expand-Archive code-assistant_repo.zip -DestinationPath . -Force; Remove-Item code-assistant_repo.zip
git add -A; git status --short | Where-Object { $_ -match '\.env$' } # 비어야 함
git commit -m "code-assistant: <뭐 바꿨나>"; git push
그 다음 -12 배포 루틴. 앱(msi)은 별개 — 4_rust_tauri 빌드 → msi 를 1.2MB .txt 조각 4개로 → copy /b 로 합침.
2026-09-22 옮길 때 겪은 것
- Windows 에서
git mv cline …이 "rename failed" 반복 → 폴더 잠금(탐색기/VS Code/백신). 재부팅 후.git/index.lock지우고 재시도. - 한글 파일명 때문에
git ls-tree출력이"\355…"로 나옴 →git -c core.quotepath=false ls-tree, PowerShell 은Test-Path -LiteralPath. git mv는 tracked 만 옮김. untracked(.env, venv, node_modules, logs)는 옛 자리에 남음 → 손으로cp -a/mv.- venv 스크립트(
.venv/bin/uvicorn등) shebang 에 옛 절대경로 박혀 있음 →grep -rl 옛경로 .venv/bin | xargs sed -i 's#옛#새#g'. - 옛 프로세스가 포트(8080/8888/4096) 잡고 있어서 새 run.sh 가 "죽음" →
fuser -k 포트/tcp후 재기동. - 고객사 메일이
.zip첨부 자체를 막음 → 확장자만.txt로 바꾸면 통과(MD5 로 확인). - GHE 가 SAML 이라 https clone 은 비밀번호 대신 PAT(
ghp_…, Configure SSO → Authorize 필수). username 은~/.git-credentials에서 확인.