From f1edb42665991651f3250c1153d0dc6f874fd9a0 Mon Sep 17 00:00:00 2001 From: LoveChengke Date: Mon, 5 Oct 2026 18:19:02 +0800 Subject: [PATCH] =?UTF-8?q?ci(workflow):=20Linux=20=E5=8C=85=E4=B8=80?= =?UTF-8?q?=E5=B9=B6=E4=B8=8A=E4=BC=A0=20.sha256=EF=BC=8C=E9=81=BF?= =?UTF-8?q?=E5=85=8D=E5=8F=91=E5=B8=83=E5=90=8E=E5=93=88=E5=B8=8C=E5=AF=B9?= =?UTF-8?q?=E4=B8=8D=E4=B8=8A?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit 首次跑通后发现:workflow 只上传了 tar.gz 与 SHA256SUMS,而那份独立发布的 .sha256 还是上一版的哈希 —— 拿它校验会 mismatch(classhelper upgrade 用的正是这个文件,不是 SHA256SUMS)。另补一道兜底:文件缺失时现场生成。 --- .github/workflows/release-linux-server.yml | 9 ++++++++- 1 file changed, 8 insertions(+), 1 deletion(-) diff --git a/.github/workflows/release-linux-server.yml b/.github/workflows/release-linux-server.yml index fa1a3df..7848fc9 100644 --- a/.github/workflows/release-linux-server.yml +++ b/.github/workflows/release-linux-server.yml @@ -102,12 +102,18 @@ jobs: set -euo pipefail VERSION="${TAG#v}" TARBALL="release-server/classhelper-server-linux-x64-${VERSION}.tar.gz" + SHAFILE="${TARBALL}.sha256" SUMS="release-server/SHA256SUMS-${VERSION}.txt" if [ ! -f "$TARBALL" ]; then echo "::error::没有找到 $TARBALL(tag 与 package.json 的版本号对得上吗?)" exit 1 fi + # .sha256 必须跟着一起传:它是独立发布的资产,只更新 tar.gz 会让这个文件指向旧哈希, + # 拿它校验的人会得到 mismatch(classhelper upgrade 用的是 --sha256/这个文件,不是 SHA256SUMS)。 + if [ ! -f "$SHAFILE" ]; then + sha256sum "$TARBALL" | sed "s#release-server/##" > "$SHAFILE" + fi # 取回已有的校验清单(Windows 包那几行),只替换/追加本包这一行,其余内容原样保留。 # 注意**不要**用 `sort -u` 去重:那份文件是人读的(表头 + 体积 + 说明),排序会把它们打散。 @@ -119,6 +125,7 @@ jobs: printf '%s %s\n' "$(sha256sum "$TARBALL" | awk '{print $1}')" "$(basename "$TARBALL")" >> "${SUMS}.new" mv "${SUMS}.new" "$SUMS" - gh release upload "$TAG" "$TARBALL" "$SUMS" --clobber + gh release upload "$TAG" "$TARBALL" "$SHAFILE" "$SUMS" --clobber echo "已上传:" + cat "$SHAFILE" cat "$SUMS"