docs: CLAUDE.md 푸시 정책 트리거 워드 기반으로 개편

- "개발서버 푸시" / "운영서버 푸시" 트리거 워드 추가
- 운영서버 푸시 시 main 최신화 → merge → push → develop 동기화 절차 명시
- 브랜치 동기화 규칙 추가 (충돌 방지)
- 푸시 대상 자동 판별 규칙 추가
This commit is contained in:
김보곤
2026-02-25 15:36:58 +09:00
parent 007277d401
commit d44b99d5e4

View File

@@ -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) 업데이트