假设master中有以下git提交(我们使用pull请求,但下面的内容更容易重现问题):
$ git clone <my_repo> my_repo
$ cd my_repo
$ git checkout master
$ for delta in 17 34 68; do # touch & commit a file and then sleep for $delta
f=$(date +%H%M%S)-$delta # hhmiss dateformat
touch $f
git add $f
git commit $f -m"timestamped file $f"
sleep $delta
done
$ git push origin
并且有一个GitPoller
pollInterval=60, usetimestamps=False
此推送会导致触发2个构建:
我想配置buildbot(0.8.10),以便对于一次推送(或合并请求),只触发一次构建。
到目前为止我看过的内容:
pollInterval
很不错,但是通过合并请求,可能会在很短的时间内完成大量提交答案 0 :(得分:1)
使用treeStableTimer
设置为您希望调度程序等待树不再更改的时间跨度的调度程序。例如SingleBranchScheduler
支持它。它描述如下:
treeStableTimer
调度程序将在开始构建之前等待这么多秒。如果在此间隔期间进行了新的更改,则计时器将重新启动,因此实际上构建将在更改后启动,然后在此非活动数秒后启动。
如果
treeStableTimer
为None
,则会为每次更改立即启动单独的构建。
我使用SingleBranchScheduler
和5分钟的计时器,它的效果非常好。只要我提交,就没有开始构建。如果我停下来5分钟,那么就会开始构建。
我碰巧也在使用git,但这个解决方案适用于任何版本控制系统。