chore(ci): 删除 ci.yml workflow
该 workflow 没有实际价值: - 仓库按策略不提供测试源码(*_test.go 被 .gitignore 屏蔽),因此其中的 go test 步骤在干净克隆上只是空转(打印 no test files 后通过),它连 "测试是否存在"都不会告诉你,自然守不住行为回归。 - 剩下的 go build / go vet 收益也很有限 —— 真正会用到编译产物的 docker.yml 在发版打 tag 时本就会完整构建一次。 删除后仓库只保留 docker.yml(打 tag 时构建并推送镜像),不再有多余的自动化。 同步清理对它的引用: - CHANGELOG 的"新增 CI 校验"条目(改述为"没有自动化质量门") - .gitignore 里测试策略注释中指向 ci.yml 的那句 - docs/UPSTREAM_ADAPTER_GUIDE.md 第 7 节(原表述"CI 跑不到你的测试"已不准确, 改为"没有任何自动化会跑你的测试")
This commit is contained in:
@@ -1,61 +0,0 @@
|
||||
name: CI
|
||||
|
||||
# 触发条件:
|
||||
# - push 到 develop / main
|
||||
# - 针对 develop / main 的 PR
|
||||
#
|
||||
# 为什么单独有这个 workflow:
|
||||
# 之前仓库里唯一的 workflow 是 docker.yml,它只在打 tag 时构建镜像,
|
||||
# 既不做 go build 也不跑 go vet,提交能不能编译没人自动盯着。
|
||||
#
|
||||
# ⚠️ 本 workflow 的实际覆盖范围(务必知悉):
|
||||
# 测试源码按项目策略**不入库**(见 .gitignore 的 `*_test.go`),因此干净克隆里
|
||||
# 没有任何 *_test.go,下面的 go test 步骤会打印 "no test files" 后通过。
|
||||
# 也就是说:**CI 只能守住"编译通过 + 静态检查通过",守不住行为回归。**
|
||||
# 行为回归要靠开发者在本地(测试文件所在处)自行执行:
|
||||
# go test ./... -count=1
|
||||
# 如果哪天测试重新入库,把下面的 go test 步骤改成会真正跑起来的形态即可。
|
||||
on:
|
||||
push:
|
||||
branches: [develop, main]
|
||||
pull_request:
|
||||
branches: [develop, main]
|
||||
|
||||
# 同一分支的重复推送取消上一次未完成的运行,省 CI 时间。
|
||||
concurrency:
|
||||
group: ci-${{ github.workflow }}-${{ github.ref }}
|
||||
cancel-in-progress: true
|
||||
|
||||
jobs:
|
||||
build-and-test:
|
||||
runs-on: ubuntu-latest
|
||||
steps:
|
||||
- name: Checkout
|
||||
uses: actions/checkout@v4
|
||||
|
||||
- name: Set up Go
|
||||
uses: actions/setup-go@v5
|
||||
with:
|
||||
# 以 go.mod 里的 go 指令为准,避免两处版本漂移
|
||||
go-version-file: go.mod
|
||||
cache: true
|
||||
|
||||
- name: 下载依赖
|
||||
run: go mod download
|
||||
|
||||
- name: 编译检查
|
||||
run: go build ./...
|
||||
|
||||
- name: 静态检查
|
||||
run: go vet ./...
|
||||
|
||||
# 以下两步在"测试不入库"策略下是空转(no test files),保留是为了:
|
||||
# 1. 覆盖 lock 判定 / 损坏回退 / voice 路由等关键路径的测试一旦重新入库,
|
||||
# 无需改 workflow 即可直接生效;
|
||||
# 2. -count=1 禁用测试缓存,避免"改坏了却因缓存仍显示通过"。
|
||||
- name: 测试(测试源码不入库时为空转)
|
||||
run: go test ./... -count=1
|
||||
|
||||
- name: 关键路径汇总(integration)
|
||||
run: go test ./test/integration/ -count=1 -v
|
||||
|
||||
+2
-2
@@ -6,8 +6,8 @@
|
||||
|
||||
# Go 测试源码:不入库(测试保留在本地磁盘,由开发者自行 go test ./... -count=1)
|
||||
# 理由:测试用例会暴露内部实现细节与断言,不作为交付物外流。
|
||||
# 注意:本规则会把测试文件挡在 git 之外,因此仓库内不提供自动化测试;
|
||||
# .github/workflows/ci.yml 里的测试步骤在纯净克隆上无测试可跑。
|
||||
# 注意:本规则会把测试文件挡在 git 之外,因此仓库内不提供自动化测试,
|
||||
# 也没有自动化质量门 —— 守行为回归只能靠开发者在本地执行测试。
|
||||
*_test.go
|
||||
|
||||
# Editor / OS
|
||||
|
||||
+3
-6
@@ -79,12 +79,9 @@
|
||||
- **测试源码不再入库**: `.gitignore` 恢复整体屏蔽 `*_test.go`。测试用例会暴露内部实现
|
||||
细节与断言,不作为交付物外流;测试文件保留在本地磁盘,由开发者自行执行
|
||||
`go test ./... -count=1`。
|
||||
⚠️ 代价必须明确:仓库内**不提供自动化测试**,`.github/workflows/ci.yml` 里的
|
||||
`go test` 步骤在纯净克隆上无测试可跑(会打印 `no test files` 并通过),
|
||||
**CI 只能守住"编译通过 + 静态检查通过",守不住行为回归**。
|
||||
- **新增 CI 校验** (`.github/workflows/ci.yml`): push / PR 到 `develop`、`main` 时跑
|
||||
`go build` + `go vet` + `go test -count=1`。此前仓库唯一的 workflow 只在打 tag 时构建
|
||||
Docker 镜像,不做任何编译或测试校验。
|
||||
⚠️ 代价必须明确:仓库内**不提供自动化测试**,也没有自动化质量门。
|
||||
守行为回归只能靠开发者在本地(测试文件所在处)执行测试;
|
||||
CI 仅在发版打 tag 时构建 Docker 镜像。
|
||||
- **文档订正**: `docs/UI_HANDOFF.md` 原为"单文件换皮"外包任务书,其中的
|
||||
"admin.html ≤ 35KB / setup.html ≤ 15KB / 只改两个 .html" 等约束在 admin 拆分多页后已作废,
|
||||
现标注为历史文档并补上当前真实文件结构与验收清单。
|
||||
|
||||
@@ -428,14 +428,14 @@ GetVoiceForTTS(name string) (providerName, speakerID, model string, vendorParams
|
||||
**本项目测试文件不入库**(`.gitignore` 里的 `*_test.go`),
|
||||
测试保留在本地磁盘。这带来两个直接后果,必须知道:
|
||||
|
||||
1. **CI 跑不到你的测试**。`.github/workflows/ci.yml` 里的 `go test` 步骤在干净克隆上
|
||||
只会打印 `no test files` 然后通过 —— 它只能守住"编译 + vet"。
|
||||
所以适配器测试**必须在本地跑过再合并**:
|
||||
1. **没有任何自动化会跑你的测试**。仓库里不提供 CI 质量门:
|
||||
GitHub 上只有一个 workflow,且它只在**发版打 tag 时构建 Docker 镜像**,
|
||||
既不编译校验也不跑测试。所以适配器测试**必须在本地跑过再合并**:
|
||||
```bash
|
||||
go test ./... -count=1
|
||||
```
|
||||
2. **不要依赖测试文件来传递知识**。协议细节、踩坑记录要写进**代码注释**和本文档,
|
||||
否则对下一个人(以及在 CI 里)等于不存在。
|
||||
否则对下一个人等于不存在。
|
||||
|
||||
适配器测试的**最小可用集合**(按 §2.6 的坑逐条覆盖):
|
||||
|
||||
|
||||
Reference in New Issue
Block a user