Skip to content

OAC-20: ci(e2e): verbatim release install and node enrollment on GitHub runner - #17

Merged
sunyalou merged 3 commits into
mainfrom
feat/oac-20-e2e-install-workflow
Oct 3, 2026
Merged

sunyalou merged 3 commits into
mainfrom
feat/oac-20-e2e-install-workflow

Conversation

@sunyalou

@sunyalou sunyalou commented Oct 3, 2026

Copy link
Copy Markdown
Owner

目标

在 GitHub-hosted runner 上逐字执行 release 的 install.sh,再按 Web 控制台生成的命令注册 Docker sandbox node,为 OAC-4「真实发布路径」提供最终 e2e 证据(取代 OAC-18 的 training10 路径)。fork-only,不改产品代码。

改动

  • 新增 .github/workflows/e2e-install.yml:
    • 触发:仅 workflow_dispatch(release_tag / expected_commit / web_port)。首次自测用的临时分支 push 触发器已移除。
    • 步骤:解析 release → 下载并校验 install.sh(sha256)→ 逐字执行 install.sh --allow-insecure-origin → 部署健康校验(Web /healthz、GET /core/v1/installation 的 allow_insecure_origin=true 与 source_commit)→ 配置 docker provider deployment → 即时生成一次性 enrollment token 并按 Web 契约拼装节点安装命令 → 轮询 online / provider_ready / rollout.state=ready,并采集 ss、journalctl、last_seen_at 递增证据。
    • 证据(命令 + 原始输出 + 退出码)写入 job step summary;令牌 / core-key 只在本机使用并 ::add-mask::。
  • scripts/ci_plan.py:新增 .github/workflows/e2e-install.yml → lint 精确分类。

耦合点(R2):节点安装命令由 Web 客户端 apps/web/src/features/sandbox/enrollment-command.ts 拼装,没有服务端 API 返回完整命令;本 workflow 按文档契约复刻。Web 命令模板变更必须同步本 workflow。

验证

  • make check-names:通过(15 tests OK + name guard passed)。
  • actionlint 1.7.12:通过(./actionlint -color 无输出,exit 0)。
  • YAML 解析通过;全部 14 处内联 python3 -c 均可编译。
  • 分支自测 run(push 触发,逐字安装)https://github.com/sunyalou/OpenAgentCore/actions/runs/37117535099 — 步骤 1–9 全部 success(约 2.5 分钟):
    • 步骤 5:逐字 OAC_REPOSITORY=sunyalou/OpenAgentCore bash install.sh --version build-ee22bfad… --public-url http://10.1.0.104:8080 --allow-insecure-origin 退出码 0。
    • 步骤 6:public_url, source_commit, allow_insecure_origin and installation_id all match。
    • 步骤 7:saved provider=docker generation=1。
    • 步骤 8:按控制台命令安装节点成功。
    • 步骤 9 判据:online=True provider_ready=True rollout.state=ready;node JSON "rollout":{"state":"ready","ready_generation":1},"provider_ready":true,...,"online":true。
    • ws 证据:sudo ss -tnp 显示两条 oac-node(pid=4070,fd=7/8)到 10.1.0.104:8080 的 ESTAB 连接;journalctl -u oac-node-… 显示服务已启动;last_seen_at 递增 2026-10-03T10:49:13.362686Z → 2026-10-03T10:49:33.363384Z。

已知限制

  • 临时 push 触发器已移除;本分支自测 run 是合入前的实跑证据,合入后由队长另行安排一次 workflow_dispatch 作为最终证据。
  • 仅验证 docker provider(GitHub-hosted runner 无 KVM)。
  • 依赖 fork release build-ee22bfad… 与 GHCR 匿名拉取;release 资产变更需重跑。

关联

OAC-20(本 PR);回填 OAC-4「真实发布路径」;取代 OAC-18。

sunyalou and others added 3 commits October 3, 2026 18:35
Add a fork-only e2e-install workflow that installs a published release with
the release's own install.sh, then enrolls a Docker sandbox node with a
replica of the Web console's node command. It is manual-only; the temporary
push trigger on the feature branch serves the first self-test and is removed
before merge.

Classify the new workflow as lint-only in scripts/ci_plan.py.

Refs OAC-20.

Co-authored-by: multica-agent <github@multica.ai>
The step-9 readiness check embedded its Python at the shell nesting
indent (14 spaces) instead of the run block's block-scalar base indent
(10 spaces). YAML strips only the base 10, so the interpreter received
the code indented by 4 spaces and failed with
"IndentationError: unexpected indent" on line 2, which broke the
online/provider_ready/rollout.state=ready gate even though the node had
enrolled successfully.

De-indent lines 342-352 by four spaces so the embedded Python reaches
column 0 after block-scalar stripping, matching the other python3 -c
blocks in the workflow. No other lines change.

Co-authored-by: multica-agent <github@multica.ai>
The branch self-test now passes all nine steps, so the temporary push
trigger used to obtain the first run is removed before merge. Manual
workflow_dispatch is the only trigger, as the workflow intends.

Co-authored-by: multica-agent <github@multica.ai>
@chatgpt-codex-connector

Copy link
Copy Markdown

You have reached your Codex usage limits for code reviews. You can see your limits in the Codex usage dashboard.

@sunyalou sunyalou changed the title ci(e2e): verbatim release install and node enrollment on GitHub runners OAC-20: ci(e2e): verbatim release install and node enrollment on GitHub runner Oct 3, 2026
@sunyalou
sunyalou merged commit 02dd74c into main Oct 3, 2026
43 of 46 checks passed
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

1 participant