fix(ci): version.yaml 的 build_number 改用版本号公式派生

旧法读仓库 backend/config/version.yaml 的 build_number 再 +1,但 CI 与
local-release 部署时都不回写仓库那份,它永远冻结 → 每次发版都算出同一个值
(1.1.9 / 1.1.10 线上 build_number 均为 5)。改用 major*10000+minor*100+patch
(与 pubspec CFBundleVersion 同源、天然单调),无状态依赖,CI 与本机结果一致。
自更新按版本字符串判断,build_number 仅展示,历史 5 无害。

Co-Authored-By: Claude Opus 4.8 <noreply@anthropic.com>
Claude-Session: https://claude.ai/code/session_01Bupi8Kdqkfx2N5acFsHTx5
This commit is contained in:
wangjia
2026-08-26 01:56:17 +08:00
parent 70f003cb1a
commit 7d0595105f
2 changed files with 11 additions and 2 deletions
+6 -1
View File
@@ -44,8 +44,13 @@ for line in raw.splitlines(keepends=True):
if line.startswith('version:'):
out.append('version: "%s"\n' % ver)
elif line.startswith('build_number:'):
# build_number 由版本号公式派生(major*10000+minor*100+patch),与 pubspec
# 的 CFBundleVersion 同源、天然单调。旧法「读仓库 version.yaml +1」有 bug:
# CI/本地发版都不回写仓库那份,它永远冻结 → 每次都算出同一个值(见 1.1.9/1.1.10
# 均为 5 的历史)。改公式后无状态依赖,CI 与 local-release 结果一致。
try:
b = int(line.split(':', 1)[1].strip()) + 1
_mj, _mn, _pt = (int(x) for x in ver.split('.')[:3])
b = _mj * 10000 + _mn * 100 + _pt
except Exception:
b = 1
out.append('build_number: %d\n' % b)
+5 -1
View File
@@ -381,8 +381,12 @@ for line in raw.splitlines(keepends=True):
if line.startswith('version:'):
out.append('version: "%s"\n' % ver)
elif line.startswith('build_number:'):
# build_number 由版本号公式派生(major*10000+minor*100+patch),与 pubspec
# 的 CFBundleVersion(BUILD)同源、天然单调。旧法「读仓库 version.yaml +1」有 bug:
# 仓库那份从不回写、永远冻结 → 每次都算出同一个值(1.1.9/1.1.10 均为 5)。
try:
b = int(line.split(':', 1)[1].strip()) + 1
_mj, _mn, _pt = (int(x) for x in ver.split('.')[:3])
b = _mj * 10000 + _mn * 100 + _pt
except Exception:
b = 1
out.append('build_number: %d\n' % b)