feat: update deployer

This commit is contained in:
2026-10-13 19:47:51 +08:00
parent 8390706df8
commit 0eefc52b44
8 changed files with 112 additions and 26 deletions
+3 -1
View File
@@ -20,6 +20,8 @@
- 测试默认在当前项目执行。也可以直接提供 Orca project id、项目名称或 terminal id;
tester 会自动解析 Agent、环境、项目和目录,写入 `local.yaml.agent`,并输出更新后的配置列表。
每轮测试会创建新的 terminal,结束后自动关闭;不会复用或关闭已有 terminal。
- 测试环境部署由 deployer 在本机 Compose 中触发;正式环境部署由本机 `~/code/app00`
项目的 fresh Agent terminal 触发,tester 不直接 SSH 或执行正式 Compose。
- 会动硬件、会改数据的用例带风险级别(`readonly` / `mutating` / `destructive`)。默认只跑最低档 `readonly`。要跑更高风险,需要你明确说,例如「风险到 mutating」;碰哪个子系统另由 `gate`(如 hardware / weld)控制。
## 使用示例
@@ -52,7 +54,7 @@
1. 用脚本读 `.pouch/tester/`,按分类统计或筛出你点名的用例,不会把整库塞进对话。
2. 改用例前先给你看将要写入的内容,你确认再保存。
3. 执行时:先解析并更新 Agent 配置,输出生效列表,再准备 Orca 项目并创建临时 terminal;脚本类、
3. 执行时:若用户要求准备环境,先按目标环境走 deployer 路由;再解析并更新 Agent 配置,输出生效列表,再准备 Orca 项目并创建临时 terminal;脚本类、
浏览器和移动模拟器都在该 Agent 环境中执行。
4. 超出你允许的风险级别会跳过,不会偷偷执行。
5. 无论测试成功、失败或异常,都会关闭本轮创建的 terminal;跑完给出按分类计数的
+3 -2
View File
@@ -4,7 +4,7 @@ description: >-
维护并执行项目黑盒测试目录(.pouch/tester):列出/增改用例,按分类或
id 跑脚本、浏览器或移动模拟器;支持用 Orca project id、项目名称或 terminal id
定位 Agent 执行环境并创建临时 terminal。触发词:/tester、列出测试、完善测试用例、
按分类测、跑 smoke、现场复测。
按分类测、跑 smoke、现场复测;测试环境由本机触发,正式环境由 app00 Agent terminal 委派部署。
默认风险最低档;local 配置的 HOST 默认是 127.0.0.1。
---
@@ -52,6 +52,7 @@ tester agent 配置。
- `automation=assisted|manual` 需要人在场:无人值守时记 `not-run`,不要自己代跑人工步骤。见 [concepts.md](references/concepts.md)。
- 浏览器、移动模拟器按 catalog `sessions` 初始化一次,同一次运行内复用。
- Agent、环境、项目目录和 Orca terminal 生命周期见 [execution.md](references/execution.md):可以从 project id/名称或 terminal id 自动解析,更新后输出配置列表;每轮都新建 terminal,结束后关闭本轮创建的 terminal,不复用或关闭已有 terminal。
- 环境准备见 [deployment.md](references/deployment.md):测试环境只调用 deployer 的本机 Compose 路径;正式环境只委派给本机 `~/code/app00` 的 fresh Agent terminal,tester 不直接 SSH 或执行生产 Compose。
- `HOST` 只表示被测服务地址;远程执行目标使用 `agent` 配置。目标目录必须已有项目内容,找不到 Orca 项目记录时直接登记已有目录;目录本身不存在时停止,不创建空项目。
- 环境失败(连不上、缺浏览器、下游超时、session 挂了)不是产品失败。
- 移动端运行必须先通过 [run.md](references/run.md) 的平台环境闸门;Android 与 iOS 分开探测。目标平台没有可用设备/模拟器时,先停止移动用例,记 `environment-fail`,并按 run.md 的模板引导用户补齐环境,不能只报一个失败状态。
@@ -108,4 +109,4 @@ python3 <skill-dir>/scripts/catalog.py show --root <project-root> --id <CASE_ID>
## 运行
读 [run.md](references/run.md) 和 [execution.md](references/execution.md)。先 `select` 得到命中列表,再按 agent 解析目标项目、目录和 Agent,更新配置并输出生效列表,随后创建临时 terminal 并按 driver 分流。未指定范围时等同「tag=smoke 且风险上限=默认且 automation=automated」。`select` 的 `run_together` 组按 [run.md](references/run.md) 整组执行。移动端还要先识别目标平台并完成 Android 或 iOS 环境闸门;闸门未通过时输出对应的用户引导,不继续猜测或代跑。无论运行结果如何,结束前关闭本轮创建的 terminal。
读 [run.md](references/run.md)、[execution.md](references/execution.md) 和 [deployment.md](references/deployment.md)。若本轮要求准备环境,先按目标环境完成部署,再 `select` 得到命中列表;测试环境由本机 deployer 触发,正式环境由 app00 Agent terminal 委派。随后按 agent 解析目标项目、目录和 Agent,更新配置并输出生效列表,创建测试用临时 terminal 并按 driver 分流。未指定范围时等同「tag=smoke 且风险上限=默认且 automation=automated」。`select` 的 `run_together` 组按 [run.md](references/run.md) 整组执行。移动端还要先识别目标平台并完成 Android 或 iOS 环境闸门;闸门未通过时输出对应的用户引导,不继续猜测或代跑。无论部署或测试成功、失败、超时还是中断,都要清理各自本轮创建的 terminal。
+25
View File
@@ -0,0 +1,25 @@
# tester 环境部署路由
tester 只负责测试,不直接实现部署。用户要求“先布环境/更新镜像再测”时,先加载
deployer skill,并严格按目标环境选择路径:
| 目标环境 | 执行路径 | 禁止事项 |
|---|---|---|
| `test` | 在项目 `.pouch/deployer/test/` 的本机 Compose 中触发镜像更新/重建,再做健康检查 | SSH、`sync.py`、`remote.py`、把测试环境委派给生产 Agent |
| `prod` | 使用 deployer 的 [production-agent.md](../../deployer/references/production-agent.md),在本机 `~/code/app00` 创建 fresh Agent terminal 委派正式部署,取得证据后再测 | 当前 tester 直接 SSH、直接生产 Compose、复用旧 terminal、把“已发送”当作部署成功 |
## 运行顺序
1. 固定环境名,不把 `HOST` 当成执行机器;`HOST` 仍只是被测服务地址。
2. 测试环境:调用 deployer 的本机路径,确认 compose tag 的本机镜像存在,执行
`docker compose up -d --force-recreate` 与 `docker compose ps`,失败记为
`environment-fail`。
3. 正式环境:等待 app00 Agent 回报 selector、退出码、容器状态、镜像 tag/digest 和健康检查。
缺少任一关键证据、terminal 超时或清理失败,都记为 `environment-fail`,不进入产品测试结论。
4. 部署成功后,tester 再按普通执行协议创建自己的 fresh 测试 terminal;部署 terminal 和测试
terminal 分开记录、分别清理,不能混用或复用。
## 证据
运行快照至少记录 `deployment.environment`、`deployment.route`、目标 selector、部署 Agent
terminal handle、terminal 是否关闭、部署结果和健康检查摘要;不记录凭据、完整环境变量或 secret。