docs: add progress report for TC-MAC-012 (macOS bridge base dir fix)
This commit is contained in:
parent
cf97344708
commit
d094c27b86
61
docs/report/TC-MAC-012-26-06-18-19.md
Normal file
61
docs/report/TC-MAC-012-26-06-18-19.md
Normal file
@ -0,0 +1,61 @@
|
||||
# 进度报告 · TC-MAC-012
|
||||
|
||||
| 项目 | 内容 |
|
||||
|------|------|
|
||||
| **用例编号** | TC-MAC-012 |
|
||||
| **报告时间** | 2026-06-18 19:00 (Asia/Shanghai) |
|
||||
| **关联提交** | `cf97344` fix: relocate xworkmate-bridge base dir under $HOME on macOS |
|
||||
| **平台** | macOS (Darwin) 本机部署 |
|
||||
| **状态** | ✅ 已修复并提交(待 Mac 端实跑复验) |
|
||||
|
||||
## 1. 问题现象
|
||||
|
||||
`curl -sfL .../setup-ai-workspace-all-in-one.sh | bash -` 在 macOS 本机部署时中断:
|
||||
|
||||
```
|
||||
TASK [roles/vhosts/xworkmate_bridge/ : Ensure xworkmate-bridge base directory exists]
|
||||
fatal: [127.0.0.1]: FAILED! => {"changed": false,
|
||||
"msg": "There was an issue creating /opt/cloud-neutral as requested:
|
||||
[Errno 13] Permission denied: b'/opt/cloud-neutral'",
|
||||
"path": "/opt/cloud-neutral/xworkmate-bridge"}
|
||||
PLAY RECAP
|
||||
127.0.0.1 : ok=145 changed=12 unreachable=0 failed=1 skipped=176
|
||||
```
|
||||
|
||||
## 2. 根因分析
|
||||
|
||||
- `roles/vhosts/xworkmate_bridge/defaults/main.yml` 中 `xworkmate_bridge_base_dir` 硬编码为 `/opt/cloud-neutral/xworkmate-bridge`。
|
||||
- macOS 部署以 `ansible_become=false` 运行(见 TC-MAC-002),普通用户无权在 `/opt` 下创建目录,触发 `Errno 13`。
|
||||
- 该 base dir 同时被 `config.yaml`、launchd plist 的 `WorkingDirectory` 引用,因此必须指向用户可写路径。
|
||||
|
||||
## 3. 修复方案
|
||||
|
||||
沿用本仓库既有的 macOS 适配约定:不改动独立的 playbooks 仓库,而是在 `setup-ai-workspace-all-in-one.sh` 的 Darwin 分支以 `-e` 注入覆盖(与 `gateway_openclaw_home`、`agent_skills_home`、`xworkspace_console_root` 等同样处理)。
|
||||
|
||||
```bash
|
||||
ANSIBLE_EXTRA_VARS+=("-e" "xworkmate_bridge_base_dir=$HOME/.local/state/cloud-neutral/xworkmate-bridge")
|
||||
```
|
||||
|
||||
Ansible extra-vars 优先级高于 role defaults,因此对在线(`curl | bash`)与离线两种安装路径均生效;`config.yaml` 与 plist 的 `WorkingDirectory` 因派生自该变量而一并迁移。
|
||||
|
||||
## 4. 验证情况
|
||||
|
||||
- `bash -n` 语法检查通过。
|
||||
- 已确认提交内 `-e` 覆盖存在且行为正确(extra-vars 覆盖 role 默认值)。
|
||||
- 复核 bridge 角色其余系统路径,确认不会把失败下移:
|
||||
- `xworkmate_bridge_binary_path` (`/usr/local/bin/...`) 仅 `stat` 读取,非写入。
|
||||
- 所有 `/etc/systemd` 任务已带 `when: ansible_os_family != 'Darwin'` 守卫。
|
||||
- `/etc/caddy` 相关任务与 `gateway_openclaw` 完全一致,而该角色已在本次 145 个 OK 任务中通过,说明该机器 `/etc/caddy` 可写。
|
||||
- 局限:当前环境无 Darwin 主机,未能实跑完整部署,验证基于变量优先级推导 + 路径审计。
|
||||
|
||||
## 5. 交付物
|
||||
|
||||
- `scripts/setup-ai-workspace-all-in-one.sh`:Darwin 分支新增 base dir 覆盖(+4 行)。
|
||||
- `docs/case/macos_compatibility_tests.md`:新增 TC-MAC-012 及修复维度总结更新。
|
||||
- `docs/case/{combination_tests,test_prompts}.md`:随提交纳入版本管理。
|
||||
|
||||
## 6. 后续建议
|
||||
|
||||
1. 在 Mac 上重跑 `COMBO-001` 验证 bridge 任务通过。
|
||||
2. 若下一阻塞点为 `/etc/caddy` 权限,可按同样方式(Darwin 守卫或 `-e` 重定向)处理。
|
||||
3. 未纳入本次提交:预先存在且无关的 `create-ai-workspace-offline-package.sh`(新增 `npm`)改动,以及生成的离线包目录。
|
||||
Loading…
Reference in New Issue
Block a user