跳转至

AgentMeshOS CI/CD Runner 整改后续计划

计划目的

本计划承接 agentmeshos-ci-cd-runner-integration-plan.md,只处理截至 2026-09-01 仍未完成、未获得放行或被外部权限阻塞的事项。已完成的 AgentMeshOS Organization Runner 真实调度、四个无状态服务发布、节点职责/API/Console/Status、Release bundle、发布锁/告警、RR 恢复演练与容量边界不再重复实施;后续仅按固定验收规则持续复核。

当前状态审计

项目 状态 证据与判定
AgentMeshOS Organization Runner 已完成,持续复核 pcdell-101-agentmeshos 已真实执行构建/测试/Release/部署,在线且保留 GitHub-hosted fallback。
AgentMeshOS 无状态 CD 已完成,持续复核 Docs、Console、Status、API 已有同 SHA 镜像、健康检查、Release 资产、回滚和告警证据。
API/Console/Status 节点职责 已完成 101/RR/103/jj 角色字段和职责筛选已有实现与远端验收证据。
RR 单节点恢复与容量 基本完成,需持续记录 DETACH-09 已验证恢复顺序;/backup 是 RR 系统盘,101 独立备份盘需每次写入前继续 findmnt 核验;容量归档策略已固化但尚未形成长期执行记录。
Auth Site 业务门禁 已完成,本轮不接入自动升级 专用测试账户已完成本地密码登录/会话/账户页/登出、双会话失效、旧密码拒绝、新密码恢复、管理员重置及原密码恢复;API Key 登录链路亦已验证。
AI Runtime Stateful 门禁 已完成门禁与恢复演练,未自动放行 生产库/恢复副本读取、边界和一致性证据已具备;按既定决策继续人工发布,不接入生产自动升级。
CLI Agent Gateway 门禁 已完成门禁与独立回滚,未自动放行 安全边界、真实短对话、独立 rollback 已验证;按既定决策继续人工发布,不接入生产自动升级。
其他项目共享 Runner 接入 已完成首轮迁移与并发构建验收 五个仓库已由 GitHub 服务端保真转移至 agentmeshos/*;通用 Docker/J5/Encoding/CI Workflow 已采用 AGENTMESHOS_RUNNER_LABEL 并显式回退 ubuntu-latest,首轮完整 SHA 构建全部成功。

执行前置与禁止事项

  1. Auth 只接受用户明确授权的专用生产测试账户窗口;不得从生产文件猜密码、创建未授权账户或把 API Key 结果冒充本地密码门禁。
  2. 多项目迁移必须先取得原个人仓库的读取/转移权限,或由用户书面批准以 101 独立盘备份建立“无历史恢复基线”。在前置条件满足前,不修改原项目远端、不覆盖未提交工作树、不向空组织仓库推送。
  3. 所有跨节点交换遵守小文件控制链路例外;镜像、安装包、构建产物和业务数据不得经 Tailnet/SSH 中转。
  4. 新增证据、脚本和临时输出分别写入版本化目录或项目 temp/;凭据不进入仓库、日志和计划正文。

2026-09-01 执行记录

  • bash scripts/ci/stateful-release-gate.sh auth-site 已重新执行并返回 stateful_release_gate=passed service=auth-site。该结果只证明静态快照、SQLite 完整性、权限和镜像门禁通过。
  • bash scripts/ci/auth-site-smoke.sh 在获得专用 test 账户窗口后已通过本地密码登录、会话、账户页、登出和登出后会话拒绝。后续可逆测试还验证双会话失效、旧密码拒绝、新密码恢复、管理员重置后会话失效;结束时已确认原密码恢复可登录,未保存任何密码或 Cookie。
  • 多项目只读复核:OwlMonitor_apppose-radar-tiowlFront_mock 仍有未提交工作树且远端为 hhtbing/*otaHEAD 指向不可解析对象;AWRL6844EVM_J5_link_WT99P4C5-S1_J4 当前目录没有 .git。这些项目均未被改写或推送。
  • GitHub 迁移复核:先确认 /srv/codex-hub-backup/project-runner-migration-20260831T175216Z 位于 /dev/sda1;随后将五个空的 agentmeshos/* 目标仓库改名为日期占位仓,并使用 GitHub 服务端转移保留原个人仓库历史、分支和标签。此前写入 401 由命令中 token 字符误录引起,已用正确凭据复核并更正,不作为权限结论。
  • 本地映射:OwlMonitor_appotapose-radar-tiowlFront_mockorigin 已更新到对应 agentmeshos/*,未修改其工作树或索引;当前 AWRL 工作目录及其备份副本均无法识别为 Git 工作树,但已转移的远端 main 提交可读,未强行重建本地仓库。
  • 并发 Runner:101 现有 pcdell-101-agentmeshos 外新增独立 pcdell-101-agentmeshos-2(Runner 2.337.0、独立凭据和 _work、同一 github-runner 最小权限用户);官方 svc.sh 生成并启用 systemd 服务。两实例均已在 GitHub 显示 online,并在首轮队列中同时执行 Job。
  • 首轮多项目构建验收:OwlMonitor_app 1d4b61acb627cdf4a66a948875797fb570ac3a41(Run 33533458076)、ota 9acba57dbeaa1c6e33bb952141069dda1004a380(Run 33533466198)、pose-radar-ti fa1dc895139780af2f05ce2ceab456f56dc67654(Run 33533473516)、owlFront_mock ba54d960cbe90da1e9b275ca6ede13c0d905269b(Run 33533559886)和 AWRL6844EVM_J5_link_WT99P4C5-S1_J4 4e72912a1f616ab413c21b15f4d8a10ea1c6955e(Run 33533490006)均为 success;每个 Run 的目标构建 Job 均成功。
  • Auth 本地密码业务门禁已完成:专用 test 账户的登录、账户页、登出、双会话失效、旧密码拒绝、新密码恢复、管理员重置后会话失效和原密码恢复均通过;本轮不接入生产自动升级。
  • 服务器端迁移已完成:五个仓库现在均归属 agentmeshos/*,默认分支为 main,远端提交与原仓库对应;四个可识别本地工作区的 origin 已更新到组织远端,AWRL 本地目录继续保留为非 Git 工作树事实。
  • 并发验收已完成:101 资源复核为 8 vCPU、约 12 GiB 可用内存、约 389 GiB 可用磁盘;新增 pcdell-101-agentmeshos-2 后,两个 Runner 均显示 online,首轮项目构建出现两个同时 busy 的实例,随后全部恢复 online/idle。第二实例使用独立 /opt/agentmeshos-actions-runner-2、官方 svc.sh systemd 服务、独立 _work 和同一 github-runner 最小权限用户。
  • 并发构建结果:Owl、OTA、pose-radar、owlFront、AWRL 的目标 Workflow 均成功;Owl/OTA/pose-radar/AWRL 的首轮构建与 owlFront 手动构建均被完整 SHA 监控,owlFront 与 pose-radar 的通用 Encoding Check 也成功。平台专用 Android/Google Play/Windows/GUI 等 Workflow 仍保留托管 Runner。
  • Swap 复核:101 的 /swap.img 为 4 GiB,swappiness=60MemAvailable 约 12 GiB;复核期间 si/so=0、memory PSI 为 0、无 OOM 记录。4 GiB 作为 OOM 缓冲暂保持不变;第二 Runner 上线后仍有约 10 GiB 可用内存,无需在构建窗口调整 swap。
  • 并发策略复核:单个 Runner 实例一次执行一个 Job;新增第二实例后两个 agentmeshos-ci Job 可同时在 101 执行。GitHub Job 仍以 runs-on 标签、Runner Group 和可用实例共同决定调度,平台专用 Workflow 继续显式使用托管 Runner。
  • 迁移与并发最终验收:五个组织仓库均有非空 main(默认分支和仓库规模已通过 API 复核);目标构建 Run 3353345807633533466198335334735163353355988633533490006 均为 success;通用检查 Run 33539326228335393330513353934668333539348376 均为 success。两个 Runner 当前均为 online/idle
  • AgentMeshOS 计划更新提交 2e796972bd704844d9d712787c5330a2b78c3bc2 的 Docs Run 33540121351 已完成 build、Release bundle、RR deploy 和健康验证,结论为 success;GitHub 仅报告第三方 Action 的 Node 20 弃用警告。

阶段一:完成 Auth 真实业务门禁

1.1 授权与准备

  • 用户提供一次性专用测试账户及有效窗口,确认允许登录、登出、密码修改/重置和会话恢复测试。
  • 预先运行 scripts/ci/stateful-release-gate.sh auth-site,核对数据库快照 SHA-256、PRAGMA quick_check、Schema/计数、镜像和 auth-site.env 权限;记录基线但不输出秘密。

1.2 非破坏性业务验证

  • 使用 scripts/ci/auth-site-smoke.sh 验证本地密码登录、/session、账户页、登出及登出后 401。
  • 在同一专用账户窗口验证密码修改或重置、旧会话立即失效、新密码会话恢复;确认数据库未被回滚,失败时只回滚镜像。
  • 保存脱敏请求状态、时间、运行提交 SHA、失败阶段和重试关系;不得保存密码或响应正文中的敏感数据。

1.3 放行判断

只有上述业务链路全部通过,才把 Auth 标记为“门禁完成、可考虑自动发布”;本轮仍不直接新增生产自动升级 Workflow。失败则保留证据、定位根因并在授权窗口内重跑。

阶段二:恢复并迁移多项目 Runner 接入

2.1 恢复 GitHub 权限

  • 在 Home 真实可见终端由用户重新完成 gh auth login,或提供可访问 hhtbing/* 的等价凭据;分别验证身份、仓库可见性、目标组织仓库写权限,区分认证失败、仓库不存在和权限不足。
  • 在 101 重新执行只读仓库/API/HTTPS 双路径验证;不因单次 401/404 推断仓库删除。

2.2 保真迁移优先路径

  • 对每个项目先在 /srv/codex-hub-backup(现场确认来源 /dev/sda1)保存完整工作树、远端信息、分支/标签和 Git 对象完整性报告。
  • 取得原仓库读取/转移权限后,按项目逐一转入 agentmeshos,保留历史、分支、标签和未提交状态记录;迁移后更新本地 origin,不自动提交用户未提交变更。
  • 为每个仓库设置 AGENTMESHOS_RUNNER_LABEL=agentmeshos-ci,Workflow 默认选择 101 Runner;特殊硬件/平台 Job 保留明确的 ubuntu-latest/windows-latest fallback。

2.3 无历史恢复备选路径

仅在用户明确批准后,对无法恢复历史的项目从已备份工作树建立新基线:在组织空仓创建首个受控提交,单独标注“无历史恢复”,不得伪称为保真迁移;逐仓库完成构建、测试、Runner 调度和 SHA 监控。

2.4 多项目验收

每个项目独立验证:组织仓库可见且默认分支存在、Runner online、至少一个构建/测试 Job 在 101 执行、例外 Job 使用显式托管 Runner、完整 40 位 SHA 的所有 Workflow/Job/Step 均成功。任何失败、取消、超时或 Runner 离线都必须完成二次验证、根因记录、修复和重跑后再进入下一项目。

阶段三:持续复核与收口

  • 每次推送后运行 scripts/ci/monitor-github-actions.sh,按 owner/repository + full_commit_sha 保存失败 URL、Run ID、失败日志、修复提交和成功覆盖 URL。
  • 每次 101 备份写入前执行 findmnt /srv/codex-hub-backup,确认设备为 /dev/sda1;禁止把 RR /backup 当作独立备份盘。
  • 每月只读复核 Runner 在线状态、组织仓库授权范围、RR 容量阈值和无状态服务镜像/健康状态;发现漂移先记录证据再修复。

完成标准

  1. Auth 真实本地密码业务门禁在授权窗口内全量通过,且没有秘密进入证据。
  2. 已授权的其他项目完成保真迁移,或经用户批准完成明确标注的无历史恢复;每个项目均能在 101 Runner 执行并通过完整 SHA 监控。
  3. AgentMeshOS 无状态 CD、Stateful 人工发布边界、101/RR/103/jj 角色和备份盘边界保持不变;远端 GitHub 提交可见,相关 Actions 全部成功,工作区状态可解释。