- 分支管理新增「分支 / 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>
38 lines
2.1 KiB
Markdown
38 lines
2.1 KiB
Markdown
# 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
|
|
|
|
```bash
|
|
./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
|