mirror of
https://gh-proxy.org/https://github.com/klinsmaya/SQLBot.git
synced 2026-11-08 01:06:59 +08:00
79 lines
4.0 KiB
Markdown
79 lines
4.0 KiB
Markdown
# 打包与发布 Agent 说明
|
||
|
||
## 产物组成
|
||
|
||
运行镜像由多个阶段组成:
|
||
|
||
1. 前端构建:`frontend/` 执行 `npm install` 和 `npm run build`,产物进入 `/opt/sqlbot/frontend/dist`。
|
||
2. 后端构建:复制 `backend/`,使用 base 镜像中的 uv 安装依赖。以根 `Dockerfile` 为准:中间层包含 `uv sync --frozen` 尝试,最终层执行 `uv sync --extra cpu`,不是全程冻结安装。`uv.lock` 不入库,不能据此承诺全新 checkout 的依赖可复现;`|| echo` 的提示也不能证明失败只因缺少 lock,需检查实际构建日志。
|
||
3. 图表服务构建:复制 `g2-ssr/app.js`、`package.json` 和 `charts/`,安装 Node 依赖和 canvas 相关库。
|
||
4. 运行层:基于含 PostgreSQL / Python 的 base 镜像,复制前端、后端、g2-ssr、字体、向量模型和启动脚本。
|
||
5. 启动脚本依次准备 PostgreSQL、supervisor/g2-ssr、MCP 服务和主 FastAPI 服务。
|
||
|
||
修改路径、端口、依赖或构建脚本时,必须核对最终运行目录仍是 `/opt/sqlbot` 布局,且数据、图片、日志和字体路径没有断开。
|
||
|
||
## 本地验证
|
||
|
||
普通代码任务不要默认构建镜像;Docker 构建需要外部镜像、模型资源和较长耗时。任务已要求镜像或部署验收时,构建属于验证范围,明确目标平台后执行;仅需接口或浏览器验证时优先启动必要的隔离服务,不自动扩大为镜像构建。
|
||
|
||
可以做的轻量检查:
|
||
|
||
```bash
|
||
cd frontend
|
||
npm run build
|
||
```
|
||
|
||
```bash
|
||
cd backend
|
||
uv run pytest -q
|
||
```
|
||
|
||
```bash
|
||
node --check g2-ssr/app.js
|
||
node --check g2-ssr/charts/<changed-file.js>
|
||
```
|
||
|
||
修改 Dockerfile 或 installer 后,至少人工追踪:
|
||
|
||
- COPY 源路径和目标路径;
|
||
- 构建阶段产物是否被运行层复制;
|
||
- `start.sh` 启动顺序和健康检查端口;
|
||
- `8000` / `8001` / `3000` / `5432` 的用途;
|
||
- excel、file、images、logs、PostgreSQL 数据挂载;
|
||
- `installer/sqlbot/templates/sqlbot.conf` 中的环境变量仍然存在且默认值安全。
|
||
|
||
## GitHub Actions
|
||
|
||
| 工作流 | 用途 | 关键输入 |
|
||
| --- | --- | --- |
|
||
| `build-base-and-push` | 构建 PostgreSQL / Python base 镜像 | tag、架构、registry、是否 latest |
|
||
| `build-and-push` | 构建 SQLBot 主镜像 | tag、架构、registry、是否 latest |
|
||
| `package-and-push` | 构建 CE/EE 在线与离线安装包 | SQLBot tag、架构、registry、是否 EE |
|
||
| `Build Wheels Universal` | 从主仓库触发 xpack 多平台 wheel 构建 | xpack 分支、平台矩阵、是否发布、TestPyPI/PyPI |
|
||
| `Typos Check` | push 和 PR 的拼写检查 | — |
|
||
| `Synchronize to Gitee` | push 时同步镜像到 Gitee | — |
|
||
| `Sync to CNB` | 手动同步到 CNB | — |
|
||
|
||
规则:
|
||
|
||
- 根 `Dockerfile` 的构建阶段还依赖 `registry.cn-qingdao.aliyuncs.com/dataease/sqlbot-base:latest`,该镜像不在本仓库工作流中构建(外部维护);`build-base-and-push` 只产出 `sqlbot-python-pg` base 镜像。
|
||
- 这些工作流都是发布/分发流程,不要因为普通代码修改建议运行。
|
||
- `latest` 只应在正式发布时启用。
|
||
- arm64 和 amd64 的依赖、驱动和包名必须同时考虑。
|
||
- 离线包会替换 `SQLBOT_TAG` 并生成 version 文件;不要在源码里提交生成后的 tag。
|
||
- xpack 工作流会 checkout 独立仓库;不要把本地 `sqlbot-xpack/` 目录当作它的输入。
|
||
|
||
## 发布顺序
|
||
|
||
1. 主仓库功能和测试完成。
|
||
2. 若涉及 xpack:
|
||
1. xpack 独立仓库完成实现、版本提升(经使用者确认)和静态构建;
|
||
2. 发布目标 wheel;
|
||
3. 主仓库更新 `backend/pyproject.toml` 版本范围,`uv sync` 重锁本机 lock 并安装新 wheel 后重新验证。
|
||
3. 确认迁移、默认配置和 installer 模板兼容。
|
||
4. 构建 base 镜像(仅在 base 变更时)。
|
||
5. 构建主镜像。
|
||
6. 构建在线 / 离线安装包。
|
||
|
||
发布版本号、镜像 tag、离线包名、backend 包版本和 Git tag 必须由使用者明确确认。agent 不要自行发布、上传、打 tag 或推送。
|