我收到test
分支上CI触发的语义释放错误
Command failed with exit code 128: git tag vX.XX.XX <commit id>
fatal: tag 'vX.XX.XX' already exists
当我推送未发布的无效代码时,问题就开始了,所以为了回滚更改,我做了git reset --hard <to-id-with-last valid version>
。
* commitB my invalid changes
|
* commitA - refactor: last publish working version # => v4.2.0
|
* commit0 - older code
|
复位后git reset --hard commitA
* commitA - refactor: last publish working # now failed
|
* commit0 - older code # => v4.1.0
|
代码看起来不错,但语义释放失败,错误为:
Command failed with exit code 128: git tag v4.2.0 commitA
fatal: tag 'v4.2.0 ' already exists
我在文档中找到了故障排除,这适合这种情况-推送标签时参考已存在错误:
semantic-release读取发布分支历史记录中的Git标签,以确定发布的最新版本,然后根据此后推送的提交来确定发布的下一个版本,并创建相应的标签。如果仓库中已经存在名称为的标签,Git会抛出错误,因为标签在仓库中必须是唯一的。(...)如果发布了一个具有该版本号的实际发布,你需要将所有到该发布的提交合并到你的发布分支中。
版本v4.2.0
已经发布了,但是现在没有了。当我推送更新的代码时,它也失败了,并出现了同样的错误。
* commitC - chore: newer changes # failed
|
* commitA - refactor: # failed
|
* commit0 - older code # => v4.1.0
|
Command failed with exit code 128: git tag v4.2.0 commitC
fatal: tag 'v4.2.0' already exists
如果我能够用下一个版本v4.3.0或4.2.1发布此代码并跳过无效发布,所有问题都可以修复。
1条答案
按热度按时间d4so4syb1#
我在一次失败的构建后遇到了同样的问题。在Azure构建管道中,我在语义发布任务中得到了错误
Command failed with exit code 128: git tag 'v1.0.0-beta.39' already exists
。我的解决方案是:
git tag -d v1.0.0-beta.39
git push origin :refs/tags/v1.0.0-beta.39
"version": "1.0.0-beta.38"