fix(devex): bump-version 修 BSD sed / lock 失败吞错 / package-lock 未同步
Codex 在 PR #294 上提了 3 个 P2,全部采纳: P2-A: BSD sed 不支持 GNU 行号范围 0,/.../ 原 sed -E -i.bak "0,/^version = .../s//.../" 在 macOS 默认 BSD sed 上 会 fail。换成 awk first-match 替换(mac BSD awk + GNU awk 都支持)。 P2-B: Cargo.lock 同步失败被 `|| true` 吞了 原 cargo update -p openless ... || true 会让脚本继续,validate 又只 校验 Cargo.toml 不校验 Cargo.lock。删 || true,让 set -euo pipefail 在 cargo update fail 时立刻退出;同时 validate 加 Cargo.lock 校验。 P2-C: package-lock.json 未跟着同步 npm 把 root version 也存在 package-lock.json 里(root + packages[''] 两处)。原脚本只 sed package.json 不更 lock,会让 npm ci 在 CI 出现 EUSAGE。换成 npm version --no-git-tag-version --allow-same-version 一次更两个文件。 ci.yml 的 verify step 也升级到校验 5 处一致: package.json / package-lock.json root+nested / tauri.conf.json / Cargo.toml / Cargo.lock 的 [openless] 包。 dry-run 已验证(用当前版本 1.2.20 跑一遍输出全部一致)。
This commit is contained in:
1 parent
938c6a74b9
commit
97fca4abab
3 files changed
+74
-48
No files matched your search
@@ -72,19 +72,32 @@ jobs:
|
||||
- name: Check Tauri backend (cargo check)
|
||||
run: cargo check --manifest-path src-tauri/Cargo.toml
|
||||
|
||||
- name: Verify version triplet stays in sync
|
||||
- name: Verify version sync across all 5 files
|
||||
# 两个平台都跑这个校验:Windows runner 自带 git-bash,跨 shell 表现一致。
|
||||
# 一旦三处版本号 drift 立刻 fail,避免发版时再发现漏改。
|
||||
# 一旦版本号 drift 立刻 fail,避免发版时再发现漏改。
|
||||
# 校验 5 处:package.json / package-lock.json (root + nested) /
|
||||
# tauri.conf.json / Cargo.toml / Cargo.lock 的 [openless] 包。
|
||||
shell: bash
|
||||
run: |
|
||||
PKG=$(node -p "require('./package.json').version")
|
||||
LOCK_ROOT=$(node -p "require('./package-lock.json').version")
|
||||
LOCK_NESTED=$(node -p "require('./package-lock.json').packages[''].version")
|
||||
TAU=$(node -p "require('./src-tauri/tauri.conf.json').version")
|
||||
CRG=$(grep -E '^version = ' src-tauri/Cargo.toml | head -1 | sed -E 's/^version = "(.+)"$/\1/')
|
||||
echo "package.json = $PKG"
|
||||
echo "tauri.conf.json = $TAU"
|
||||
echo "Cargo.toml = $CRG"
|
||||
if [ "$PKG" != "$TAU" ] || [ "$PKG" != "$CRG" ]; then
|
||||
echo "::error::version triplet 不一致 — 请用 scripts/bump-version.sh 同步更新"
|
||||
# Cargo.lock:找 [openless] 包紧跟的 version 行
|
||||
CARGO_LOCK_VER=$(awk 'BEGIN{found=0} /^name = "openless"$/{found=1; next} found && /^version = /{gsub(/"/,""); print $3; exit}' src-tauri/Cargo.lock)
|
||||
echo "package.json = $PKG"
|
||||
echo "package-lock root = $LOCK_ROOT"
|
||||
echo "package-lock nested = $LOCK_NESTED"
|
||||
echo "tauri.conf.json = $TAU"
|
||||
echo "Cargo.toml = $CRG"
|
||||
echo "Cargo.lock openless = $CARGO_LOCK_VER"
|
||||
mismatch=0
|
||||
for v in "$LOCK_ROOT" "$LOCK_NESTED" "$TAU" "$CRG" "$CARGO_LOCK_VER"; do
|
||||
if [ "$v" != "$PKG" ]; then mismatch=1; fi
|
||||
done
|
||||
if [ "$mismatch" -ne 0 ]; then
|
||||
echo "::error::版本号未对齐 — 请用 scripts/bump-version.sh 同步更新"
|
||||
exit 1
|
||||
fi
|
||||
echo "[ok] 三处版本号一致:$PKG"
|
||||
echo "[ok] 全部 5 处版本号一致:$PKG"
|
||||
Reference in new issue
Block a user