Files
iOSBuildServer/CLAUDE.md
T
shenleiandClaude Opus 5 5582aadc09 feat: 支持按 Tag 打包,分支管理可添加 Tag
- 分支管理新增「分支 / Tag」类型选择,Tag 存于 config["tags"],与分支不可重名
- 每个 Tag 与分支一样拥有同名独立版本轨道,默认上架轨
- 打包页按「分支」「Tag」分组选择;任务新增 ref_type 字段记录引用类型
- Tag 打包时 fetch --tags --force 后以游离 HEAD 检出 refs/tags/<tag>
- 历史记录与下载页按类型显示「分支」或「Tag」

Co-Authored-By: Claude Opus 5 <noreply@anthropic.com>
2026-09-17 11:59:18 +09:00

2.1 KiB

iOS Build Server

FastAPI + Vue 3 iOS app auto-packaging service. Supports Ad_Hoc and App_Store builds with web UI, real-time logs, multi-user auth, and health monitoring.

Tech Stack

  • Backend: Python 3.9+, FastAPI, SQLAlchemy (SQLite), JWT auth
  • Frontend: Vue 3, Vite, Vue Router
  • Tests: pytest (backend), vitest (frontend)
  • Deploy: macOS launchd, deploy.sh management script

Key Commands

./start.sh              # Dev mode (backend + frontend hot reload)
./deploy.sh build       # Install deps + build frontend
./deploy.sh start/stop/restart/status
./deploy.sh test        # Run all tests (backend + frontend)

Architecture

  • backend/routers/ — API routes: auth, users, config, apps, tasks
  • backend/services/ — build_service (packaging), build_queue (async queue), log_streamer (WebSocket)
  • backend/deps.py — JWT auth dependency used by all protected routes
  • backend/config.py — loads .env, defines all config constants
  • frontend/src/views/ — BuildView, HistoryView, ConfigView
  • config.json — runtime config (apps, schemes, servers, upload, branches, versions) managed via web UI
  • Versions are per-branch: every branch owns a track in config["versions"]["tracks"], named after the branch (master/main keeps the historical name release); config["branch_track"] maps branch → track name, and each track's kind is release (build number auto-increments on App_Store) or feature (never increments)
  • Tags are buildable refs too: config["tags"] (names never collide with branches), tracked in branch_track like branches (default kind release); tasks store the name in branch plus ref_type (branch/tag), and tag builds check out refs/tags/<tag> detached

Conventions

  • All backend routes require JWT auth except /api/auth/login and /api/health
  • Admin-only routes: user management (/api/users/*) and all of /api/config/* except /api/config/apps*
  • Config stored in config.json (apps/schemes/servers), .env (infra), SQLite build_config table (build settings)
  • Chinese UI and documentation throughout