我怎样才能确保我所有的哈德森构建奴隶检查出每日构建的相同svn修订版?

Jer*_*ner 5 svn hudson build race-condition

我的工作场所使用Hudson进行日常构建,有几个构建从属服务器(一个Linux,一个Windows,一个Mac)从svn检查我们的完整代码库,并在每天午夜构建我们的应用程序.一切都运作良好.

偶尔会出现一些问题......有时开发人员会工作到很晚,并会在午夜之后检查svn的更改.发生这种情况时,某些每日构建从服务器可能会在处理svn提交之前执行'svn checkout',而其他构建从服务器将在处理提交后执行此操作.当发生这种情况时,我们最终会在不同平台上构建不同的版本...例如,Mac版本可能是SVN版本5555的版本,而Windows版本最终是SVN版本5556的版本.这很糟糕,因为我们想要所有特定日期的每日构建基于相同的代码库.

我想避免这种情况的一种方法是禁止开发人员在晚上11:30到12:30之间提交svn,但我更喜欢一种更优雅的解决方案,它不依赖于开发人员的行为.有吗?特别是,如果有办法告诉hudson检查当前午夜当前代码的修订版本(例如"svn co -r {"the-current-date"}")而不是签出HEAD,我认为这可能会成功.

是否有一种常见/简单的方法来处理这个问题?

Pet*_*tze 3

该解决方案在一定程度上取决于您如何开始构建。如果它们都启动了定时器,您可以让它们同时启动。最终进行不同修订的风险将很小。一个更优雅的版本是让一个作业触发所有构建作业,将修订版作为参数传递。如果构建不太长,您可以构建一项作业,然后将修订传递给所有其他作业。

编辑:目前 Hudson (1.376) 不支持以下内容

我还发现了一本不错的svn 书。它指出您可以用花括号中的日期替换修订版本。<svn-url>@{00:00}所以你可以在你的工作配置中尝试。