From d44b99d5e43975435cf5365f788da1978c753a99 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=EA=B9=80=EB=B3=B4=EA=B3=A4?= Date: Wed, 25 Feb 2026 15:36:58 +0900 Subject: [PATCH] =?UTF-8?q?docs:=20CLAUDE.md=20=ED=91=B8=EC=8B=9C=20?= =?UTF-8?q?=EC=A0=95=EC=B1=85=20=ED=8A=B8=EB=A6=AC=EA=B1=B0=20=EC=9B=8C?= =?UTF-8?q?=EB=93=9C=20=EA=B8=B0=EB=B0=98=EC=9C=BC=EB=A1=9C=20=EA=B0=9C?= =?UTF-8?q?=ED=8E=B8?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit - "개발서버 푸시" / "운영서버 푸시" 트리거 워드 추가 - 운영서버 푸시 시 main 최신화 → merge → push → develop 동기화 절차 명시 - 브랜치 동기화 규칙 추가 (충돌 방지) - 푸시 대상 자동 판별 규칙 추가 --- CLAUDE.md | 97 +++++++++++++++++++++++++++++++++++++++++++++++-------- 1 file changed, 83 insertions(+), 14 deletions(-) diff --git a/CLAUDE.md b/CLAUDE.md index 15c72aa..24a0249 100644 --- a/CLAUDE.md +++ b/CLAUDE.md @@ -81,11 +81,67 @@ fix: [auth] 로그인 시 세션 만료 오류 수정 - Git hooks로 자동 제거됨 - 간결하고 명확한 한글 커밋 메시지만 유지 -### 푸시 정책 +### 푸시 정책 (트리거 워드 기반) -- **사용자가 수동으로 푸시 진행** -- 자동 푸시 하지 않음 -- 커밋 후 푸시 여부를 묻지 않음 +> 기본 정책: 커밋 후 자동 푸시하지 않음. **사용자가 트리거 워드를 말할 때만** 푸시 실행. + +#### 트리거: "개발서버 푸시" + +사용자가 **"개발서버 푸시"**라고 말하면 다음을 자동 실행: + +1. 각 프로젝트(`api`, `mng`, `react`)에서 `git status` 확인 +2. 커밋되지 않은 변경사항이 있으면 커밋 규칙에 따라 커밋 +3. 현재 브랜치가 `develop`인지 확인 (아니면 `develop`으로 전환) +4. `git push origin develop` 실행 (변경사항 있는 프로젝트만) +5. 결과 요약 출력 + +```bash +# 변경사항 있는 프로젝트만 실행 +cd /home/aweso/sam/api && git push origin develop +cd /home/aweso/sam/mng && git push origin develop +cd /home/aweso/sam/react && git push origin develop +``` + +> Jenkins가 Gitea Webhook으로 개발 서버에 자동 배포한다. + +#### 트리거: "운영서버 푸시" + +사용자가 **"운영서버 푸시"**라고 말하면 다음을 자동 실행: + +> **전제**: develop의 변경사항이 개발 서버에서 테스트 완료된 상태 + +1. 각 프로젝트에서 develop에 미푸시 커밋 확인 → 있으면 먼저 `git push origin develop` +2. `git checkout main` (또는 `master` — 프로젝트별 메인 브랜치명 확인) +3. `git pull origin main` — **최신화 (충돌 방지 핵심 단계)** +4. `git merge develop` — develop 내용을 main에 머지 +5. 충돌 발생 시 → 사용자에게 알리고 해결 지원 +6. `git push origin main` — Jenkins가 운영 서버에 자동 배포 +7. `git checkout develop` — 작업 브랜치로 복귀 +8. `git merge main` — **develop에 main 동기화 (향후 충돌 방지)** +9. 결과 요약 출력 + +```bash +# 변경사항 있는 프로젝트만 실행 +cd /home/aweso/sam/api +git checkout main && git pull origin main && git merge develop +git push origin main +git checkout develop && git merge main + +cd /home/aweso/sam/mng +git checkout master && git pull origin master && git merge develop +git push origin master +git checkout develop && git merge master +``` + +> **중요**: 3번(main 최신화) 없이 머지하면 충돌 발생. 8번(develop 동기화) 없이 작업하면 다음 운영 푸시 시 충돌 누적. + +#### 푸시 대상 자동 판별 + +| 조건 | 동작 | +|------|------| +| 현재 작업 디렉토리가 특정 프로젝트 | 해당 프로젝트만 푸시 | +| `sam/` 루트이거나 명시 없음 | 3개 프로젝트 모두 확인 후 변경사항 있는 것만 푸시 | +| 사용자가 프로젝트 지정 ("api 개발서버 푸시") | 지정된 프로젝트만 푸시 | ### Claude Code 설정 파일도 커밋 대상 @@ -457,7 +513,7 @@ PHP, Laravel, Node.js 등이 **Docker 컨테이너 안에** 설치되어 있다. |--------|--------------|----------|----------| | React (사용자) | `dev.sam.kr` | `dev.codebridge-x.com` | `codebridge-x.com` | | API | `api.sam.kr` | `api.dev.codebridge-x.com` | `api.codebridge-x.com` | -| MNG (관리자) | `mng.sam.kr` | `mng.dev.codebridge-x.com` | `mng.codebridge-x.com` | +| MNG (관리자) | `mng.sam.kr` | `admin.codebridge-x.com` | `mng.codebridge-x.com` | | Sales | `sales.sam.kr` | `sales.dev.codebridge-x.com` | `sales.codebridge-x.com` | | 5130 (레거시) | `5130.sam.kr` | — | — | @@ -506,18 +562,31 @@ docker exec sam-mng-1 php artisan cache:clear ### 브랜치 전략 -| 브랜치 | 배포 대상 | 트리거 | 승인 | -|--------|----------|--------|------| +| 브랜치 | 배포 대상 | 트리거 워드 | Jenkins 배포 | +|--------|----------|------------|-------------| | `feature/*` | — | — | — | -| `develop` | 개발 서버 (`dev.codebridge-x.com`) | Push 시 자동 배포 | 불필요 | -| `main`/`master` | 운영 서버 (`codebridge-x.com`) | PR 머지 시 Jenkins 배포 | 팀장 승인 필수 | +| `develop` | 개발 서버 (`dev.codebridge-x.com`) | **"개발서버 푸시"** | Push 시 자동 | +| `main`/`master` | 운영 서버 (`codebridge-x.com`) | **"운영서버 푸시"** | Push 시 자동 | ``` -feature/* ──→ develop ──→ main/master - (push) (PR merge) - ↓ ↓ - 개발 서버 운영 서버 - (자동 배포) (Jenkins CI/CD) +로컬 작업 → develop push → 개발 서버 테스트 → main merge+push → 운영 서버 + ("개발서버 푸시") ("운영서버 푸시") +``` + +### 브랜치 동기화 규칙 (필수) + +> **main → develop 방향 최신화를 주기적으로 수행해야 충돌을 방지한다.** + +| 상황 | 조치 | +|------|------| +| "운영서버 푸시" 완료 후 | 자동으로 develop에 main 머지 (절차에 포함됨) | +| main에 직접 변경 발생 시 | develop에서 `git merge main` 실행 | +| develop에서 새 작업 시작 전 | `git pull origin develop`으로 최신화 확인 | + +``` +main ──변경──→ main + │ +develop ←── git merge main ──┘ (동기화 필수) ``` ### 로컬 환경 (Docker) 업데이트