ci: Gitea Actions로 push 시 자동 테스트 게이트 추가 (OP-02)
- .gitea/workflows/ci.yml: push/PR마다 백엔드 mvn test + 프론트 npm build 자동 실행 - Gitea Actions 활성화(compose GITEA__actions__ENABLED) + act_runner 등록(별도 컨테이너, deploy_default 네트워크, host-gateway로 job이 Gitea clone 가능) - 방금 같은 회귀(보안헤더로 문서 깨짐 등)를 배포 전 자동으로 잡는 안전망. 학생 티켓 OP-02를 실물로 구현 — 'CI가 왜 필요한가'의 살아있는 예제 Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
This commit is contained in:
parent
9ae3cf2709
commit
bf4b6955e3
54
.gitea/workflows/ci.yml
Normal file
54
.gitea/workflows/ci.yml
Normal file
@ -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
|
||||||
@ -90,6 +90,7 @@ services:
|
|||||||
GITEA__server__SSH_PORT: "222"
|
GITEA__server__SSH_PORT: "222"
|
||||||
GITEA__service__DISABLE_REGISTRATION: "false" # 학생 스스로 가입 가능
|
GITEA__service__DISABLE_REGISTRATION: "false" # 학생 스스로 가입 가능
|
||||||
GITEA__security__INSTALL_LOCK: "true" # 웹 설치 마법사 건너뛰기(설정은 env로 완료)
|
GITEA__security__INSTALL_LOCK: "true" # 웹 설치 마법사 건너뛰기(설정은 env로 완료)
|
||||||
|
GITEA__actions__ENABLED: "true" # CI — Gitea Actions(push 시 자동 테스트) 켜기
|
||||||
ports:
|
ports:
|
||||||
- "3000:3000" # 웹 UI + HTTP clone/push
|
- "3000:3000" # 웹 UI + HTTP clone/push
|
||||||
- "222:22" # SSH clone/push (선택)
|
- "222:22" # SSH clone/push (선택)
|
||||||
|
|||||||
Loading…
x
Reference in New Issue
Block a user