¿Cómo configurar Buildbot para que haya una compilation por inserción?

Suponiendo que el siguiente git se confirma en el maestro (usamos requestes de extracción, pero a continuación es más sencillo reproducir el problema):

$ 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 

Y hay un generador con un GitPoller con pollInterval=60, usetimestamps=False

Este impulso da como resultado 2 comstackciones que se activan:

  • la primera compilation recoge el primer compromiso
  • la segunda compilation recoge las otras dos confirmaciones (ya que las confirmaciones se acumulan mientras se espera que se complete la construcción)

Me gustaría configurar buildbot (0.8.10) de modo que para un empuje (o request de fusión) solo haya una generación activada.

Lo que he visto hasta ahora:

  • preguntas labeldas de git + buildbot en SO
  • http://docs.buildbot.net/0.8.10/manual/cfg-schedulers.html#change-filters : se trata de un cambio individual, pero especifico qué confirmaciones deben desencadenar una compilation
  • http://docs.buildbot.net/0.8.10/manual/cfg-changesources.html#gitpoller – pollInterval es agradable, pero con una request de fusión, potencialmente toneladas de commits entran en dominio en poco time

Use un progtwigdor que tenga treeStableTimer establecido en el lapso de time durante el cual desea que el planificador espere hasta que el tree ya no cambie. Por ejemplo, SingleBranchScheduler admite. Se describe de la siguiente manera:

treeStableTimer

El progtwigdor esperará por tantos segundos antes de comenzar la compilation. Si se realizan nuevos cambios durante este intervalo, el timer se reiniciará, por lo que en realidad la compilation se iniciará después de un cambio y luego de estos muchos segundos de inactividad.

Si treeStableTimer es None , se inicia una compilation por separado para cada cambio.

Yo uso SingleBranchScheduler con un timer de 5 minutos, y funciona muy bien. Mientras me comprometo, no se inicia la construcción. Si me detengo durante 5 minutos, comienza una construcción.

Yo también uso git pero esta solución debería funcionar con cualquier sistema de control de versiones.