Hudson无限循环轮询Git存储库中的更改?

Way*_*yne 6 git hudson infinite-loop polling

哈德森的git插件效果很好.但是,构建脚本必须更新存储库中的文件中的版本号,提交并推回到存储库.

当Hudson轮询旁边检查更改时,它进入无限循环,因为它看到提交为"更改"再次构建,提交更改,因此它再次构建,然后它提交另一个更改,等等...这个想法.

我停止了它,在每个存储库中运行了一个"git log",并使用git ls-tree HEAD比较了最新的提交ID是完全相同的

此外,Hudson运行此命令以检查更改:

git fetch + refs/heads/:refs/remotes/origin / git ls-tree HEAD

由于Hudson本身从其工作空间存储库推送提交,并且显然ls-tree结果匹配,该命令如何确定存在更改?

它似乎必须在构建之前存储ls-tree的结果,并与不具有最新提交的结果进行比较.啊.我可以尝试关闭提交来测试该理论.

无论如何,而不是修复Hudson的git插件中的任何问题,我可以做些什么来确保在我的构建结束时,repos是相同的,而Hudson会看到它.

如何解决这个问题?有任何想法吗?

韦恩

Dus*_*tin 5

您的构建系统不应与您的修订控制系统进行任何写入交互.它当然不应该自动推动这些变化.

您的构建系统可能会询问 git(git describe例如,通过)当前版本是什么.其他任何事情都是多余的,容易出错.

您可以考虑的另一件事是不轮询更改.这似乎是一种愚蠢的操作方式.(不可否认,我是一个沉重的buildbot用户,非常习惯于在事件中触发所有内容.)

被轮询的git repo知道它何时发生变化.它应该告诉CI系统立即启动构建.你可以更快地获得你的构建,因为它们都被触发了,你没有计算机坐在那里做很多工作没有充分的理由.


Way*_*yne 3

而答案是!...

Git Hudson 插件已经被某人分叉来添加这个功能,它运行良好。尽管如此,我还是必须删除源代码并修复一些小问题。

现在效果很好。构建提交,Git 插件推回存储库而不循环,认为它再次发生更改。

精彩的!

如果其他人需要此功能,请在 Github.com 上查找 Hudson-GIT-Plugin 的 tickzoom 分支,但检查是否已集成回主项目中。提交者表示他很感兴趣并计划合并这些分叉。

韦恩