feat: Phase 1 mobile tablet — Jenkins APK, PC tab, in-app update

Capacitor 확장으로 git push 시 Mobile Jenkins 빌드, PC 탭 Android/iPad 다운로드,
앱 내 APK 업데이트, iOS TestFlight API 및 Capacitor ios 프로젝트를 추가한다.

Co-authored-by: Cursor <cursoragent@cursor.com>
This commit is contained in:
Macbook
2026-06-14 16:31:55 +09:00
parent 36c06b55ea
commit f34104b721
38 changed files with 1468 additions and 15 deletions
+38
View File
@@ -0,0 +1,38 @@
# iPad — Capacitor iOS / TestFlight
## 사전 요구
- macOS + Xcode
- Apple Developer Program ($99/년)
- CocoaPods: `brew install cocoapods`
## iOS 프로젝트 생성 (최초 1회)
```bash
cd app
npm run cap:sync
npx cap add ios
npx cap open ios
```
Xcode에서 **Signing & Capabilities** → Team 선택, Bundle ID `com.goldenchart.app`.
## TestFlight 업로드
1. Xcode → Product → Archive
2. Organizer → Distribute App → App Store Connect → Upload
3. App Store Connect → TestFlight → 내부/외부 테스터 초대
4. 초대 URL을 서버 `.env`에 설정:
```env
GC_MOBILE_APP_IOS_TESTFLIGHT_URL=https://testflight.apple.com/join/XXXXXXXX
```
5. `docker compose up -d --no-deps backend` (또는 deploy)
PC 프로그램 탭과 `/api/mobile-app/info``iosTestFlightUrl`에 반영됩니다.
## 참고
- App Store/TestFlight 배포 앱은 **ipa 직접 다운로드·앱 내 APK식 updater 불가**
- iPad와 iPhone은 동일 iOS 빌드 사용 가능 (UI 반응형)
+61
View File
@@ -0,0 +1,61 @@
# 모바일·태블릿 Phase 1 — Capacitor 확장 (A)
## 스택 결정
| 항목 | 선택 |
|------|------|
| 단기 경로 | **1단계 A — Capacitor 확장** (`app/`) |
| 장기(선택) | 2단계 B — Tauri Mobile 이전 (미착수) |
| Android 패드 | 동일 APK (반응형 UI) |
| iPad | TestFlight 링크 (ipa 직접 다운로드·앱 내 updater 불가) |
Phase 1 목표: 데스크톱과 동일한 **git push → CI 빌드 → 다운로드 허브** 흐름을 Android에 맞추고, PC 프로그램 탭에서 Android·iPad를 함께 제공한다.
## 파이프라인
```
git push main
→ post-receive (deploy.sh)
→ trigger-mobile-jenkins-build.sh
→ jenkins-mobile-pipeline.sh
→ build-mobile-apk.sh
→ data/mobile-releases/goldenchart-android.apk
→ GC_MOBILE_APP_VERSION (.env)
```
## 다운로드 UI
**PC 프로그램** 탭 (`AppDownloadModal`):
- macOS (.dmg) — 기존
- Windows (.exe) — 기존
- Android 패드/폰 (.apk) — `/api/mobile-app/info`
- iPad (TestFlight) — `GC_MOBILE_APP_IOS_TESTFLIGHT_URL` 링크
## Android 앱 내 업데이트
- 시작 시 `/api/mobile-app/info` 버전 vs `@capacitor/app` `version`
- 새 버전이면 APK 다운로드 URL 열기 (재설치)
## iPad / TestFlight
1. Mac + Xcode + Apple Developer Program
2. `cd app && npm run cap:sync && npx cap open ios`
3. Archive → TestFlight 업로드
4. 서버 `.env`: `GC_MOBILE_APP_IOS_TESTFLIGHT_URL=https://testflight.apple.com/join/...`
## Jenkins 설치 (서버 1회)
```bash
./scripts/server-install-mobile-jenkins.sh
# .env 예시
# GC_MOBILE_JENKINS_TRIGGER_TOKEN=goldenchart-mobile-build
```
## 환경 변수
| 변수 | 설명 |
|------|------|
| `GC_MOBILE_APP_VERSION` | 웹·API 표시 버전 |
| `GC_MOBILE_APP_IOS_TESTFLIGHT_URL` | iPad TestFlight 초대 URL |
| `GC_MOBILE_JENKINS_*` | Jenkins mobile job (desktop과 동일 패턴) |