¿Cómo puedo asegurarme de que todos mis esclavos hudson comstackn la misma revisión svn para la compilation diaria?

Mi lugar de trabajo usa Hudson para sus comstackciones diarias, con varios esclavos de compilation (un Linux, un Windows, un Mac) revisando nuestra base de código completa de svn y construyendo nuestra aplicación a la medianoche de cada día. Todo esto funciona bastante bien.

Sin embargo, hay un problema ocasional que ocurre … a veces un desarrollador estará trabajando hasta tarde, y verificará un cambio a svn justo después de la medianoche. Cuando esto ocurre, es posible que algunos de los esclavos de compilation diaria hagan su 'svn checkout' antes de que se procese el svn commit, mientras que otros esclavos de compilation lo harán después de que se procese el commit. Cuando esto sucede, terminamos con diferentes revisiones creadas en diferentes plataforms … por ejemplo, la compilation de Mac podría ser una compilation de la revisión SVN 5555, mientras que la compilation de Windows termina siendo una compilation de la revisión 5556 de SVN. Eso es malo, ya que queremos todas de las comstackciones diarias para un día determinado basadas en la misma base de código.

Supongo que una forma de evitar esto es prohibir a los desarrolladores que se comprometan con svn entre las 11:30 p.m. y las 12:30 a.m., pero preferiría una solución más elegante que no dependa del comportamiento de los desarrolladores. ¿Hay alguno? En particular, si hay una manera de decirle a Hudson que revise la revisión del código que estaba vigente a la medianoche del día actual (por ejemplo, "svn co -r {" the-current-date "}") en lugar de echarle un vistazo HEAD, creo que podría hacer el truco.

¿Hay una manera común / fácil de manejar este problema?

La solución depende un poco de cómo comienzas las comstackciones. Si están todos activados por timer, puedes permitir que todos comiencen al mismo time. El riesgo de que termine con diferentes revisiones será mínimo. Una versión más elegante es tener un trabajo que active todos los trabajos de construcción pasando la revisión como parámetro. Si la construcción no es demasiado larga, puede crear un trabajo que pase la revisión a todos los demás trabajos.

EDITAR: Hudson (1.376) no admite lo siguiente

También encontré un buen libro svn . Establece que puede replace la revisión con una date entre llaves. Entonces puede probar <svn-url>@{00:00} en la configuration de su trabajo.

Otra idea que encontré útil es compartir el mismo directory de origen entre los esclavos y tener un command svn up, esto networkinguce el time de actualización svn y también te libera del dolor de la synchronization.

Uso nfs en máquinas Linux, también funcionará sshfs.