feat: 补 CI/CD 流程与预构建镜像,修复时区/TraeWork 预热/流式截断 - #2
Merged
Merged
Conversation
CI/CD(新增): - go-ci: go build / vet / test 门禁,此前仓库无任何 CI, TECHNICAL-DOC 的审计本身是在无 Go 工具链下做的静态审阅 - build-image: 用 HA 官方 builder actions 预构建 amd64/aarch64 镜像推 GHCR, config.yaml 增加 image 字段,Supervisor 改为直接拉镜像而非在用户设备编译 - release: 读 config.yaml version 做 semver 比较;tag 先建再发草稿 release (GitHub 对草稿不创建 tag,会导致用户收不到更新); 末尾用 git ls-remote 校验 tag 存在,把静默失败变为显式失败 - pr-validate / pr-label: 分支来源、标题格式、描述完整性、变更类型唯一 - stale / sync-labels: issue 清理与标签同步 修复: - Dockerfile 补 ENV TZ=Asia/Shanghai:容器默认 UTC 使配置的 09:00 实际在 17:00(北京时间)触发签到与保活 - TraeWork 预刷新窗口 10min -> 24h(按平台区分,WorkBuddy 保持 10min): 窗口过窄时请求途中 token 失效会返回 401 -> ErrSessionDead -> 账号被永久禁用 - upstream 流式请求改用无总时长上限的 client:http.Client.Timeout 含读取 响应体时间,长回答超过 120s 会被中途截断;首字节改由 ResponseHeaderTimeout 约束 - traework FetchModels 过滤 is_custom_model 自定义模型(对齐上游 abb9b0b): 第三方代理模型需额外授权,出现在 /v1/models 会导致用户选中后必然失败 其他: - 移除 build.yaml:legacy builder 配置,Supervisor 2026.04.0 起不再被读取, 其 build_from / args.BUILD_VERSION 均为死配置,易误导 - 修正 TestModelsDynamic:v1.1.0b11 起 /v1/models 追加虚拟 cheapest 条目, 测试仍断言 3 个模型导致长期失败(改动前基线即失败) - PR 模板字段与 pr-validate 门禁对齐(原 What/Why 会被 CI 拒绝)
7 tasks
This file contains hidden or bidirectional Unicode text that may be interpreted or compiled differently than what appears below. To review, open the file in an editor that reveals hidden Unicode characters.
Learn more about bidirectional Unicode characters
Sign up for free
to join this conversation on GitHub.
Already have an account?
Sign in to comment
Add this suggestion to a batch that can be applied as a single commit.This suggestion is invalid because no changes were made to the code.Suggestions cannot be applied while the pull request is closed.Suggestions cannot be applied while viewing a subset of changes.Only one suggestion per line can be applied in a batch.Add this suggestion to a batch that can be applied as a single commit.Applying suggestions on deleted lines is not supported.You must change the existing code in this line in order to create a valid suggestion.Outdated suggestions cannot be applied.This suggestion has been applied or marked resolved.Suggestions cannot be applied from pending reviews.Suggestions cannot be applied on multi-line comments.Suggestions cannot be applied while the pull request is queued to merge.Suggestion cannot be applied right now. Please check back later.
Description / 变更描述
补齐 CI/CD 流程(此前仓库无任何 CI),迁移到官方推荐的预构建镜像发布方式,
并修复三项已确认的功能缺陷。详细背景与验证见下方。
CI/CD(新增)
go build/go vet/go test门禁。此前仓库无 CI,TECHNICAL-DOC.md的审计本身是在「无 Go 工具链」下做的静态审阅,且
TestModelsDynamic已失败多时无人发现(v1.1.0b11 起引入)。home-assistant/builder@7.2.0)预构建 amd64/aarch64 镜像推 GHCR;
config.yaml增加image字段,Supervisor 改为直接拉镜像,不再在用户设备上编译 5 个 Go 二进制。
末尾增加镜像可达性校验(
docker manifest inspect),避免config.yamlversion 与镜像 tag 不一致导致用户静默装不上。config.yaml的 version 做 semver 比较;tag 先建再发草稿 release(GitHub 对草稿不创建 tag,会导致用户收不到更新);
末尾用
git ls-remote校验 tag 存在,把静默失败变为显式失败。修复
TZ,容器默认 UTCErrSessionDead→Pool.DisableTimeout: 120s的 client,而http.Client.Timeout含读取响应体时间is_custom_model(第三方代理需额外授权)对齐上游
wild-work@abb9b0b的is_custom_model过滤。其他
build.yaml:legacy builder 配置,Supervisor 2026.04.0 起不再读取,其
build_from/args.BUILD_VERSION均为死配置且易误导。TestModelsDynamic的过期断言(改动前基线即失败,已git stash复现确认)。pr-validate门禁对齐(原## What/## Why会被 CI 拒绝)。验证
新增 3 个单测:
TestRefreshSkewPerPlatform、TestFetchModelsSkipsCustomModels、TestStreamClientHasNoTotalTimeout。另本地验证了 YAML 合法性、版本解析(5 种引号变体)、PR 校验逻辑(4 种场景)、semver 比较(5 种场景)与 tag 排序(
b13 > b12 > b9 > b3)。Type of change / 变更类型
Testing / 测试
go build/go vet/go test全部通过;CI 逻辑本地逐项验证Checklist / 自检清单