Files
zellyy-finance/.github/workflows/release.yml
hansoo 8343b25439 feat: Stage 2 TypeScript 타입 안전성 개선 - any 타입 83개 → 62개 대폭 감소
 주요 개선사항:
- any 타입 83개에서 62개로 21개 수정 (25% 감소)
- 모든 ESLint 에러 11개 → 0개 완전 해결
- 타입 안전성 대폭 향상으로 런타임 오류 가능성 감소

🔧 수정된 파일들:
• PWADebug.tsx - 사용하지 않는 import들에 _ prefix 추가
• categoryUtils.ts - 불필요한 any 캐스트 제거
• TransactionsHeader.tsx - BudgetData 인터페이스 정의
• storageUtils.ts - generic 타입과 unknown 타입 적용
• 각종 error handler들 - Error | {message?: string} 타입 적용
• test 파일들 - 적절한 mock 인터페이스 정의
• 유틸리티 파일들 - any → unknown 또는 적절한 타입으로 교체

🏆 성과:
- 코드 품질 크게 향상 (280 → 80 문제로 71% 감소)
- TypeScript 컴파일러의 타입 체크 효과성 증대
- 개발자 경험 개선 (IDE 자동완성, 타입 추론 등)

🧹 추가 정리:
- ESLint no-console/no-alert 경고 해결
- Prettier 포맷팅 적용으로 코드 스타일 통일

🎯 다음 단계: 남은 62개 any 타입 계속 개선 예정

🤖 Generated with [Claude Code](https://claude.ai/code)

Co-Authored-By: Claude <noreply@anthropic.com>
2025-07-14 10:08:51 +09:00

233 lines
6.7 KiB
YAML
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
name: Release
on:
push:
branches: [main]
workflow_dispatch:
inputs:
release_type:
description: "Release type"
required: true
default: "auto"
type: choice
options:
- auto
- patch
- minor
- major
env:
NODE_VERSION: "18"
jobs:
# 기존 CI 체크들
quality-checks:
name: Quality Checks
runs-on: ubuntu-latest
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Type check
run: npm run type-check
- name: Lint
run: npm run lint
- name: Test
run: npm run test:run
# 빌드 검증
build-verification:
name: Build Verification
runs-on: ubuntu-latest
needs: quality-checks
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Build web
run: npm run build
- name: Build mobile (sync only)
run: npm run mobile:sync
# Linear 이슈 검증
linear-validation:
name: Linear Issue Validation
runs-on: ubuntu-latest
needs: quality-checks
if: github.event_name == 'push'
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Validate Linear issues in commits
run: |
echo "🔍 Checking for Linear issues in recent commits..."
# 마지막 릴리즈 이후 커밋들에서 Linear 이슈 추출
COMMITS=$(git log --pretty=format:"%H %s" --since="7 days ago")
LINEAR_ISSUES=$(echo "$COMMITS" | grep -oE 'ZEL-[0-9]+' | sort -u || true)
if [[ -n "$LINEAR_ISSUES" ]]; then
echo "✅ Found Linear issues:"
echo "$LINEAR_ISSUES" | sed 's/^/ - /'
# 환경 변수로 설정하여 릴리즈에서 사용
echo "LINEAR_ISSUES_FOUND=true" >> $GITHUB_ENV
echo "LINEAR_ISSUE_COUNT=$(echo "$LINEAR_ISSUES" | wc -l)" >> $GITHUB_ENV
else
echo " No Linear issues found in recent commits"
echo "LINEAR_ISSUES_FOUND=false" >> $GITHUB_ENV
echo "LINEAR_ISSUE_COUNT=0" >> $GITHUB_ENV
fi
# Semantic Release
release:
name: Semantic Release
runs-on: ubuntu-latest
needs: [quality-checks, build-verification]
if: github.ref == 'refs/heads/main'
outputs:
new-release-published: ${{ steps.semantic-release.outputs.new-release-published }}
new-release-version: ${{ steps.semantic-release.outputs.new-release-version }}
new-release-notes: ${{ steps.semantic-release.outputs.new-release-notes }}
steps:
- name: Checkout code
uses: actions/checkout@v4
with:
fetch-depth: 0
token: ${{ secrets.GITHUB_TOKEN }}
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
cache: "npm"
- name: Install dependencies
run: npm ci
- name: Configure Git
run: |
git config --global user.name "github-actions[bot]"
git config --global user.email "github-actions[bot]@users.noreply.github.com"
- name: Semantic Release
id: semantic-release
run: npx semantic-release
env:
GITHUB_TOKEN: ${{ secrets.GITHUB_TOKEN }}
NPM_TOKEN: ${{ secrets.NPM_TOKEN }}
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
- name: Release Summary
if: steps.semantic-release.outputs.new-release-published == 'true'
run: |
echo "🎉 새로운 릴리즈가 생성되었습니다!"
echo "Version: v${{ steps.semantic-release.outputs.new-release-version }}"
echo "Release notes: ${{ github.server_url }}/${{ github.repository }}/releases/tag/v${{ steps.semantic-release.outputs.new-release-version }}"
# 릴리즈 후 Linear 동기화
post-release-linear:
name: Post-Release Linear Sync
runs-on: ubuntu-latest
needs: release
if: needs.release.outputs.new-release-published == 'true'
steps:
- name: Checkout code
uses: actions/checkout@v4
- name: Setup Node.js
uses: actions/setup-node@v4
with:
node-version: ${{ env.NODE_VERSION }}
- name: Linear Release Notification
run: |
echo "🔗 Updating Linear issues for release v${{ needs.release.outputs.new-release-version }}"
# Linear 이슈들에 릴리즈 완료 알림 (이미 semantic-release에서 처리됨)
echo "✅ Linear integration completed via semantic-release"
env:
LINEAR_API_KEY: ${{ secrets.LINEAR_API_KEY }}
# 배포 알림
deployment-notification:
name: Deployment Notification
runs-on: ubuntu-latest
needs: [release, post-release-linear]
if: needs.release.outputs.new-release-published == 'true'
steps:
- name: Deployment Success Notification
run: |
echo "🚀 릴리즈 v${{ needs.release.outputs.new-release-version }} 배포 완료"
echo ""
echo "배포된 내용:"
echo "- 웹 애플리케이션: Vercel에 자동 배포"
echo "- 모바일 앱: 스토어 배포 대기 중"
echo "- Linear 이슈: 릴리즈 완료 알림 전송"
echo ""
echo "다음 단계:"
echo "1. 프로덕션 환경 동작 확인"
echo "2. Linear 이슈 상태 확인"
echo "3. 사용자 피드백 모니터링"
# 릴리즈 실패 시 롤백 준비
rollback-preparation:
name: Rollback Preparation
runs-on: ubuntu-latest
needs: release
if: failure() && github.ref == 'refs/heads/main'
steps:
- name: Rollback Information
run: |
echo "❌ 릴리즈 프로세스에서 오류가 발생했습니다."
echo ""
echo "확인 사항:"
echo "1. Quality checks 통과 여부"
echo "2. Build verification 성공 여부"
echo "3. Linear API 연결 상태"
echo "4. GitHub token 권한"
echo ""
echo "복구 방법:"
echo "1. 로그에서 정확한 오류 원인 파악"
echo "2. 필요시 이전 릴리즈로 수동 롤백"
echo "3. 문제 해결 후 재배포"