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会看到它.
如何解决这个问题?有任何想法吗?
韦恩
您的构建系统不应与您的修订控制系统进行任何写入交互.它当然不应该自动推动这些变化.
您的构建系统可能会询问 git(git describe例如,通过)当前版本是什么.其他任何事情都是多余的,容易出错.
您可以考虑的另一件事是不轮询更改.这似乎是一种愚蠢的操作方式.(不可否认,我是一个沉重的buildbot用户,非常习惯于在事件中触发所有内容.)
被轮询的git repo知道它何时发生变化.它应该告诉CI系统立即启动构建.你可以更快地获得你的构建,因为它们都被触发了,你没有计算机坐在那里做很多工作没有充分的理由.
而答案是!...
Git Hudson 插件已经被某人分叉来添加这个功能,它运行良好。尽管如此,我还是必须删除源代码并修复一些小问题。
现在效果很好。构建提交,Git 插件推回存储库而不循环,认为它再次发生更改。
精彩的!
如果其他人需要此功能,请在 Github.com 上查找 Hudson-GIT-Plugin 的 tickzoom 分支,但检查是否已集成回主项目中。提交者表示他很感兴趣并计划合并这些分叉。
韦恩
| 归档时间: |
|
| 查看次数: |
3053 次 |
| 最近记录: |