Maven Release-plugin"标签已存在",适用于不存在的标签

Vin*_*nce 8 git bamboo maven bitbucket-server svn2git

我的设置:-server git上的-repository Atlassian StashAtlassian Bamboo.我使用的是Maven 3.1.1release-plugin 2.3.2.该计划Bamboo看起来像这样:

  1. git-repository退房
  2. 执行一个 clean install
  3. 表演release:preparerelease:performignoreSnapshots=trueresume=false

直到最后一步的一切都运行良好,但Maven声明它无法标记版本,因为标签已经存在.这是日志:

build   26-Nov-2013 10:36:37    [ERROR] Failed to execute goal org.apache.maven.plugins:maven-release-plugin:2.3.2:prepare (default-cli) on project [PROJECT-NAME]: Unable to tag SCM
build   26-Nov-2013 10:36:37    [ERROR] Provider message:
build   26-Nov-2013 10:36:37    [ERROR] The git-tag command failed.
build   26-Nov-2013 10:36:37    [ERROR] Command output:
build   26-Nov-2013 10:36:37    [ERROR] fatal: tag '[PROJECT-NAME]-6.2.2' already exists
Run Code Online (Sandbox Code Playgroud)

好吧,显然标签已经存在,没什么大不了的.但是,这就是git tag我的存储库的样子:

bash:~/git/repositories/PROJECT-NAME$ git tag
[PROJECT-NAME]-5.2.5
[PROJECT-NAME]-5.3.0
[PROJECT-NAME]-5.3.1
[PROJECT-NAME]-5.4.0
[PROJECT-NAME]-5.5.0
[PROJECT-NAME]-5.5.1
[PROJECT-NAME]-5.5.2
[PROJECT-NAME]-5.5.3
[PROJECT-NAME]-5.5.4
[PROJECT-NAME]-5.6.0
[PROJECT-NAME]-5.6.1
[PROJECT-NAME]-5.6.2
[PROJECT-NAME]-5.6.3
[PROJECT-NAME]-5.6.4
[PROJECT-NAME]-5.6.5
[PROJECT-NAME]-5.6.6
[PROJECT-NAME]-6.0.0
[PROJECT-NAME]-6.0.1
[PROJECT-NAME]-6.0.2
[PROJECT-NAME]-6.1.0
[PROJECT-NAME]-6.1.1
[PROJECT-NAME]-6.1.2
[PROJECT-NAME]-6.2.0
[PROJECT-NAME]-6.2.1
Run Code Online (Sandbox Code Playgroud)

所述git-repository通过克隆svn2gitsvn-repository.我已多次尝试重新导入存储库,并在stash-server 上删除并重新克隆它.然而,标签6.2.2似乎存在于某个深处Maven.这里发生了什么?

更新:我刚刚尝试从存储库中删除所有标记.结果相同.将版本更改6.2.26.2.3显示正面结果.

另一个更新:它似乎与存储库的名称有关.创建一个具有相同名称但-2在最后添加的新存储库有帮助.

Pet*_*lay 5

mvn release:clean以前release:prepare对我有用


小智 5

在之前的发布失败后,我在 Jenkins 发布版本中一次又一次地遇到了这个错误。我恢复了发布之前的存储库状态,并使用 验证该标签不再存在git tag。为了绝对确定,我还使用以下命令在本地和远程删除了标签:

git tag --delete mytag
git push --delete origin mytag
Run Code Online (Sandbox Code Playgroud)

两个命令都报告该标签不存在。不管怎样,发布版本一直失败

[ERROR] The git-tag command failed.
[ERROR] Command output:
[ERROR] fatal: tag 'mytag' already exists`.
Run Code Online (Sandbox Code Playgroud)

我终于通过启用选项解决了这个问题

Build Environment -> Delete workspace before build starts
Run Code Online (Sandbox Code Playgroud)

因此,问题在于,在发布构建失败后,Jenkins 工作区会留下脏存储库状态,其中标签仍然存在。


Vin*_*nce 2

就在我最后一次发现“缓存问题!”之后不久。我找到了解决方案。我按照本网站上的说明删除了所有存储库缓存数据:https://confluence.atlassian.com/display/BAMKB/Git+cache+removal+in+Bamboo

  • 如果构建工具是 Jenkins,你知道该怎么做吗? (3认同)