修复 Server-Provision 按目标状态准备工具包

新增目标机已有 SpacetimeDB 与 otelcol-contrib 时复用本机安装的准备逻辑
补充 Prepare Provision Tools 传入 SPACETIME_ROOT,避免非默认路径检查错目录
新增 Server-Provision 工具准备回归检查脚本,防止已有工具时仍触发下载
更新开发运维文档与 Hermes 共享记忆,沉淀先检查目标机状态再准备文件的约定
This commit is contained in:
kdletters
2026-06-10 11:10:16 +08:00
parent 0baad9e022
commit 7aafb37f04
6 changed files with 176 additions and 4 deletions

View File

@@ -1314,6 +1314,14 @@
- 验证Jenkins 日志中 `Provision Target` 下的 `Prepare``Checkout Provision Files``Prepare Provision Tools``Provision Server` 都应运行在目标 dev / release agent日志不应出现 `stash 'server-provision-tools'`、目标阶段 `unstash``Git 主地址拉取失败...改用备用地址``https://git.genarrative.world/GenarrativeAI/Genarrative.git`
- 关联:`jenkins/Jenkinsfile.production-server-provision``scripts/prepare-server-provision-tools.sh``docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`
## Server-Provision 不要无条件下载工具包
- 现象:目标 dev / release 机器已经安装正确版本的 SpacetimeDB 或 `otelcol-contrib`,但 `Prepare Provision Tools` 仍每次下载 release tarball网络慢或 GitHub 不稳时会把服务器初始化卡在准备阶段。
- 原因:工具准备阶段如果只按“生成交付包”理解,会忽略它已经运行在目标部署 agent 上这一事实;此时目标机本地的 `/usr/local/bin/otelcol-contrib``${SPACETIME_ROOT}/bin/current` 就是可信状态源。
- 处理:`scripts/prepare-server-provision-tools.sh` 必须先检查目标机状态:`otelcol-contrib --version` 命中 `OTELCOL_VERSION` 时复制现有二进制;`spacetimedb-cli --version` 命中 `SPACETIME_EXPECTED_VERSION``SPACETIME_DOWNLOAD_ROOT` 推导出的版本且 standalone 同时存在时,复制 `${SPACETIME_ROOT}/bin` 并生成 wrapper。只有缺失、不可执行或版本不匹配时才查 `PROVISION_DOWNLOADS_DIR` 或下载源。
- 验证:运行 `bash scripts/check-server-provision-tools.sh`Jenkins 日志应先出现“检查目标机 ...”,已有版本命中时出现“复用目标机已有 ...”,且不出现“下载 ...”。
- 关联:`scripts/prepare-server-provision-tools.sh``jenkins/Jenkinsfile.production-server-provision``docs/【开发运维】本地开发验证与生产运维-2026-05-15.md`
## 个人任务 scope 不得扩成 work/site/module
- 现象:个人任务配置为 `work` / `site` / `module` 后进度串桶或静默按 0 处理。