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

semantic-release无法识别集成前旧标签 如何设置发布起始版本

问题结论

支持,不需要单独设置所谓的“起始标签”。出现从v1.0.0-eng.1开始生成版本的问题,核心原因是semantic-release没有正确扫描识别到仓库里已有的历史标签,只要调整配置让它能正常读取、匹配现有标签,就会自动基于最新的历史版本接续生成新版本。

问题根因

semantic-release判断历史版本的逻辑是扫描本地仓库所有符合配置格式的git标签,按语义化版本规则排序后取最新值作为上一个版本。你遇到的问题通常由两个原因导致:

  • CI流水线默认使用浅克隆,没有拉取全量git历史和所有标签,semantic-release读不到历史标签,就会默认从初始版本开始生成
  • 配置的标签匹配规则、预发布通道设置和现有标签格式不匹配,导致已有的vX.Y.Z-eng.N格式标签被过滤掉
解决步骤
  • 第一步:修改CI配置,关闭浅克隆
    如果使用GitLab CI,在执行semantic-release的job里添加变量GIT_DEPTH: 0,保证流水线拉取全量提交记录和所有标签;其他CI工具对应找到关闭浅克隆、拉取全量标签的配置项即可。
  • 第二步:对齐semantic-release配置和现有标签规则
    在项目的semantic-release配置文件(.releaserc/release.config.js)里做如下调整,保证配置和现有的v<版本号>-eng.<序号>标签格式匹配:
    // release.config.js 示例配置
    module.exports = {
      branches: [
        // 替换为实际的发布分支名,比如main/release等
        {
          name: "release",
          prerelease: "eng" // 声明该分支产出的是eng通道的预发布版本
        }
      ],
      // 标签匹配格式,${version}会自动匹配完整语义化版本号(包含-eng.x后缀)
      tagFormat: "v${version}",
      plugins: [
        // 保留原有使用的插件列表即可
        "@semantic-release/commit-analyzer",
        "@semantic-release/release-notes-generator",
        "@semantic-release/gitlab"
      ]
    }
    
  • 第三步:验证配置生效
    本地拉取全量代码和所有标签后,执行npx semantic-release --dry-run,查看运行日志中识别到的last release版本,如果显示为仓库最新的v3.5.4-eng.1,说明配置正常,后续发布就会基于这个版本按commit信息自动递增版本号。

注:当前仓库里的v3.4.1-eng.1这类标签完全符合语义化版本规范,不需要额外做标签重命名或者特殊版本映射,只要能被semantic-release正常扫描到就可以被识别。

内容的提问来源于stack exchange,提问作者El Mehdi II

相关产品推荐
方舟 Agent Plan

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

最近更新时间:2026.08.28 06:09:20