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

哈德森的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系统立即启动构建.你可以更快地获得你的构建,因为它们都被触发了,你没有计算机坐在那里做很多工作没有充分的理由.

本站公众号
   欢迎关注本站公众号,获取更多程序园信息
开发小院