✨ 주요 개선사항: - 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>
10 KiB
10 KiB
앱 스토어 배포 자동화 가이드
개요
Zellyy Finance 앱의 Google Play Store와 Apple App Store 자동 배포 시스템 설정 가이드입니다. GitHub Actions를 통해 빌드부터 스토어 업로드까지 완전 자동화됩니다.
지원 플랫폼
Android - Google Play Store
- 트랙: Internal Testing (내부 테스트)
- 파일 형식: AAB (Android App Bundle)
- 자동 업로드: main 브랜치 빌드 시
- API: Google Play Console API
iOS - App Store Connect
- 트랙: TestFlight (베타 테스트)
- 파일 형식: IPA
- 자동 업로드: main 브랜치 빌드 시
- API: App Store Connect API
사전 준비 사항
1. Google Play Store 설정
1.1 Google Cloud Console 설정
- Google Cloud Console에 접속
- 새 프로젝트 생성 또는 기존 프로젝트 선택
- Google Play Developer Reporting API 활성화
- 서비스 계정 생성:
- IAM & Admin > 서비스 계정
- "서비스 계정 만들기" 클릭
- 이름:
zellyy-finance-ci - 역할: 없음 (Google Play Console에서 설정)
1.2 Google Play Console 설정
- Google Play Console에 접속
- 새 앱 생성:
- 앱 이름:
Zellyy Finance - 패키지명:
com.zellyy.finance - 언어: 한국어
- 앱 이름:
- API 액세스 설정:
- 설정 > API 액세스
- 서비스 계정 연결
- 위에서 생성한 서비스 계정 선택
- 권한: 앱 정보 보기 및 편집, 릴리즈 관리
1.3 서비스 계정 키 생성
# Google Cloud Console에서
1. IAM & Admin > 서비스 계정
2. 생성한 서비스 계정 클릭
3. "키" 탭 > "키 추가" > "새 키 만들기"
4. JSON 형식 선택
5. 다운로드된 JSON 파일 내용을 GitHub Secrets에 저장
2. Apple App Store 설정
2.1 Apple Developer Account 준비
- Apple Developer 계정 필요
- App Store Connect 접근 권한
- 연간 개발자 등록비 $99 납부
2.2 App Store Connect 앱 생성
- App Store Connect에 접속
- 새 앱 생성:
- 이름:
Zellyy Finance - Bundle ID:
com.zellyy.finance - SKU:
zellyy-finance - 언어: 한국어
- 이름:
2.3 API 키 생성
- App Store Connect > 사용자 및 액세스
- 키 탭 > "+" 버튼
- 키 이름:
Zellyy Finance CI/CD - 액세스: Developer (또는 App Manager)
- 생성 후 다음 정보 저장:
- Issuer ID
- Key ID
- Private Key (.p8 파일)
2.4 인증서 및 프로비저닝 프로파일
# iOS 배포 인증서 생성
1. Apple Developer > Certificates
2. "+" > iOS Distribution (App Store and Ad Hoc)
3. CSR 파일 업로드
4. 인증서 다운로드 (.cer)
# 프로비저닝 프로파일 생성
1. Apple Developer > Profiles
2. "+" > iOS App Store
3. App ID 선택: com.zellyy.finance
4. 인증서 선택: 위에서 생성한 배포 인증서
5. 프로파일 다운로드 (.mobileprovision)
GitHub Secrets 설정
1. Repository Settings
GitHub Repository > Settings > Secrets and Variables > Actions
2. Android 관련 Secrets
| Secret 이름 | 설명 | 값 |
|---|---|---|
GOOGLE_PLAY_SERVICE_ACCOUNT_JSON |
Google Play API 서비스 계정 JSON | Google Cloud Console에서 다운로드한 JSON 파일 전체 내용 |
3. iOS 관련 Secrets
| Secret 이름 | 설명 | 값 |
|---|---|---|
APPSTORE_ISSUER_ID |
App Store Connect API Issuer ID | App Store Connect API 키 생성 시 표시된 Issuer ID |
APPSTORE_KEY_ID |
App Store Connect API Key ID | API 키 생성 시 표시된 Key ID |
APPSTORE_PRIVATE_KEY |
App Store Connect API Private Key | .p8 파일의 전체 내용 (헤더/푸터 포함) |
4. 코드 서명 Secrets (기존 문서 참조)
| Secret 이름 | 설명 |
|---|---|
ANDROID_KEYSTORE_BASE64 |
Android 키스토어 파일 (base64) |
ANDROID_KEYSTORE_PASSWORD |
키스토어 비밀번호 |
ANDROID_KEY_PASSWORD |
키 비밀번호 |
ANDROID_KEY_ALIAS |
키 별칭 |
IOS_CERTIFICATES_P12_BASE64 |
iOS 배포 인증서 P12 (base64) |
IOS_CERTIFICATES_P12_PASSWORD |
P12 파일 비밀번호 |
배포 트랙 설정
1. Google Play Store 트랙
Internal Testing (내부 테스트)
- 목적: 개발팀 내부 테스트
- 승인: 즉시 (Google 승인 불필요)
- 테스터: 최대 100명
- 자동 업로드: ✅ 활성화됨
Alpha/Beta Testing (미래 계획)
# 향후 Alpha/Beta 트랙 추가 시
track: alpha # 또는 beta
Production (프로덕션)
# 안정성 검증 후 수동으로 프로덕션 배포
track: production
inAppUpdatePriority: 3
userFraction: 1.0
2. App Store Connect 트랙
TestFlight (베타 테스트)
- 목적: 베타 테스터 배포
- 승인: Apple 자동 승인 (보통 24시간 이내)
- 테스터: 최대 10,000명
- 자동 업로드: ✅ 활성화됨
App Store (프로덕션)
- 목적: 일반 사용자 배포
- 승인: Apple 수동 심사 (2-7일)
- 배포: 수동 릴리즈 필요
자동 배포 워크플로우
1. 트리거 조건
# 자동 배포가 실행되는 조건
on:
push:
branches: [main] # main 브랜치 푸시
tags: ['v*'] # 버전 태그 푸시
workflow_dispatch: # 수동 실행
2. 배포 흐름
코드 푸시 → 테스트 → 빌드 → 버전 태그 → 스토어 업로드 → 알림
3. 배포 단계별 상세
Stage 1: 빌드 및 서명
- Android AAB 생성 (서명 포함)
- iOS IPA 생성 (서명 포함)
- 아티팩트 저장
Stage 2: 스토어 업로드
- Google Play: Internal Testing 트랙 업로드
- TestFlight: 베타 테스트 업로드
Stage 3: 결과 알림
- Slack 알림 (성공/실패)
- GitHub 이슈 생성 (실패 시)
- 이메일 알림 (선택사항)
릴리즈 노트 자동 생성
1. 커밋 메시지 기반 생성
# Conventional Commits 사용
feat: 새로운 거래 필터링 기능 추가
fix: 로그인 세션 만료 문제 수정
perf: 차트 렌더링 성능 50% 개선
2. 릴리즈 노트 형식
# Zellyy Finance v1.2.0
## ✨ 새로운 기능
- 거래 내역 고급 필터링
- 다크 모드 지원
## 🐛 버그 수정
- 로그인 세션 안정성 개선
- 차트 데이터 로딩 오류 수정
## ⚡ 성능 개선
- 앱 시작 시간 30% 단축
- 메모리 사용량 최적화
3. 스토어별 릴리즈 노트
Google Play Store
- 최대 길이: 500자
- 언어: 한국어
- 자동 적용: ✅
App Store Connect
- 최대 길이: 4000자
- 언어: 한국어
- 자동 적용: ✅
배포 후 검증
1. 자동 검증
# GitHub Actions에서 자동 실행
- 스토어 업로드 성공 확인
- 버전 번호 일치 확인
- 릴리즈 노트 적용 확인
2. 수동 검증
# 개발팀에서 수행
1. Google Play Console에서 Internal Testing 트랙 확인
2. TestFlight에서 베타 빌드 확인
3. 실제 디바이스에서 앱 설치 테스트
4. 주요 기능 동작 확인
트러블슈팅
1. Google Play Store 업로드 실패
오류: "Package name already exists"
해결:
1. 기존 앱이 있는지 Google Play Console 확인
2. 패키지명 중복 확인 (com.zellyy.finance)
3. 다른 개발자 계정에서 사용 중인지 확인
오류: "Version code too low"
해결:
1. android/app/build.gradle의 versionCode 확인
2. semantic-release로 자동 증가하는지 확인
3. 수동으로 버전 코드 증가
오류: "API access denied"
해결:
1. Google Play Console에서 API 액세스 확인
2. 서비스 계정 권한 확인
3. JSON 키 파일 재생성
2. App Store Connect 업로드 실패
오류: "Invalid provisioning profile"
해결:
1. Apple Developer에서 프로비저닝 프로파일 재생성
2. 인증서 유효성 확인
3. Bundle ID 일치 확인 (com.zellyy.finance)
오류: "API key invalid"
해결:
1. App Store Connect에서 API 키 재생성
2. Issuer ID, Key ID 재확인
3. P8 파일 전체 내용 확인 (헤더/푸터 포함)
오류: "Build processing timeout"
해결:
1. Apple 서버 상태 확인
2. 15-30분 후 재시도
3. 빌드 크기 최적화
3. 일반적인 배포 문제
빌드 아티팩트 누락
해결:
1. GitHub Actions 아티팩트 저장 확인
2. 빌드 단계 성공 여부 확인
3. 파일 경로 올바른지 확인
버전 동기화 오류
해결:
1. npm run version:sync 실행
2. semantic-release 설정 확인
3. package.json 버전 확인
모니터링 및 알림
1. 배포 상태 모니터링
# GitHub Actions에서 제공
- 실시간 배포 진행 상황
- 각 단계별 성공/실패 상태
- 상세 로그 및 오류 메시지
2. 스토어 상태 확인
# Google Play Console
- Internal Testing 트랙 상태
- 리뷰 진행 상황
- 다운로드 통계
# App Store Connect
- TestFlight 베타 상태
- 리뷰 진행 상황
- 크래시 리포트
3. 알림 채널
# 즉시 알림
- Slack #deployments 채널
- 이메일 (선택사항)
- GitHub 이슈 (실패 시)
# 정기 리포트
- 주간 배포 요약
- 월간 스토어 통계
- 분기별 성과 분석
보안 고려사항
1. API 키 관리
- GitHub Secrets에 안전하게 저장
- 정기적인 키 로테이션 (6개월마다)
- 최소 권한 원칙 적용
2. 코드 서명 인증서
- P12 파일 안전한 저장
- 인증서 만료일 추적 (Apple: 1년, Android: 25년)
- 백업 및 복구 계획
3. 접근 권한 관리
- 배포 권한은 핵심 개발자만
- API 키 접근 로그 모니터링
- 의심스러운 활동 알림
확장 계획
1. 추가 트랙 지원
# Google Play Store
- Alpha Testing 트랙
- Beta Testing 트랙
- Production 자동 배포
# App Store
- App Store 자동 배포
- 단계적 출시 (Phased Release)
2. 고급 기능
- A/B 테스트 자동화
- 스토어 메타데이터 관리
- 스크린샷 자동 업로드
- 다국어 릴리즈 노트
이 가이드는 Zellyy Finance 앱의 완전 자동화된 스토어 배포 시스템 구축을 위한 종합 참조 문서입니다.