tbphp
|
fe8cc17835
|
chore(release): 将验证任务迁回自托管 (#690)
|
2026-09-18 18:26:59 +08:00 |
|
tbphp
|
e9a10bb509
|
test(ci): reduce race gate overhead (#688)
|
2026-09-18 13:05:49 +08:00 |
|
tbphp
|
47e3838e0b
|
fix(release): use GitHub-hosted runners (#685)
|
2026-09-18 09:57:18 +08:00 |
|
tbphp
|
d01656a1d8
|
perf(ci): 迁移自托管运行器并优化并行验收 (#634)
* perf(ci): 切换现有自托管运行器并复用本机缓存
* perf(ci): 将主要 Linux 任务迁至 Mac ARM64 运行器
* fix(ci): 使用动态端口执行 Windows 安装验收
* test(cpa): 等待异步处理完成后校验 WebSocket 行为
* perf(ci): 并行数据库测试并隔离容器验收端口
* ci: 为数据库合同测试启用内存盘
* test(cpa): 固定断连日志脱敏测试的执行顺序
* fix(ci): 修复自托管验收中断和架构兼容问题
* fix(ci): 原子准备 Windows 安装验收配置
|
2026-09-13 08:31:56 +08:00 |
|
tbphp
|
c4cefc0655
|
chore(ci): 收敛主分支检查与命名 (#564)
* chore(ci): 收敛主分支检查与命名
* test(ci): 加强工作流合同断言
|
2026-09-04 19:51:00 +08:00 |
|
 dependabot[bot]andtbphp
|
866f0f13fc
|
chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates (#559)
* chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates
Bumps the github-actions-minor-and-patch group with 2 updates in the / directory: [docker/setup-qemu-action](https://github.com/docker/setup-qemu-action) and [softprops/action-gh-release](https://github.com/softprops/action-gh-release).
Updates `docker/setup-qemu-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-qemu-action/releases)
- [Commits](https://github.com/docker/setup-qemu-action/compare/96fe6ef7f33517b61c61be40b68a1882f3264fb8...1f40c72289eff860ee54a304f1438e3cff362e0a)
Updates `softprops/action-gh-release` from 3.0.2 to 3.0.3
- [Release notes](https://github.com/softprops/action-gh-release/releases)
- [Changelog](https://github.com/softprops/action-gh-release/blob/master/CHANGELOG.md)
- [Commits](https://github.com/softprops/action-gh-release/compare/3d0d9888cb7fd7b750713d6e236d1fcb99157228...efb35369e0ad2afab669f228072c1b0d510eae64)
---
updated-dependencies:
- dependency-name: docker/setup-qemu-action
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-minor-and-patch
- dependency-name: softprops/action-gh-release
dependency-version: 3.0.3
dependency-type: direct:production
update-type: version-update:semver-patch
dependency-group: github-actions-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* test(ci): 同步发布 Action 引用
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-09-04 18:52:41 +08:00 |
|
tbphp
|
1c30bf6ba7
|
ci: 删除重复依赖漏洞检查 (#562)
* ci: 删除重复依赖漏洞检查
* ci: 禁用 pnpm 安装时的隐式审计
|
2026-09-04 18:27:51 +08:00 |
|
Ryan Chou
|
d1cb37a11f
|
fix(ci): update references after default branch rename (#556)
|
2026-09-04 12:59:23 +08:00 |
|
tbphp
|
30a1bac965
|
fix(release): 修正 CPA 版本文档漂移与数据库合同测试遗漏 (#514)
* fix(release): 修正 CPA 版本文档漂移与数据库合同测试遗漏
THIRD_PARTY_NOTICES.md 与 cpaembedded/README.md 的 CLIProxyAPI 版本号
未随 #507 依赖升级同步,仍是 v7.2.143(实际 v7.2.144)。
ci.yml 与 release.yml 的数据库合同测试 -run 正则手工维护测试名单,
已产生漂移:ci.yml 含一个不存在的测试名(静默不匹配),两者都缺失
TestExternalDatabaseMySQLRecoversObservationFreshnessCheckDrop,
release.yml 还缺失 TestExternalDatabaseAccessKeyCostLimitPeriodPermutation。
改为按前缀匹配同目录下全部 TestExternal* 测试,避免后续再次漂移。
补上 ja-JP/settings.ts 缺失的 runtime.pendingRestoreSource key,
该 key 在 4 个组件共 8 处引用,此前日文界面回退显示英文文案。
* fix(storage): 修正 0003 迁移恢复对 MySQL 中间态的误判
启用数据库合同测试的完整名单后,
TestExternalDatabaseMySQLRecoversObservationFreshnessCheckDrop
第一次在真实 MySQL 上执行即失败:ValidateCurrent0001 仅凭
fresh_until_ms 列是否存在判断 0003 是否已完成,但 MySQL 上
0003 的 DROP CHECK 与 DropColumn 是两条独立、非事务性 DDL,
崩溃可能停在"约束已删、列还在"的中间态。此时 ValidateCurrent0001
误判为"0003 未开始",转而用要求约束存在的冻结校验器 Validate0001,
导致误报 chk_credential_observation_fresh_until 缺失。
改为以约束是否存在作为判断信号,与同文件 ValidateRecoverable0003
已经正确处理该中间态的逻辑保持一致。已用一次性 MySQL 8.4 与
PostgreSQL 18 容器验证三态恢复路径与完整数据库合同测试套件。
|
2026-08-31 21:10:42 +08:00 |
|
tbphp
|
3d14c18dcf
|
feat(release): 统一 2.x 镜像标签通道 (#512)
|
2026-08-31 17:35:12 +08:00 |
|
 dependabot[bot]andtbphp
|
d6a66e9877
|
chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates (#509)
* chore(ci): bump the github-actions-minor-and-patch group across 1 directory with 2 updates
Bumps the github-actions-minor-and-patch group with 2 updates in the / directory: [docker/login-action](https://github.com/docker/login-action) and [docker/setup-buildx-action](https://github.com/docker/setup-buildx-action).
Updates `docker/login-action` from 4.5.2 to 4.6.0
- [Release notes](https://github.com/docker/login-action/releases)
- [Commits](https://github.com/docker/login-action/compare/371161bbe7024a29a25c5e19bfcbc0804fe9ad2c...dbcb813823bdd20940b903addbd779551569679f)
Updates `docker/setup-buildx-action` from 4.2.0 to 4.3.0
- [Release notes](https://github.com/docker/setup-buildx-action/releases)
- [Commits](https://github.com/docker/setup-buildx-action/compare/bb05f3f5519dd87d3ba754cc423b652a5edd6d2c...37fe631027851001ddb9b187196cc803df7f5f0e)
---
updated-dependencies:
- dependency-name: docker/login-action
dependency-version: 4.6.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-minor-and-patch
- dependency-name: docker/setup-buildx-action
dependency-version: 4.3.0
dependency-type: direct:production
update-type: version-update:semver-minor
dependency-group: github-actions-minor-and-patch
...
Signed-off-by: dependabot[bot] <support@github.com>
* test(webui): 同步 Docker Action 固定引用
---------
Signed-off-by: dependabot[bot] <support@github.com>
Co-authored-by: dependabot[bot] <49699333+dependabot[bot]@users.noreply.github.com>
Co-authored-by: tbphp <tangb7420@gmail.com>
|
2026-08-31 16:37:45 +08:00 |
|
tbphp
|
118c9a91b1
|
feat(release): 增加 Render 镜像部署 (#502)
* feat(release): 增加 Render 镜像部署
* fix(release): 重试 Render 版本检查
|
2026-08-31 12:44:42 +08:00 |
|
tbphp
|
5c16ed84b3
|
feat(windows): 增加原生服务安装包 (#493)
* feat(windows): 增加原生服务安装包
* fix(windows): 收紧服务安装与升级流程
* fix(windows): 固定服务安装路径与语言资源
* fix(windows): 等待安装器进程完成
* fix(windows): 清理首次安装失败残留
|
2026-08-29 23:26:23 +08:00 |
|
tbphp
|
d4bbb9193a
|
feat: 升级 Go 与 SDK 版本 (#485)
* feat(gateway): 升级 SDK 并封口兼容合同
* fix: 修正升级后的格式与模型过滤
* fix(ci): 更新 Go 漏洞扫描器
* fix(gateway): 拒绝非标准服务层级字段
|
2026-08-27 22:48:16 +08:00 |
|
tbphp
|
a6d2e712ac
|
fix(release): 统一使用版本号作为标题 (#481)
|
2026-08-27 15:53:39 +08:00 |
|
tbphp
|
d518b06acc
|
refactor: 统一错误决策与执行链路 (#466)
* refactor: 统一错误决策与执行链路
* fix(gateway): 修正错误来源与候选预算
|
2026-08-24 23:26:22 +08:00 |
|
tbphp
|
1bc4c7fead
|
perf(release): 镜像复用预编译产物 + GOPROXY 网络容错 (#467)
* fix(ci): GOPROXY 在网络错误时回退到直连源
默认的 GOPROXY=https://proxy.golang.org,direct 用逗号分隔,只在收到
404/410 时才回退到下一个源;proxy.golang.org 的瞬时网络故障(如
HTTP/2 stream INTERNAL_ERROR)会直接让整个 job 失败,默认配置里的
direct 后备源在最需要它的场景下形同虚设。
改用竖线分隔,任何错误(含网络错误)都回退。实验验证:
- 逗号:首个源 EOF -> 直接失败,不尝试第二个源
- 竖线:首个源 EOF -> 成功回退并完成下载
ci.yml、release.yml 以 workflow 级 env 统一设置;Dockerfile 内的
go mod download 走同一问题,一并设置。不引入第三方镜像源,避免为
发布链路增加新的信任方。
* perf(release): 镜像打包复用预编译产物,不再重复编译
publish-images 此前在 Docker 内从 go mod download 开始重新编译 Go 与
Web(两个平台各一次,实测 216s),而 build-binaries 早已交叉编译出
gpt-load-linux-amd64/arm64——正是镜像需要的那两个文件。
Dockerfile 拆出共享的 runtime stage,两条打包路径都以它为基:
- source-build:默认 target,自包含源码构建,供本地与用户自建使用,
必须保持在文件末尾,否则默认构建会落到 prebuilt 而要求预编译产物
- prebuilt:发布用,直接 COPY 预编译二进制
runtime 配置只定义一次,避免两套配置各自漂移。GitHub artifact 不保留
可执行位,prebuilt 用 COPY --chmod=0755 显式恢复。
发布证据链:新增 prebuilt-image-smoke,在发布前用与 publish-images
完全相同的打包路径做 smoke 与 Trivy 扫描,并加入 publication-preflight
的 needs;docker-smoke 继续覆盖源码自包含路径,两者不可互相替代。
release-docker-smoke.sh 新增 RELEASE_SMOKE_BUILD_TARGET 支持指定 target。
container_contract_test.go 原用「最后一个 FROM」定位 runtime 契约,多
stage 后不再成立,改为定位共享 runtime stage,并新增两条断言:每个可
发布 stage 必须派生自 runtime、除 runtime 外不得再有直接以 alpine 为基
的 stage,防止新增路径绕开全部 runtime 断言。已反向验证两条断言均能
拦截对应的破坏方式。
本地验证:prebuilt 镜像实跑 release-docker-smoke.sh 全流程通过(含
非 root 运行、数据目录权限、健康检查、Web UI、认证边界);删除
release/ 后默认 target 仍能正常源码构建。
* fix(release): prebuilt smoke 覆盖 arm64,补全发布前验证
publish-images 推送 linux/amd64 与 linux/arm64 两个平台,两条 prebuilt
路径 COPY 的是不同的二进制,但此前 prebuilt-image-smoke 只在 x86_64
runner 上验证了 amd64,arm64 打包路径没有发布前验证。
改为双架构矩阵,arm64 使用原生 ubuntu-24.04-arm runner(仓库在
native-artifact-smoke 已有先例)而非 QEMU:QEMU 模拟下的启动行为不能
代表真实 arm64 运行时。同时按架构精确下载单个产物,不再整批拉取。
另外让 RELEASE_SMOKE_BUILD_TARGET 的校验错误信息带上实际传入的值,
便于排查 CI 环境变量配置问题。
本地在 arm64 主机上实跑 prebuilt smoke 全流程通过。
|
2026-08-24 22:26:58 +08:00 |
|
tbphp
|
bd539713da
|
perf: 优化测试性能与 CI/发布流水线耗时 (#465)
* test(control): 消除测试 fixture 中的重复密钥派生
- internal/control:fixture 构造中 388 次重复执行 PBKDF2(10 万轮
SHA256)密钥派生,改为共享单例,仅派生一次
- 新增 internal/testutil/encryptiontest,提供按 key material 值
memoize 的共享 encryption.Service,横向覆盖 gateway、subscription、
execution/cpa 中同样存在的重复派生(PBKDF2 占比最高达 79%)
- aesService 构造后只读,跨 fixture(含并行测试)共享安全;container
包同类调用经排查确认属于被测装配流程本身,不适用本次改造
* test(state): 迁移测试改用共享 schema 模板
state/loader 中 openMigratedDatabase 被 21 次调用,每次都完整走一遍
迁移注册表;改为复用 sqlitetest.OpenMigrated 的模板缓存,与 control、
requestlog 部分测试已采用的方式一致。app、container、requestlog 中同
类调用点经逐点排查,均属被测对象本身或依赖真实文件/账本状态,不适用。
* ci(release): 消除 CI 与发布流水线中的耗时浪费
- race-tests 独立 setup-go 缓存命名空间,避免与 test/database-contract
共用 key 导致 race-instrumented GOCACHE 永远无法写回
- 移除 publish-images 中零命中的 GHA buildx image cache,同时消除其
失败会拖累发布状态判定为 partial/blocked 的关联风险
- 三个只读 job(仅用 buildx imagetools 查询)移除多余的 buildx 初始化
- native-artifact-smoke 改为按需下载单个 binary + 独立 checksums,
不再下载完整 release-assets
* test(control): 第一批测试标记 t.Parallel(35 个文件)
internal/control 651 个顶层测试里只有 5.8% 标了 t.Parallel(),其余
在包内是排队串行执行的;race-tests 总耗时现在完全由该包的最长执行时
间决定(213s),是唯一剩余的瓶颈。
本批覆盖 35 个文件、299 个函数。排除 18 个不适用的函数:
- 16 个直接操作全局 logrus 状态的测试(catalog_sync_test.go 等 8 个
文件),继续保持串行;Go 的 t.Parallel() 调度语义保证未标记的测试
会在所有并行测试开始前完整跑完,两者不会交叉执行
- external_database_integration_test.go 的 2 个测试依赖
GPT_LOAD_DATABASE_TEST_DSN:race-tests 中因未设置而被 t.Skip,标记
并行无收益;database-contract job 中会共享同一个外部数据库实例真
实执行,标记并行有正确性风险(唯一索引冲突/断言假设独占)
已排查确认安全:t.Setenv/os.Setenv 均为 0 处,无硬编码端口占用,每个
fixture 走独立 :memory: 数据库;本地 -count=3 重复验证无 flaky。
剩余约 297 个函数(36 个文件)作为第二批,待本批 CI 实测确认收益后
再决定是否推进。
* test(control): 第二批测试标记 t.Parallel,补齐排除说明(36 个文件)
覆盖剩余 297 个函数、36 个文件,加上第一批的 299 个,internal/control
除 18 个明确排除的函数外全部标记 t.Parallel()。
为 18 个排除函数逐一补充一行注释说明原因,避免日后被误认为遗漏而被
顺手加上 t.Parallel():
- 16 个劫持全局 logrus 状态的测试
- 2 个依赖 GPT_LOAD_DATABASE_TEST_DSN 共享外部数据库的测试
本地 -count=3 重复验证、全量 go test -count=1 . ./internal/...(58
包 ok)均通过。
* fix(release): 采纳 Review 反馈,修正文档措辞与产物保留期
- encryptiontest.Service 的文档注释修正为明确说明缓存仅在单个包的
测试二进制内有效,不跨包共享(每个包的 go test 是独立进程)
- native-artifact-smoke 依赖的 binary-*、release-checksums 保留期
从 1 天提高到与 release-assets 一致的 14 天:失败的 release run
若延迟超过 1 天才重试,此前较短的保留期会导致产物过期、下载失败,
阻塞发布流程
以下反馈经核实判定为不成立,未采纳:
- validation_test.go 中两个测试被指"竞争全局并发槽位"——经查
newValidationWorkerForTest 每次调用构造全新独立实例(worker、
channel、mutation coordinator 等),validationConcurrency 只是
编译期常量,两个测试之间不存在任何运行时共享状态
|
2026-08-24 20:07:11 +08:00 |
|
tbphp
|
e19e77ff34
|
docs: release info
|
2026-08-22 08:14:32 +08:00 |
|
tbphp
|
9369c74273
|
Merge branch 'v2' of github.com:tbphp/gpt-load into v2
|
2026-08-20 17:24:48 +08:00 |
|
tbphp
|
13f361a912
|
docs: ci releaes
|
2026-08-20 17:24:41 +08:00 |
|
tbphp
|
03ee3048a3
|
feat(access-key): 增加估算费用额度限制 (#439)
* feat(access-key): 增加估算费用额度限制
* fix(storage): 修正 MySQL 迁移恢复断言
* fix(access-key): 修复额度并发与恢复边界
* fix(access-key): 修复额度发布与周期收敛
* test(requestlog): 稳定额度恢复状态断言
* fix(control): 保持健康额度快照一致
|
2026-08-20 17:19:32 +08:00 |
|
tbphp
|
c76524f408
|
fix(release): 修复间接祖先跳过导致发布后续 job 被连带跳过的问题
|
2026-08-19 22:55:06 +08:00 |
|
tbphp
|
bb1f5680df
|
docs(release): 精简发布说明并提供中英双语文案
|
2026-08-19 21:36:05 +08:00 |
|
tbphp
|
a991251bc3
|
ci(release): 复用 CI 结论并消除发布流程重复验证
|
2026-08-19 19:45:52 +08:00 |
|
tbphp
|
4eeb6bb6ec
|
fix: 修复发布问题
|
2026-08-19 17:16:55 +08:00 |
|
tbphp
|
413837607f
|
fix: release 修复发布问题
|
2026-08-19 16:51:15 +08:00 |
|
tbphp
|
3e1157a2af
|
ci(release): 优化 V2 构建发布并发
|
2026-08-19 15:04:44 +08:00 |
|
tbphp
|
4ba93ab196
|
merge: 合并 Beta.1 初始迁移
|
2026-08-19 13:30:37 +08:00 |
|
tbphp
|
9d63f4095e
|
refactor(storage): 合并 Beta.1 初始迁移
|
2026-08-19 13:30:19 +08:00 |
|
tbphp
|
70b1afb995
|
chore(license): 补齐第三方许可证声明与发布分发
|
2026-08-19 13:28:49 +08:00 |
|
tbphp
|
411a234338
|
chore(release): 规范 V2 预发布与协作流程
|
2026-08-19 12:52:18 +08:00 |
|
tbphp
|
f7102bfd0f
|
test(storage): 精简迁移测试覆盖
|
2026-08-16 17:48:10 +08:00 |
|
tbphp
|
4ca07d18e2
|
Merge branch 'v2' into feat/claude-oauth
|
2026-08-16 17:22:00 +08:00 |
|
tbphp
|
f5fe38ac4d
|
feat(claude): 接入 OAuth 订阅渠道
|
2026-08-16 17:21:50 +08:00 |
|
tbphp
|
55b41b16b7
|
fix(pricing): 持久化模式价格计划
|
2026-08-16 16:41:02 +08:00 |
|
tbphp
|
141819c632
|
test(ci): 优化测试夹具与并行门禁
|
2026-08-16 12:38:26 +08:00 |
|
tbphp
|
6ddbf5b56d
|
fix(ci): 稳定 race 测试门禁
|
2026-08-16 11:31:03 +08:00 |
|
tbphp
|
4c00eed40b
|
refactor(channel): 统一渠道架构与协议契约
|
2026-08-15 15:37:50 +08:00 |
|
tbphp
|
25424d61c4
|
feat(codex): 完善订阅额度与调度体验
|
2026-08-14 23:16:21 +08:00 |
|
tbphp
|
22a6f1c57b
|
fix: 修复上游执行与迁移边界问题
|
2026-08-12 23:49:18 +08:00 |
|
tbphp
|
3e948eedbe
|
test(ci): 稳定远端 race 门禁
|
2026-08-11 16:32:43 +08:00 |
|
tbphp
|
5e8c709df3
|
test: ci
|
2026-08-11 10:53:38 +08:00 |
|
tbphp
|
5ca340939c
|
fix(v2): 收口发布前运行时与迁移问题
|
2026-08-10 12:17:05 +08:00 |
|
tbphp
|
61b763b96b
|
fix(channel): 收口渠道执行与终局迁移
|
2026-08-10 10:31:08 +08:00 |
|
tbphp
|
6f6f7c3efc
|
refactor(channel): 切换为 Bifrost 渠道执行架构
|
2026-08-10 08:22:15 +08:00 |
|
tbphp
|
295d7724ab
|
fix(v2): 收紧外部数据库与运行设置合同
|
2026-08-07 19:04:33 +08:00 |
|
tbphp
|
7c6a158b07
|
fix(ci): 增加数据库服务健康检查重试以解决 DNS 解析延迟问题
|
2026-08-07 11:56:35 +08:00 |
|
tbphp
|
e789feffb4
|
feat(storage): 支持 SQLite、MySQL、PostgreSQL
|
2026-08-07 07:49:11 +08:00 |
|
tbphp
|
52e497f135
|
feat(web): 重塑首页并精简前端工程
|
2026-07-30 15:32:39 +08:00 |
|