From 6b8f5ba6e392d444c26c65ed45816494c2717849 Mon Sep 17 00:00:00 2001 From: cfdaily Date: Mon, 8 Jun 2026 21:36:43 +0800 Subject: [PATCH] auto-sync: 2026-06-08 21:36:43 --- .gitea/workflows/ci.yml | 6 +-- .gitea/workflows/deploy.yml | 32 +++--------- docs/design/13-toolchain-and-dev-workflow.md | 52 ++++++++++++++++++-- 3 files changed, 57 insertions(+), 33 deletions(-) diff --git a/.gitea/workflows/ci.yml b/.gitea/workflows/ci.yml index 6029877..43567ae 100644 --- a/.gitea/workflows/ci.yml +++ b/.gitea/workflows/ci.yml @@ -23,7 +23,7 @@ on: jobs: # ── Job 1: Lint ────────────────────────────────────── lint: - runs-on: ubuntu-latest + runs-on: macos-arm64 steps: - uses: actions/checkout@v4 @@ -38,7 +38,7 @@ jobs: # ── Job 2: Test ────────────────────────────────────── test: - runs-on: ubuntu-latest + runs-on: macos-arm64 needs: lint steps: - uses: actions/checkout@v4 @@ -55,7 +55,7 @@ jobs: # ── Job 3: CI 失败通知 ─────────────────────────────── # v1.23 不支持 failure(),用 always() + shell 检查 commit status 替代 notify-on-failure: - runs-on: ubuntu-latest + runs-on: macos-arm64 needs: [lint, test] if: always() steps: diff --git a/.gitea/workflows/deploy.yml b/.gitea/workflows/deploy.yml index 209666d..8430195 100644 --- a/.gitea/workflows/deploy.yml +++ b/.gitea/workflows/deploy.yml @@ -6,7 +6,7 @@ # Gitea v1.23.4 限制注意: # - 不支持 failure() 表达式 # - 不支持 concurrency / permissions -# - 部署脚本占位,等姜维确认 act-runner 环境后再补具体命令 +# - 部署脚本 scripts/deploy.sh,支持 --version/--rollback/--health-check name: Deploy @@ -17,7 +17,7 @@ on: jobs: # ── Job 1: CI(main 分支跑完整测试)───────────────── ci: - runs-on: ubuntu-latest + runs-on: macos-arm64 steps: - uses: actions/checkout@v4 @@ -36,42 +36,24 @@ jobs: # ── Job 2: 部署 ───────────────────────────────────── deploy: - runs-on: ubuntu-latest + runs-on: macos-arm64 needs: ci steps: - uses: actions/checkout@v4 - name: Record current version run: | - echo "Deploying commit: ${{ gitea.sha }}" - echo "Branch: ${{ gitea.ref }}" - echo "Timestamp: $(date -u +%Y-%m-%dT%H:%M:%SZ)" - # TODO: bash scripts/deploy.sh --version - # 等姜维确认 act-runner 环境后再补 + bash scripts/deploy.sh --version || echo "No deploy history yet" - name: Deploy run: | - echo "=== Deploy step (placeholder) ===" - echo "Source: ${{ gitea.workspace }}" - # TODO: 实际部署脚本 - # bash scripts/deploy.sh --source="$GITHUB_WORKSPACE" --target="$HOME/.sanguo_projects/sanguo_moziplus_v2" --health-check - echo "Deploy placeholder completed." + bash scripts/deploy.sh --source="$GITHUB_WORKSPACE" --target="$HOME/.sanguo_projects/sanguo_moziplus_v2" --health-check - - name: Health check - run: | - echo "=== Health check ===" - # TODO: 等服务启动后做健康检查 - # curl -sf http://localhost:8083/api/health || exit 1 - echo "Health check placeholder passed." - - # ── 失败时回滚 ──────────────────────────────── - # v1.23 不支持 if: failure() - # 回滚逻辑改由 notify-on-failure job 检测 commit status 后通知人工介入 - # 后续可升级到 v1.24+ 后改用 failure() 表达式 + # 回滚由 notify-deploy-failure job 检测失败后通知人工介入 # ── Job 3: 部署失败通知 ────────────────────────────── notify-deploy-failure: - runs-on: ubuntu-latest + runs-on: macos-arm64 needs: [ci, deploy] if: always() steps: diff --git a/docs/design/13-toolchain-and-dev-workflow.md b/docs/design/13-toolchain-and-dev-workflow.md index b9567c0..5723bec 100644 --- a/docs/design/13-toolchain-and-dev-workflow.md +++ b/docs/design/13-toolchain-and-dev-workflow.md @@ -1,6 +1,6 @@ # 三国团队工具链与开发流程设计 -> **状态**: v3.0 — 合并 §14 工具链 Skill 设计 + 自动部署(原 14-toolchain-skill-and-deploy.md v1.1) +> **状态**: v3.1 — P3 端到端验证通过 + 调研结论写入 + Review API 枚举值修正 > **作者**: 庞统(副军师)🐦 > **评审**: 司马懿(仲达)🗡️ > **日期**: 2026-06-06 @@ -2205,9 +2205,10 @@ curl -X POST "http://192.168.2.154:3000/api/v1/repos/sanguo/{repo}/pulls/{pr_num -H "Content-Type: application/json" \ -d '{ "body": "{审查意见}", - "event": "APPROVE" + "event": "APPROVED" }' -# event 可选: APPROVE | REQUEST_CHANGES | COMMENT +# event 可选: APPROVED | REQUEST_CHANGES | COMMENT +# ⚠️ 注意:是 APPROVED(过去式),不是 APPROVE ``` ### 风险级别判定(自动 + 确认) @@ -2581,6 +2582,45 @@ esac | **S5: Issue 指派** | 创建 Issue 并指派 | 中枢发 Mail 给被指派人 | | **S6: 幂等验证** | 重复触发同一 delivery_id Webhook | 第二次返回 200 duplicate,不创建重复 Mail | +#### §17.6.4 P3 端到端验证结果(2026-06-08) + +| 场景 | 结果 | 说明 | +|------|------|------| +| **S1: CI 触发** | ✅ | push test/p3-e2e-s1 → ci.yml 触发。首次因 act-runner 离线未触发,姜维修复后积压任务自动执行 | +| **S2: PR Review 流程** | ✅ | PR opened → 中枢发 Review 请求 Mail 给 simayi-challenger ✅。Review APPROVED → 中枢发 Mail 给 PR 作者 ✅(Gitea 1.23.4 支持此 webhook) | +| **S3: CI 失败通知** | ✅ | [CI] 评论 → 中枢发 Mail 给 PR作者 ✅ | +| **S4: 部署流程** | ⏭️ 跳过 | 依赖 CI 先跑通,未单独验证 | +| **S5: Issue 指派** | ✅ | Issue 指派 zhangfei-dev → 收到 Mail ✅ | +| **S6: 幂等验证** | ✅ | 同 delivery_id 第二次返回 `duplicate`,不创建重复 Mail ✅ | + +##### 调研发现 + +**发现 1:Gitea Review API event 枚举值** + +Gitea ReviewStateType 枚举值应为 `APPROVED`(不是 `APPROVE`)。使用错误的枚举值会创建 PENDING review,且 PENDING 不触发 webhook 通知。 + +- 正确:`{"event": "APPROVED"}` +- 错误:`{"event": "APPROVE"}` → 创建 PENDING review,webhook 不触发 + +已修正:TOOLS.md 模板 + code-review Skill 中的 event 值。 + +**发现 2:Gitea 1.23.4 支持 PullRequestReview webhook** + +之前误判为"不支持",实际原因同发现 1——错误的枚举值创建了 PENDING review,PENDING 不在 webhook switch 分支中导致报 "Unsupported review webhook type"。使用正确的 APPROVED event 后 webhook 正常触发。 + +daemon webhook handler 已正确覆盖: +- `pull_request_review` 事件 → `_handle_pull_request_review()` +- 只处理 APPROVED / REQUEST_CHANGES,跳过 COMMENTED 和 PENDING +- 通知对象:PR 作者 + +**发现 3:act-runner 进程管理** + +act-runner 未纳入进程管理,崩溃后不会自恢复。姜维已修复: +- 纳入 PM2 托管(进程名:sanguo-act-runner,id=44) +- 启动命令:`pm2 start ~/bin/act_runner --name sanguo-act-runner --cwd ~/.config/act-runner/ -- daemon --config ~/.config/act-runner/config.yaml` +- 崩溃自动重启 ✅ +- 开机自启:依赖 pm2 startup(需 sudo 配置 launchd) + #### §17.6.3 实验项目 CI 配置 从 moziplus-v2 的 ci.yml 精简,实验项目只需要基本验证: @@ -2608,7 +2648,7 @@ jobs: - run: echo "test placeholder" ``` -> **注意**:主项目 sanguo_moziplus_v2 的 ci.yml/deploy.yml 目前仍然是 `ubuntu-latest`(本地开发目录和安装目录都是)。如果 act-runner 只注册了 `macos-arm64`,主项目的 CI 跑不起来。后续主项目接入 CI 时需统一。P3,不阻断。 +> **注意**:主项目 ci.yml/deploy.yml 的 runs-on 已从 `ubuntu-latest` 改为 `macos-arm64`,对齐 act-runner 实际 label。deploy.yml 的 placeholder 也已替换为实际 deploy.sh 命令。 --- @@ -2672,7 +2712,7 @@ Gitea v1.23.4 自带完整的 CI 管理界面: | # | 条件 | 状态 | 谁确认 | |---|------|------|--------| -| 1 | act-runner 已注册且 label = `macos-arm64` | ✅ CI 已跑过 24 次 | 已确认 | +| 1 | act-runner 已注册且 label = `macos-arm64` | ✅ PM2 托管(sanguo-act-runner, id=44),崩溃自动重启 | 姜维确认 | | 2 | Gitea repository secrets 已配置(CI_TOKEN) | ⚠️ 需确认 | 姜维 | | 3 | Gitea 组织级 Webhook 已启用(Hook ID=28) | ✅ 已确认 | 已确认 | | 4 | 各 Agent 的 GITEA_TOKEN 环境变量 | ⚠️ 待分配 | 庞统协调 | @@ -2681,6 +2721,8 @@ Gitea v1.23.4 自带完整的 CI 管理界面: > 第 5 点很关键——如果 main 分支没有保护规则,开发者可以直接 push main 跳过 Review。 +> act-runner 已于 2026-06-08 纳入 PM2 托管(姜维),崩溃自动重启 + pm2 save 已保存。开机自启依赖 pm2 startup(需 sudo 配置 launchd),P4 完成。 + --- ### §17.11. 评审记录(原 §14 评审)