docs(CI): 품질 게이트·브랜치 보호 PR 워크플로 문서화
Spotless/JaCoCo/ESLint/커버리지 게이트와 로컬 교정법, main 보호 규칙과 학생 PR 실습 흐름을 CI.md에 정리. Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
63f34aa025
commit
daf3e9ac09
28
deploy/CI.md
28
deploy/CI.md
@ -69,8 +69,34 @@ bash deploy/smoke-test.sh
|
||||
> **권장 배포 흐름**: 빌드 → 업로드 → `docker compose up` → **`bash deploy/smoke-test.sh`**.
|
||||
> 스모크가 빨간불이면 배포에 문제가 있는 것이니 바로 롤백/수정한다.
|
||||
|
||||
## 품질 게이트 (push/PR마다 자동 검사)
|
||||
|
||||
CI가 통과해야 하는 관문이 아래처럼 늘었다. **로컬에서 먼저 돌려 보고 밀면** 빨간불을 피한다.
|
||||
|
||||
| 게이트 | 무엇을 막나 | 로컬에서 고치는 법 |
|
||||
|---|---|---|
|
||||
| Spotless(백엔드) | 안 쓰는 import·줄끝 공백·파일끝 개행 | `cd backend && mvn spotless:apply` |
|
||||
| JaCoCo(백엔드) | 라인 커버리지 30% 미만으로 **후퇴** | 테스트 추가 (`mvn test` 후 `target/site/jacoco/index.html`) |
|
||||
| ESLint(프론트) | 안 쓰는 변수·없는 전역·React 훅 오용 | `cd frontend && npm run lint` |
|
||||
| 커버리지(프론트) | 채점 로직 `runSql.js` 40% 미만 | `npm run coverage` 로 확인 후 테스트 보강 |
|
||||
|
||||
> 커버리지 바닥(30%/40%)은 "지금보다 나빠지지 마라"는 **래칫(ratchet)**이다.
|
||||
> 테스트를 늘리면 이 숫자도 함께 올려 바닥을 끌어올리는 게 건강한 흐름.
|
||||
|
||||
## main 브랜치 보호 (PR 워크플로)
|
||||
|
||||
`main`은 보호 규칙이 걸려 있다(Gitea → 저장소 설정 → 브랜치):
|
||||
- **CI 두 개(backend-test·frontend-build)가 초록불이어야** merge 가능
|
||||
- **PR에 승인 1개 필요** (멘토가 학생 PR을 리뷰·승인)
|
||||
- 학생은 `main`에 직접 push 불가 → **브랜치 만들어 PR** 여는 흐름을 익힌다
|
||||
- 운영·배포용으로 관리자 계정만 직접 push 허용(화이트리스트)
|
||||
|
||||
학생 실습 흐름: `git switch -c feat/내작업` → 커밋 → push → Gitea에서 PR 생성 →
|
||||
CI 초록불 + 멘토 승인 → merge. (실무 표준 흐름을 그대로 경험)
|
||||
|
||||
## 다음 개선 (학생 티켓)
|
||||
|
||||
- Maven·npm 캐시로 CI 실행 시간 단축
|
||||
- main 브랜치 보호(테스트 통과해야 merge)
|
||||
- 커버리지 바닥을 단계적으로 상향(30%→40%→…)
|
||||
- 스모크 테스트를 배포 스크립트에 자동 편입(deploy 후 자동 실행·실패 시 알림)
|
||||
- E2E 테스트(Playwright: 로그인→강좌→퀴즈)
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user