You need to enable JavaScript to run this app.
优惠活动
大模型
产品
解决方案
定价
更多

bump2version无法找到当前发布标签问题求助

问题:Semantic-Release 无法识别最新发布标签,版本更新工作流失败

背景

正在为Node.js应用升级工作流,添加自动版本更新功能。此前因.bumpversion.cfg文件拼写错误,工作流误将标签1.0.0作为起始发布版本;手动创建1.0.0、1.0.1版本后,删除了对应的发布记录及标签,现在工作流无法找到有效历史发布标签,导致版本更新失败。

已尝试操作

  • 手动修改文件中的版本号
  • 使用bump2version工具更新至预期版本
  • 使用bump2version工具更新至下一版本

报错信息

An error occurred while running semantic-release: Error: Command failed with exit code 2: bump2version --allow-dirty --current-version  --new-version 1.0.0 patch

相关配置

发布工作流配置

name: Create new release
on:
  workflow_dispatch:
  push:
    branches:
      - main
jobs:
  release:
    runs-on: ubuntu-latest
    if: "github.event_name == 'push' && github.ref == 'refs/heads/main' && !startsWith(github.event.head_commit.message, 'chore')"
    steps:
      - name: Checkout code
        uses: actions/checkout@v3
        with:
          fetch-depth: 0
          token: ${{ secrets.ADMIN_TOKEN }}

      - name: setup nodejs
        uses: actions/setup-node@v3
        with:
          node-version: '16'

      - name: release using semantic-release
        env:
          GITHUB_TOKEN: ${{ secrets.ADMIN_TOKEN }}
          GIT_AUTHOR_NAME: secrets.automation.dev
          GIT_AUTHOR_EMAIL: secrets.automation.dev@il.ibm.com
          GIT_COMMITTER_NAME: secrets.automation.dev
          GIT_COMMITTER_EMAIL: secrets.automation.dev@il.ibm.com
        run: |
          sudo apt-get update
          sudo apt-get install python
          pip install --user bumpversion
          npm install @semantic-release/changelog
          npm install @semantic-release/exec
          npm install @semantic-release/git
          npm install @semantic-release/github
          npx semantic-release

.bumpversion.cfg 配置

[bumpversion]
current_version = 1.0.40
commit = True
message = Update version {current_version} -> {new_version}

[bumpversion:file:package.json]
search = {current_version}
replace = {new_version}

.releaserc 配置

{
  "debug": true,
  "branches": [ "main" ],
  "plugins": [
    ["@semantic-release/commit-analyzer", {
        "preset": "angular",
        "releaseRules": [
            {"type": "release","release": "patch"}
    ]}],
    "@semantic-release/release-notes-generator",
    "@semantic-release/changelog",
    [
      "@semantic-release/exec",
      {
        "prepareCmd": "bump2version --allow-dirty --current-version ${lastRelease.version} --new-version ${nextRelease.version} patch"
      }
    ],
    [
      "@semantic-release/git",
      {
        "message": "chore(release): ${nextRelease.version} [skip ci] release notes\n\n${nextRelease.notes}"
      }
    ],
    "@semantic-release/github"
  ]
}

解决方案

问题根源

报错中--current-version参数后为空值,说明semantic-release无法读取到lastRelease.version。原因是删除历史标签后,semantic-release找不到有效的发布基线,无法识别最新版本信息。

修复步骤

  1. 重置版本基线标签
    在本地仓库创建并推送与.bumpversion.cfg中current_version一致的基线标签(semantic-release默认识别带v前缀的标签):

    git tag -a v1.0.40 -m "Set release baseline"
    git push origin v1.0.40
    
  2. 修正.releaserc中的bump2version命令
    当前命令额外指定了patch参数,会与semantic-release计算的版本变更类型冲突,且可直接让bump2version读取配置文件中的版本,修改prepareCmd为:

    "prepareCmd": "bump2version --allow-dirty --new-version ${nextRelease.version}"
    
  3. 验证修复
    推送符合commit规范的代码到main分支,或手动触发workflow_dispatch,检查工作流是否能正常生成新版本。

额外建议

  • 不要手动删除已推送的发布标签,如需调整版本基线,优先通过设置基线标签的方式处理
  • 确保.bumpversion.cfg中的current_version与package.json版本号一致,避免版本冲突

内容的提问来源于stack exchange,提问作者Killerz0ne

相关产品推荐
方舟 Agent Plan

超全模态模型 × Harness 升级,最新支持 Deepseek-V4.1-Flash、GLM-5.3 系列、Doubao-Seedream-5.0-pro、Kimi-K3 (部分), 限时 9.9 元起

最近更新时间:2026.08.09 03:15:40