Skip to content

http_llm + 向量/聊天网关拆分 + CI macos-14/Windows AMD64 #23

http_llm + 向量/聊天网关拆分 + CI macos-14/Windows AMD64

http_llm + 向量/聊天网关拆分 + CI macos-14/Windows AMD64 #23

Workflow file for this run

name: verify
# 为什么需要 CI:门禁全靠开发者手跑 `pnpm verify` 时,
# 「我本机是绿的」与「仓库是绿的」会逐渐分叉 —— 尤其是包数 7→14、
# 测试文件 13→~50 的规模下,没有机制能保证新包带测试、新包注册进 3 份清单。
#
# 刻意只跑 hermetic 的那部分:test:externals 需要 opencode / dws / kl,
# 在 CI 上必然不可用,把它放进来只会得到一条长期红的流水线(然后所有人忽略它)。
#
# 双平台:macos-14(与本机 darwin-arm64 开发线对齐)+ windows-latest(AMD64,
# 覆盖 win 路径/原生模块/prepare:bin)。fail-fast:false —— 一边红不该淹没另一边。
on:
push:
branches: [main]
pull_request:
jobs:
verify:
strategy:
fail-fast: false
matrix:
os: [macos-14, windows-latest]
runs-on: ${{ matrix.os }}
timeout-minutes: 45
defaults:
run:
# Windows runner 默认 pwsh;统一 bash 避免 $GITHUB_OUTPUT / 路径写法分叉。
shell: bash
steps:
- uses: actions/checkout@v4
- name: Read Node version
id: node
run: echo "version=$(cat .nvmrc)" >> "$GITHUB_OUTPUT"
- uses: pnpm/action-setup@v4
- uses: actions/setup-node@v4
with:
node-version: ${{ steps.node.outputs.version }}
cache: pnpm
- run: pnpm install --frozen-lockfile
# 二进制内置的验收之一:新克隆零配置就能准备好(按 runner 平台解析)。
- run: pnpm prepare:bin
- run: pnpm verify
# 覆盖率只对确定性包设下限(见 vitest.config.ts 的注释)。
- run: pnpm coverage
# ★ 必须真的构建一次,否则 check:desktop-bundle 只会走"产物不存在→跳过"分支。
#
# 这一步对应一个真实故障:主进程新增的 4 个工作区包没进 electron-vite 的
# 内联清单,产物里留下裸 import,运行时解析到无 dist 的 src/index.ts
# → `pnpm dev` 启动即崩,而当时 `pnpm verify` 全绿(没有测试加载产物)。
#
# 放在 coverage 之后:build 会把 better-sqlite3 重建成 Electron ABI,
# 而 vitest 需要 Node ABI —— 顺序颠倒会让 coverage 一步崩在原生模块上。
- run: pnpm build
- run: pnpm check:desktop-bundle