diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml new file mode 100644 index 0000000..90ed1a1 --- /dev/null +++ b/.gitea/workflows/ci.yml @@ -0,0 +1,54 @@ +# 이 파일이 하는 일: push/PR 때마다 자동으로 백엔드 테스트 + 프론트 빌드를 돌리는 CI. +# 학습 포인트 — CI(지속적 통합)는 "사람이 깜빡해도 기계가 대신 검사하는 안전망"이다. +# 누가 코드를 밀 때마다 Gitea Actions 러너가 이 순서를 실행하고, 하나라도 실패하면 +# 빨간 X로 알려 준다. 실제로 있었던 회귀(보안헤더로 문서 깨짐 등)를 조기에 잡는 그물이다. +# Gitea Actions는 GitHub Actions와 문법이 거의 같다 — 배운 걸 GitHub에서도 그대로 쓴다. +name: CI + +on: + push: + pull_request: + +jobs: + # ── 백엔드: 단위 테스트 (규칙이 깨지면 여기서 빨간불) ── + backend-test: + runs-on: ubuntu-latest + steps: + - name: 코드 받기 + uses: actions/checkout@v4 + + - name: Java 21 준비 + uses: actions/setup-java@v4 + with: + distribution: temurin + java-version: "21" + + # mvnw 래퍼가 없어서 Maven을 내려받아 쓴다(작고 빠르다). + - name: Maven 설치 + run: | + curl -fsSL https://dlcdn.apache.org/maven/maven-3/3.9.9/binaries/apache-maven-3.9.9-bin.tar.gz -o /tmp/mvn.tgz + tar xzf /tmp/mvn.tgz -C /opt + echo "/opt/apache-maven-3.9.9/bin" >> "$GITHUB_PATH" + + - name: 백엔드 테스트 실행 + run: | + cd backend + mvn -B -q test + + # ── 프론트: 빌드 (JSX 문법 오류·깨진 import를 잡는다) ── + frontend-build: + runs-on: ubuntu-latest + steps: + - name: 코드 받기 + uses: actions/checkout@v4 + + - name: Node 22 준비 + uses: actions/setup-node@v4 + with: + node-version: "22" + + - name: 의존성 설치 + 빌드 + run: | + cd frontend + npm ci + npm run build diff --git a/deploy/docker-compose.prod.yml b/deploy/docker-compose.prod.yml index 12c4ae5..b3627d1 100644 --- a/deploy/docker-compose.prod.yml +++ b/deploy/docker-compose.prod.yml @@ -90,6 +90,7 @@ services: GITEA__server__SSH_PORT: "222" GITEA__service__DISABLE_REGISTRATION: "false" # 학생 스스로 가입 가능 GITEA__security__INSTALL_LOCK: "true" # 웹 설치 마법사 건너뛰기(설정은 env로 완료) + GITEA__actions__ENABLED: "true" # CI — Gitea Actions(push 시 자동 테스트) 켜기 ports: - "3000:3000" # 웹 UI + HTTP clone/push - "222:22" # SSH clone/push (선택)