自动升级版本号、创建 git commit 和 tag。
快速使用:
# 补丁版本升级 (0.1.0 -> 0.1.1) - Bug 修复
python scripts/bump_version.py patch
# 次版本升级 (0.1.0 -> 0.2.0) - 新功能
python scripts/bump_version.py minor
# 主版本升级 (0.1.0 -> 1.0.0) - 重大变更
python scripts/bump_version.py major
# 手动指定版本
python scripts/bump_version.py --version 0.2.5
# 自动推送到远程
python scripts/bump_version.py patch --push
# 跳过确认
python scripts/bump_version.py patch --yes工作流程:
- ✅ 从
pyproject.toml读取当前版本 - ✅ 根据类型计算新版本号
- ✅ 更新
pyproject.toml - ✅ 创建 git commit
- ✅ 创建 git tag (格式:
vX.Y.Z) - ✅ (可选) 自动推送到远程
检查当前版本是否已在 PyPI 上存在,防止重复发布。
快速使用:
# 检查版本冲突
python scripts/check_version.py使用场景:
- ✅ 手动发布前检查
- ✅ CI/CD 流程中自动检查 (已集成到
.github/workflows/publish.yml) - ✅ 网络异常时快速失败,避免误判为“首次发布”
# 1. 升级版本并自动创建 tag
python scripts/bump_version.py patch --yes
# 2. 推送到远程 (触发 GitHub Actions)
git push origin main
git push origin v0.1.1 # 替换为实际版本号
# 3. GitHub Actions 自动完成:
# - 版本冲突检查
# - 构建包
# - 发布到 PyPI
# - 创建 GitHub Release# 1. 检查版本是否冲突
python scripts/check_version.py
# 2. 手动修改 pyproject.toml 中的版本号
# version = "0.1.1"
# 3. 提交并创建 tag
git add pyproject.toml
git commit -m "chore: bump version to 0.1.1"
git tag -a v0.1.1 -m "Release 0.1.1"
# 4. 推送
git push origin main
git push origin v0.1.1-
主版本号 (MAJOR): 不兼容的 API 变更
python scripts/bump_version.py major # 1.0.0 -> 2.0.0 -
次版本号 (MINOR): 向下兼容的新功能
python scripts/bump_version.py minor # 1.0.0 -> 1.1.0 -
补丁版本号 (PATCH): 向下兼容的 Bug 修复
python scripts/bump_version.py patch # 1.0.0 -> 1.0.1
版本检查已自动集成到 GitHub Actions 发布流程:
# .github/workflows/publish.yml
- name: 🔍 Check version conflict
run: python scripts/check_version.py工作原理:
- 当推送
v*tag 时触发 workflow - 自动在 Linux/macOS/Windows 上执行测试
- 自动检查版本是否已存在于 PyPI
- 如果网络异常,立即失败并提示(需重试)
- 如果冲突,立即失败并提示
- 通过检查后继续构建和发布
# 升级到下一个版本
python scripts/bump_version.py patch --yes
git push origin main
git push origin v0.1.2# 删除本地 tag
git tag -d v0.1.1
# 删除远程 tag
git push origin :refs/tags/v0.1.1- 检查 Actions 日志
- 确认版本号没有冲突
- 检查 PyPI token 配置 (
PYPI_API_TOKEN)
-
✅ 每次发布前运行检查:
python scripts/check_version.py
-
✅ 使用自动化脚本避免手误:
python scripts/bump_version.py patch --yes
-
✅ 遵循语义化版本规范
-
✅ 在 CHANGELOG.md 中记录变更
-
✅ 测试通过后再发布:
pytest # 运行测试 python scripts/bump_version.py patch --push
- 查看脚本源码:
scripts/bump_version.py,scripts/check_version.py - 查看 CI 配置:
.github/workflows/publish.yml - 提交 Issue: GitHub Issues