Skip to content

ci-cd-pipeline.md 的 ci.yml job 表格漂移:写「Seven jobs」并列了一个不存在的 dev-server job(实际 6 个) #3451

Description

@yinlianghui

现象

content/docs/guide/ci-cd-pipeline.md 描述 ci.yml 的那一节写道:

Seven jobs, all parallel — there are no needs: edges between them:

表格里第七行是:

| dev-server | Dev-server fixture build | pnpm --filter @object-ui/dev-server build — guards apps/dev-server's objectstack.config.ts against fixture / @objectstack/spec drift. | Every run |

ci.yml没有 dev-server 这个 job,实际只有 6 个:

$ python3 -c "import yaml; print(list(yaml.safe_load(open('.github/workflows/ci.yml'))['jobs'].keys()))"
['changeset-check', 'type-check', 'test', 'test-coverage', 'e2e', 'docs']

PR #3450 上跑出来的 checks 也印证了这一点(ci.yml 贡献的是 Changeset Fixed Group Check / Type Check / Test shard 1-4 / Test (coverage) / Build & E2E / Build Docs,没有任何 dev-server 条目)。

为什么值得记

这正是 #3197 / #3212 反复处理过的那类漂移 —— 「散文与 YAML 不同步」。而且方向是更危险的那一种:页面宣称存在一个并不存在的守卫#3197 的测试注释本身就写过这个判断:

A doc that understates a gate is annoying; a doc that advertises a guardrail the CI does not have is worse than no doc, because people make size decisions believing something will stop them.

按这一页读,贡献者会以为 apps/dev-serverobjectstack.config.ts 每次 CI 都有 fixture / spec 漂移守卫;实际没有。(是否应该有这个 job 是另一个问题 —— 可能是 job 被删了而文档没跟,也可能是文档先写了而 job 从未落地;需要查一下历史再决定是补文档还是补 job。)

现有测试为什么没拦住

scripts/__tests__/ci-cd-pipeline-doc.test.ts 钉的是:

  • performance-budget.ymlMAX_ENTRY_GZIP_KB 与三档 advisory tiers;
  • workflow 文件清单(每个 .github/workflows/*.yml 必须有对应标题,且页面提到的 *.yml 必须真实存在)。

校验 ci.ymljob 表格。所以 job 数量和 job 名称的漂移是这套 pin 的盲区。

建议

  1. 先查清 dev-server job 是被删了还是从未存在,据此决定「删表格行」还是「补 job」。
  2. 顺手把 Seven jobs 的字面数字改对(或改成不写死数字的表述)。
  3. 可选、也是真正止血的一步:给 ci-cd-pipeline-doc.test.ts 加一条 job 表格的双向 pin —— 从 ci.yml 解析 jobs 的 key,与页面表格首列互相断言。这条如果早存在,本 issue 就不会发生;与该文件已有的「反向 pin」思路一致。

相关

Metadata

Metadata

Assignees

Type

No type

Projects

No projects

Milestone

No milestone

Relationships

None yet

Development

No branches or pull requests

Issue actions