Skip to content

feat(ci): 引入三平台 GitHub Actions 构建与 provider 瞬断重试 - #274

Open
linanwanttodo wants to merge 6 commits into
leookun:mainfrom
linanwanttodo:pr/triple-platform-ci-retry
Open

feat(ci): 引入三平台 GitHub Actions 构建与 provider 瞬断重试#274
linanwanttodo wants to merge 6 commits into
leookun:mainfrom
linanwanttodo:pr/triple-platform-ci-retry

Conversation

@linanwanttodo

Copy link
Copy Markdown

Summary

  1. 三平台 CI 构建.github/workflows/build.yml

    • Linux (ubuntu-24.04):产出便携版 .tar.gz,apt 依赖安装带重试
    • macOS (macos-15 × amd64/arm64):产出便携版 .tar.gz,brew + go tools 安装
    • Windows (windows-2022):产出便携版 .zip,protoc 走 GitHub release 直下(避开 Chocolatey 503)
    • release job:聚合各平台产物生成 update.json 清单并发布 GitHub Release(幂等:已存在则跳过)
  2. provider 瞬断重试internal/backend/agent/model/retry.go + retry_test.go

    • 模型请求失败按指数退避重试,缓解上游瞬时断连导致的对话截断
  3. macOS 打包修复build/darwin/Taskfile.yml

    • darwin:package:archive 移除 internal: true 标记,修复 CI 调用时报
      "Task is internal"(exit 202)导致的 macOS 构建失败

产物与现有官方格式一致:*-{linux-amd64,macos-amd64,macos-arm64,windows-amd64},均为绿色版便携包。

Changed Files (19)

文件 改动
.github/workflows/build.yml 新增三平台 CI + release(核心)
internal/backend/agent/model/retry.go provider 重试逻辑(核心)
internal/backend/agent/model/retry_test.go 重试单测
build/linux/Taskfile.yml Linux 构建/打包任务
build/windows/Taskfile.yml Windows 构建任务
build/darwin/Taskfile.yml 移除 internal 标记(-1)
Taskfile.yml / build/Taskfile.yml 任务拆分与编排
其余 build/ 资源 打包配置资源
.gitignore 忽略 .idea/dev.sh

Test Plan

  • 已在 fork 完成 v0.0.46 三平台构建验证:Linux 3m17s / Windows 4m20s / macOS ~12m,全部通过
  • 产物与官方格式一致(绿色版):*-{linux-amd64,macos-amd64,macos-arm64,windows-amd64}
  • retry 逻辑有单测覆盖(retry_test.go

linanwanttodo and others added 6 commits August 7, 2026 00:29
1. CI 构建与发布流水线(对齐 fork 已验证配置)
   - 新增 .github/workflows/build.yml:Linux(tar.gz) + macOS(tar.gz) + Windows(.zip)
     三平台绿色版构建,main 分支自动创建 GitHub Release 并生成 update.json 更新清单
   - Taskfile.yml / build/*:补齐绿色版打包任务及模板
     (build/deb/、nfpm.yaml、windows NSIS 配置)
   - 版本号保持 0.0.45,未改动任何版本信息与仓库归属(leookun)

2. provider 请求瞬断服务端重试(兼容 opencode/zen 等不稳定上游)
   - retry.go:DNS 解析失败(EAI_AGAIN)、连接重置、5xx 及被代理
     包装成 400 的 "Upstream request failed" 类瞬断,在请求建立阶段
     指数退避重试(最多 10 次,800ms 起、上限 20s)
   - retry_test.go:新增 7 个行为用例覆盖重试/不重试路径

3. 其他
   - .gitignore:忽略 .idea 与 dev.sh
darwin:package:archive 此前标记为 internal: true,GitHub Actions 直接调用时报
"Task is internal"(exit 202)导致 macOS 构建失败;去掉该标记后可从命令行调用,
内部 build/codesign/archive 链路不受影响。
… Taskfile for Docker image builds, and enhance CI workflows for release management. Clean up .gitignore and remove unused files.
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.

2 participants