From 67e3961e5554bd8fe76287700e6b7e25528bb8d4 Mon Sep 17 00:00:00 2001 From: LoveChengke Date: Mon, 5 Oct 2026 18:10:29 +0800 Subject: [PATCH] =?UTF-8?q?ci(workflow):=20=E4=BF=AE=20Linux=20=E5=87=BA?= =?UTF-8?q?=E5=8C=85=20=E2=80=94=E2=80=94=20=E8=A1=A5=20Prisma=20Client=20?= =?UTF-8?q?=E7=94=9F=E6=88=90=EF=BC=8CSHA256SUMS=20=E4=B8=8D=E5=86=8D?= =?UTF-8?q?=E6=8E=92=E5=BA=8F=E6=89=93=E4=B9=B1?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 首次在 tag push 上跑就挂了(run 37294579347,失败在"构建 Linux 安装包")。两处都是我的问题: 1. 漏了 `pnpm --filter @classhelper/server db:generate`。`packages/server/src/generated/prisma` 是 gitignored 的,CI 全新检出来没有它,于是 Prisma 类型解析不到、回调参数全被推成 any, `tsc` 报出一大片 TS7006 / TS2339 —— 看着像代码写错了,其实只是缺生成物。 本机因为早就生成过,永远踩不到这个坑;deploy/Dockerfile 的构建阶段本来就有这一步, workflow 里漏抄了(同一条注释在那边写着)。 2. 更新 SHA256SUMS 时用了 `sort -u -k2` 去重,会把那份人读的清单(表头 + 体积 + 说明行)打散。 改成只替换/追加本包那一行,其余原样保留。 --- .github/workflows/release-linux-server.yml | 20 ++++++++++++++------ 1 file changed, 14 insertions(+), 6 deletions(-) diff --git a/.github/workflows/release-linux-server.yml b/.github/workflows/release-linux-server.yml index 8e0bdd7..fa1a3df 100644 --- a/.github/workflows/release-linux-server.yml +++ b/.github/workflows/release-linux-server.yml @@ -69,6 +69,14 @@ jobs: - name: 安装依赖 run: pnpm install --frozen-lockfile + - name: 生成 Prisma Client + # 必须显式生成:packages/server/src/generated/prisma 是 gitignored 的,CI 上全新检出没有它。 + # 少了这一步,`tsc` 会因为 Prisma 类型解析不到而把回调参数全推成 any,报出一大片 + # "TS7006 Parameter 'item' implicitly has an 'any' type" / "TS2339 Property 'id' does not exist + # on type '{}'" —— 看着像代码写错了,实际是缺生成物(本机因为早就生成过,永远踩不到)。 + # deploy/Dockerfile 的构建阶段有同样的步骤与注释。 + run: pnpm --filter @classhelper/server db:generate + - name: 构建 Linux 安装包 run: pnpm dist:server:linux @@ -101,15 +109,15 @@ jobs: exit 1 fi - # 取回已有的校验清单(Windows 包那几行),把本次的 Linux 包追加/替换进去 + # 取回已有的校验清单(Windows 包那几行),只替换/追加本包这一行,其余内容原样保留。 + # 注意**不要**用 `sort -u` 去重:那份文件是人读的(表头 + 体积 + 说明),排序会把它们打散。 gh release download "$TAG" --pattern "SHA256SUMS-*.txt" --dir release-server --clobber || true DOWNLOADED="$(ls release-server/SHA256SUMS-*.txt 2>/dev/null | head -n 1 || true)" if [ -n "$DOWNLOADED" ] && [ "$DOWNLOADED" != "$SUMS" ]; then mv "$DOWNLOADED" "$SUMS"; fi - grep -v "classhelper-server-linux-x64-${VERSION}.tar.gz" "$SUMS" 2>/dev/null > "${SUMS}.tmp" || true - cat "${SUMS}.tmp" > "$SUMS" 2>/dev/null || true - rm -f "${SUMS}.tmp" - sha256sum "$TARBALL" | awk '{print $1" "$2}' | sed "s#release-server/##" >> "$SUMS" - sort -u -k2 "$SUMS" -o "$SUMS" + touch "$SUMS" + grep -v "^[0-9a-f]\{64\} classhelper-server-linux-" "$SUMS" > "${SUMS}.new" || true + printf '%s %s\n' "$(sha256sum "$TARBALL" | awk '{print $1}')" "$(basename "$TARBALL")" >> "${SUMS}.new" + mv "${SUMS}.new" "$SUMS" gh release upload "$TAG" "$TARBALL" "$SUMS" --clobber echo "已上传:"