原来 master 与 develop 共用一条 release 轨,版本号和构建号绑在一起。 现改为每个上架分支各有一条轨道(轨道名即分支名),自测分支仍共用 feature 轨。 - 轨道记录新增 kind(release/feature),branch_track 存轨道名 - 旧的共用 release 轨及更早的单轨结构,加载时自动按上架分支拆开, 已用构建号原样复制,拆分后各分支从原来的号继续递增 - 构建号递增时跨上架轨取同一 App_Ver 的最大值 +1:App Store 的构建号 唯一性按 MARKETING_VERSION 全局判定,避免两分支同版本号时重号被拒 - 分支管理页轨道选择改为「上架(本分支独立版本号)/ 自测(共用)」, 打包设置页按上架分支分块填写版本号 Co-Authored-By: Claude Opus 5 <noreply@anthropic.com> Claude-Session: https://claude.ai/code/session_01BJaZ913U5GVdTkYHiRpvDU
1.8 KiB
1.8 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, tasksbackend/services/— build_service (packaging), build_queue (async queue), log_streamer (WebSocket)backend/deps.py— JWT auth dependency used by all protected routesbackend/config.py— loads .env, defines all config constantsfrontend/src/views/— BuildView, HistoryView, ConfigViewconfig.json— runtime config (apps, schemes, servers, upload, branches, versions) managed via web UI- Versions are per-track: each release branch (master, develop, …) has its own track named after the branch (build number auto-increments on App_Store), and all self-test branches share the
featuretrack (never increments); each branch's track name lives inconfig["branch_track"], track records inconfig["versions"]["tracks"]carrykind(release/feature)
Conventions
- All backend routes require JWT auth except
/api/auth/loginand/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), SQLitebuild_configtable (build settings) - Chinese UI and documentation throughout