Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension


Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
3 changes: 1 addition & 2 deletions .github/ISSUE_TEMPLATE/issue-template.md
Original file line number Diff line number Diff line change
@@ -1,11 +1,10 @@
---
name: Issue Template
about: 이슈를 생성할 때 사용해주세요.
title: "[type] "
title: '[type] '
labels: ''
assignees: ''
type: Feature

---

## 📄 이슈 설명
Expand Down
42 changes: 42 additions & 0 deletions .github/workflows/front-deploy.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,42 @@
name: Frontend Deploy

on:
push:
branches: [main]
# main에 머지(push)될 때 실행

jobs:
deploy:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- run: corepack enable
# package.json의 packageManager 버전(yarn berry)으로 자동 전환

- uses: actions/setup-node@v4
with:
node-version: 22
cache: yarn

- run: yarn install --immutable
- run: yarn build
Comment thread
coderabbitai[bot] marked this conversation as resolved.
# dist/ 폴더 생성

- uses: aws-actions/configure-aws-credentials@v4
with:
aws-access-key-id: ${{ secrets.AWS_ACCESS_KEY_ID }}
aws-secret-access-key: ${{ secrets.AWS_SECRET_ACCESS_KEY }}
aws-region: ${{ secrets.AWS_REGION }}
# GitHub Secrets에 저장한 AWS 키로 인증
Comment thread
2seb2 marked this conversation as resolved.

- name: S3 업로드
run: aws s3 sync dist/ s3://${{ secrets.S3_BUCKET }} --delete
# dist/ 폴더를 S3에 동기화
# --delete: S3에만 있고 dist/에 없는 파일은 삭제 (이전 빌드 파일 정리)

- name: CloudFront 캐시 무효화
run: |
aws cloudfront create-invalidation \
--distribution-id ${{ secrets.CLOUDFRONT_DISTRIBUTION_ID }} \
--paths "/*"
# 전체 캐시 무효화 → 사용자가 새 빌드 파일을 즉시 받을 수 있게
38 changes: 38 additions & 0 deletions .github/workflows/pr-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,38 @@
name: PR CI
# GitHub Actions 탭에 표시되는 이름

on:
pull_request:
# base branch 제한 없이 PR이면 CI 수행

jobs:
check:
runs-on: ubuntu-latest
# GitHub이 제공하는 우분투 서버에서 실행
steps:
- uses: actions/checkout@v4
# 레포 코드를 서버에 내려받기

- run: corepack enable
# package.json의 packageManager 버전(yarn berry)으로 자동 전환

- uses: actions/setup-node@v4
with:
node-version: 22
cache: yarn
# Node.js 22 설치, yarn 캐시 활성화 (두 번째 실행부터 빠름)

- run: yarn install --immutable
# yarn.lock 기준으로 설치, lock 파일 변경 불가 (CI 안전장치)
Comment thread
coderabbitai[bot] marked this conversation as resolved.

- run: yarn lint
# ESLint 검사 (console.log 등 룰 위반 시 실패)

- run: yarn format:check
# Prettier 포맷 검사 (포맷 안 맞으면 실패)

- run: yarn build
# TypeScript 타입체크 + Vite 빌드 (둘 중 하나라도 실패하면 머지 불가)

# - run: yarn test
# 테스트 추가되면 활성화
4 changes: 4 additions & 0 deletions .prettierignore
Original file line number Diff line number Diff line change
@@ -0,0 +1,4 @@
dist
.yarn
.pnp.cjs
.pnp.loader.mjs
2 changes: 1 addition & 1 deletion eslint.config.js
Original file line number Diff line number Diff line change
Expand Up @@ -6,7 +6,7 @@ import tseslint from 'typescript-eslint';
import { defineConfig, globalIgnores } from 'eslint/config';

export default defineConfig([
globalIgnores(['dist']),
globalIgnores(['dist', '.yarn/', '.pnp.cjs', '.pnp.loader.mjs']),
{
files: ['**/*.{ts,tsx}'],
extends: [
Expand Down
1 change: 1 addition & 0 deletions package.json
Original file line number Diff line number Diff line change
Expand Up @@ -7,6 +7,7 @@
"dev": "vite",
"build": "tsc -b && vite build",
"lint": "eslint .",
"format:check": "prettier --check .",
"preview": "vite preview",
"prepare": "husky"
},
Expand Down
Loading