使用Hudson + Git + Maven Release Plugin无法自动发布

Chr*_*ier 13 git maven-2 hudson

正如标题所说,我正在努力获得一个在Hudson上工作的自动发布工作.这是一个Maven项目,所有代码都在Git中.手动,我在我的个人机器上发布如下:

git checkout master
mvn -B release:prepare release:perform
Run Code Online (Sandbox Code Playgroud)

这非常有效.Maven发布插件正确地将发布标记推送到原始存储库以及将版本压缩到下一个SNAPSHOT的下一个提交.

但是,当我通过Hudson运行这个相同的Maven工作时(通过创建我自己的"发布"工作或使用M2 Release Plugin)它不能很好地工作.release标记被推送到原始存储库,并且该版本被推送到我们的Nexus存储库,但是随后的提交将版本压缩到下一个SNAPSHOT并不会消失.此外,原始存储库中的"主"分支根本不会更改.不过,我已经查看了Hudson的工作区,并且版本已经更新.

在查看Hudson作业的输出后,看起来Git插件实际上并没有签出"master",而是它的SHA1 id.也就是说,如果"master"分支标签指向提交"f6af76f541f1a1719e9835cdb46a183095af6861",Hudson会

git checkout -f f6af76f541f1a1719e9835cdb46a183095af6861
Run Code Online (Sandbox Code Playgroud)

代替

git checkout -f master
Run Code Online (Sandbox Code Playgroud)

因此,Maven发布插件所做的更改实际上并不在任何分支上(当然不在"master"上),并且这些更改不会进入原始存储库.它运行在正确的代码上,但记账明智,变化似乎迷失了,因为没有分支标签指向它们.

有没有人得到Hudson + Git + Maven Release Plugin组合才能正常工作?我可以设置一些额外的配置来实现这一目标吗?或者这是Hudson Git插件中的错误?

提前致谢.

cem*_*ick 5

编辑消除过时信息.

有关当前(非hacky)解决方案,请参阅此答案.


Chr*_*ier 3

经过一番摆弄之后,我尝试将自动发布设置为独立作业(即不使用 M2 发布插件)。我没有将作业设置为“构建 maven2 项目”,而是将其设置为“构建自由式软件项目”作业。它做的第一件事是执行 shell 命令:

git checkout master
Run Code Online (Sandbox Code Playgroud)

下一步是 Maven 调用,配置如下:

-e -B release:prepare release:perform
Run Code Online (Sandbox Code Playgroud)

第一个 shell 命令是关键;现在我实际上在一个分支上,发布插件执行的所有更改都会被推回原始存储库。

虽然这在技术上回答了我自己的问题,但我仍然很好奇其他人使用 Hudson + Git + Maven Release 插件组合的体验。

谢谢