如何配置 buildbot 以便每次推送一次构建?
How to configure buildbot so that there is one build per push?
假设以下 git 在 master 中提交(我们使用 pull requests,但下面更容易重现问题):
$ 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),以便一次推送(或合并请求)只触发一个构建。
到目前为止我看过的内容:
- git+buildbot 在 SO
上标记问题
- http://docs.buildbot.net/0.8.10/manual/cfg-schedulers.html#change-filters - 它处理单个更改,但我指定哪些提交应触发一个构建
- http://docs.buildbot.net/0.8.10/manual/cfg-changesources.html#gitpoller -
pollInterval
很好,但是对于合并请求,可能会在短时间内将大量提交变成 master
使用 treeStableTimer
设置为您希望调度程序等待直到树不再更改的时间跨度的调度程序。例如 SingleBranchScheduler
支持它。说明如下:
treeStableTimer
The scheduler will wait for this many seconds before starting the build. If new changes are made during this interval, the timer will be restarted, so really the build will be started after a change and then after this many seconds of inactivity.
If treeStableTimer
is None
, then a separate build is started immediately for each Change.
我使用带 5 分钟计时器的 SingleBranchScheduler
,效果非常好。只要我提交,就不会开始构建。如果我停下来 5 分钟,然后构建开始。
我碰巧也在使用 git 但这个解决方案应该适用于任何版本控制系统。
假设以下 git 在 master 中提交(我们使用 pull requests,但下面更容易重现问题):
$ 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),以便一次推送(或合并请求)只触发一个构建。
到目前为止我看过的内容:
- git+buildbot 在 SO 上标记问题
- http://docs.buildbot.net/0.8.10/manual/cfg-schedulers.html#change-filters - 它处理单个更改,但我指定哪些提交应触发一个构建
- http://docs.buildbot.net/0.8.10/manual/cfg-changesources.html#gitpoller -
pollInterval
很好,但是对于合并请求,可能会在短时间内将大量提交变成 master
使用 treeStableTimer
设置为您希望调度程序等待直到树不再更改的时间跨度的调度程序。例如 SingleBranchScheduler
支持它。说明如下:
treeStableTimer
The scheduler will wait for this many seconds before starting the build. If new changes are made during this interval, the timer will be restarted, so really the build will be started after a change and then after this many seconds of inactivity.
If
treeStableTimer
isNone
, then a separate build is started immediately for each Change.
我使用带 5 分钟计时器的 SingleBranchScheduler
,效果非常好。只要我提交,就不会开始构建。如果我停下来 5 分钟,然后构建开始。
我碰巧也在使用 git 但这个解决方案应该适用于任何版本控制系统。