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
44 changes: 44 additions & 0 deletions .github/PULL_REQUEST_TEMPLATE.md
Original file line number Diff line number Diff line change
@@ -0,0 +1,44 @@
# 🚀 Pull Request

## 📝 PR 유형

<!-- 해당하는 유형에 'x'로 체크해주세요 -->

- [ ] 기능 추가 (Feature)
- [ ] 버그 수정 (Bug Fix)
- [ ] 코드 개선 (Refactoring)
- [ ] 문서 작업 (Docs)
- [ ] 환경 설정 (Configuration)
- [ ] 최종 점검 (Release Check)

---

## 🔍 변경 사항

<!-- 이 PR에서 무엇이 변경되었는지 간략하게 설명해주세요 -->

---

## 📸 스크린샷

<!-- UI 변경사항이 있다면 스크린샷을 첨부해주세요 -->

---

## 🚧 관련 이슈

<!-- 관련 이슈 번호가 있다면 적어주세요 (예: #123 또는 JIRA 키) -->

---

## 🛠️ 최종 배포 점검 리스트

- [ ] 주요 기능 동작 확인
- [ ] 빌드/배포 환경 점검
- [ ] 문서/설정 검토

---

## ✅ 최종 배포 점검 결과

<!-- 점검 결과 및 특이사항을 적어주세요 -->
86 changes: 86 additions & 0 deletions .github/workflows/frontend-ci.yml
Original file line number Diff line number Diff line change
@@ -0,0 +1,86 @@
name: Frontend-CI

on:
pull_request:
branches: [main, develop]
push:
branches:
- "Feature/*"
- "Fix/*"
- "Chore/*"
- "Docs/*"
- "Test/*"
- "Refactor/*"

concurrency:
group: ${{ github.workflow }}-${{ github.ref }}
cancel-in-progress: true

env:
NODE_VERSION: "20.19.2"

jobs:
lint:
runs-on: ubuntu-latest
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v4
with:
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: ${{ runner.os }}-pnpm-
- run: pnpm install --frozen-lockfile
- run: pnpm run lint --if-present
Comment on lines +41 to +42

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P0] Lint job fails due to misplaced --if-present flag

The lint job calls pnpm run lint --if-present, but in pnpm the --if-present option must precede the script name (pnpm run --if-present lint). As written, pnpm executes the lint script and forwards --if-present to eslint, which rejects the unknown flag and exits with code 2. This causes every CI run to fail even when linting succeeds locally.

Useful? React with 👍 / 👎.


test:
runs-on: ubuntu-latest
needs: lint
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v4
with:
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: ${{ runner.os }}-pnpm-
- run: pnpm install --frozen-lockfile
- run: pnpm run test --if-present -- --ci
Comment on lines +63 to +64

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

[P0] Test job cannot skip missing script

The test step also places --if-present after the script (pnpm run test --if-present -- --ci). Because pnpm treats --if-present as an argument to the script, the command fails with Missing script: test when no test script is defined, so the workflow errors even when tests are intentionally absent. To make the step optional, the flag needs to appear before the script name or the step should handle the absence explicitly.

Useful? React with 👍 / 👎.


build:
runs-on: ubuntu-latest
needs: test
steps:
- uses: actions/checkout@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- uses: pnpm/action-setup@v4
with:
run_install: false
- name: Get pnpm store directory
id: pnpm-cache
run: echo "STORE_PATH=$(pnpm store path)" >> $GITHUB_OUTPUT
- uses: actions/cache@v4
with:
path: ${{ steps.pnpm-cache.outputs.STORE_PATH }}
key: ${{ runner.os }}-pnpm-${{ hashFiles('pnpm-lock.yaml') }}
restore-keys: ${{ runner.os }}-pnpm-
- run: pnpm install --frozen-lockfile
- run: pnpm run build
Loading