feat: 强化打包配置与服务安全
This commit is contained in:
@@ -7,6 +7,7 @@
|
||||
- [环境要求](#环境要求)
|
||||
- [快速开始](#快速开始)
|
||||
- [配置说明](#配置说明)
|
||||
- [公网部署](#公网部署)
|
||||
- [服务管理](#服务管理)
|
||||
- [多用户管理](#多用户管理)
|
||||
- [Watchdog 健康监测](#watchdog-健康监测)
|
||||
@@ -72,11 +73,11 @@ ADMIN_PASSWORD=your_secure_password
|
||||
|
||||
启动后访问 `http://<服务器IP>:8000` 即可使用。
|
||||
|
||||
### 4.(可选)初始化分支源码目录
|
||||
### 4.(可选)初始化源码目录
|
||||
|
||||
系统现在默认直接从分支源码目录打包,每个分支对应 `GIT_SOURCE_BASE` 下的一个子目录。
|
||||
配置 `GIT_REMOTE_URL` 后,系统默认使用唯一的共享源码目录 `GIT_SOURCE_DIR`。任务会串行执行拉取、切分支、清理和复制,复制完成后在各自的打包目录中并行构建。
|
||||
|
||||
如果已配置 `GIT_REMOTE_URL`,首次打包某个分支时会自动 clone;如果未配置,则需要先手动准备分支目录:
|
||||
未配置远程仓库时,需要继续手动准备每个分支目录:
|
||||
|
||||
```bash
|
||||
# 创建分支源码根目录
|
||||
@@ -86,7 +87,7 @@ mkdir -p /path/to/ReadoorBranches
|
||||
git clone -b main git@github.com:org/repo.git /path/to/ReadoorBranches/main
|
||||
```
|
||||
|
||||
如果已配置 `GIT_REMOTE_URL`,其他分支无需手动 clone,首次打包时会自动拉取。
|
||||
配置远程仓库时,无需手动 clone;首次打包会初始化共享目录。
|
||||
|
||||
### 5.(可选)启用健康监测
|
||||
|
||||
@@ -110,9 +111,12 @@ git clone -b main git@github.com:org/repo.git /path/to/ReadoorBranches/main
|
||||
|
||||
| 变量 | 示例 | 说明 |
|
||||
|------|------|------|
|
||||
| `GIT_SOURCE_BASE` | `/Users/shen/Work/Code/iOSBuildServer/ReadoorBranches` | 分支源码根目录,每个分支一个子目录,仅提供 iOS 工程源码 |
|
||||
| `GIT_SOURCE_BASE` | `/Users/shen/Work/Code/iOSBuildServer/ReadoorBranches` | 人工维护模式下的分支源码根目录 |
|
||||
| `GIT_SOURCE_DIR` | `/Users/shen/Work/Code/iOSBuildServer/ReadoorBranches/workspace` | 配置远程仓库时唯一的共享源码工作目录 |
|
||||
| `BUILD_BASE_DIR` | `/Users/shen/Work/Code/iOSBuildServer/build` | 打包产物输出基础目录 |
|
||||
| `GIT_REMOTE_URL` | `git@github.com:org/repo.git` | 远程仓库地址,分支目录不存在时自动 clone |
|
||||
| `GIT_REMOTE_URL` | `git@github.com:org/repo.git` | 远程仓库地址,首次构建时自动初始化共享源码目录 |
|
||||
|
||||
私有仓库请创建仅有 `read_repository` 权限的 Personal Access Token,并配置为 `GIT_PASSWORD`;`GIT_USERNAME` 使用该 Token 所属账号。不要在 `.env`、`config.json` 或 Git 仓库中保存账号登录密码。
|
||||
|
||||
### 服务配置
|
||||
|
||||
@@ -123,6 +127,25 @@ git clone -b main git@github.com:org/repo.git /path/to/ReadoorBranches/main
|
||||
| `ADMIN_PASSWORD` | `admin123` | 初始管理员密码 |
|
||||
| `JWT_SECRET` | `ios-build-server-secret-key-change-in-production` | JWT 签名密钥(生产环境务必修改) |
|
||||
|
||||
## 公网部署
|
||||
|
||||
不要将 Uvicorn 端口直接暴露到公网。使用 Nginx 或 Caddy 提供 HTTPS,服务仅监听 `127.0.0.1`。项目提供了 [nginx.conf.example](/Users/shen/Work/Code/iOSBuildServer/deploy/nginx.conf.example) 作为模板。
|
||||
|
||||
公网 `.env` 至少需要如下配置:
|
||||
|
||||
```bash
|
||||
APP_ENV=production
|
||||
BIND_HOST=127.0.0.1
|
||||
JWT_SECRET=<至少 32 位随机字符串>
|
||||
ADMIN_PASSWORD=<至少 12 位强密码>
|
||||
CORS_ALLOWED_ORIGINS=https://build.example.com
|
||||
TRUSTED_HOSTS=build.example.com
|
||||
GIT_USERNAME=<只读 Token 所属账号>
|
||||
GIT_PASSWORD=<仅 read_repository 权限的 Personal Access Token>
|
||||
```
|
||||
|
||||
设置完成后执行 `chmod 600 .env`,并在云安全组和系统防火墙中只开放 `80/443`。`APP_ENV=production` 会在默认 JWT、弱管理员密码、通配 CORS 或未设置可信域名时拒绝启动。
|
||||
|
||||
### 打包配置
|
||||
|
||||
| 变量 | 默认值 | 说明 |
|
||||
@@ -541,22 +564,24 @@ cp .env.example .env
|
||||
|
||||
### Q: 如何按分支打包
|
||||
|
||||
1. 在 `.env` 中配置 `GIT_SOURCE_BASE` 和 `GIT_REMOTE_URL`
|
||||
1. 在 `.env` 中配置 `GIT_SOURCE_BASE`、`GIT_SOURCE_DIR` 和 `GIT_REMOTE_URL`
|
||||
2. 在管理页面「分支管理」中添加需要打包的分支(默认已有 `main`)
|
||||
3. 打包时在「代码分支」下拉框中选择分支
|
||||
4. 首次打包某个分支时会自动从远程 clone,后续打包会自动 `git pull` 更新
|
||||
5. 每个分支有独立的源码目录,支持并行打包不同分支
|
||||
4. 首次打包会初始化共享源码目录;每次任务会串行 `git fetch`、切换目标分支、清理并复制源码快照
|
||||
5. 快照复制完成后,依赖安装和 Xcode 打包仍在独立目录中并行执行
|
||||
|
||||
### Q: 分支目录占满磁盘怎么办
|
||||
### Q: 源码目录占满磁盘怎么办
|
||||
|
||||
```bash
|
||||
# 查看各分支目录大小
|
||||
du -sh /path/to/ReadoorBranches/*
|
||||
# 远程仓库模式下只有一个共享工作目录
|
||||
du -sh /path/to/ReadoorBranches/workspace
|
||||
|
||||
# 删除不用的分支目录
|
||||
rm -rf /path/to/ReadoorBranches/old-branch
|
||||
# 打包目录由 BUILD_DIR_RETENTION_HOURS 自动清理;可查看其占用
|
||||
du -sh /path/to/build/build_readoor_*
|
||||
```
|
||||
|
||||
共享工作目录由服务在每次打包前自动同步和清理。请勿在服务运行期间手动删除或修改该目录。
|
||||
|
||||
### Q: 如何运行测试
|
||||
|
||||
```bash
|
||||
|
||||
Reference in New Issue
Block a user