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

但是偶尔会出现问题……有时开发人员会工作到很晚,并且会在午夜之后检查对svn的更改。发生这种情况时,某些日常构建从属可能会在处理svn提交之前进行“svn checkout ”,而其他一些构建从属会在处理提交之后进行“svn checkout ”。发生这种情况时,我们最终会在不同平台上构建不同的修订版本,例如Mac版本可能是SVN版本5555的版本,而Windows版本最终是SVN版本5556的版本。这很不好,因为我们希望给定日期的所有日常版本都基于相同的代码库。

我想避免这种情况的一种方法是,禁止开发人员在11:30 PM到12:30 AM之间进行svn的操作,但是我更喜欢一种不依赖开发人员行为的更优雅的解决方案。有一个吗?特别是,如果有一种方法可以告诉hudson check out 当前日期午夜的当前版本的代码(例如“svn co -r {” the-current-date“}”),而不是 check out HEAD,我认为可以解决问题。

是否有常见/简便的方法来解决此问题?

最佳答案

解决方案在某种程度上取决于您如何开始构建。如果它们都是计时器启动的,则可以让它们同时启动。您最终获得不同修订版本的风险将降至最低。一个更优雅的版本是拥有一个作业,该作业将触发您的所有构建作业,并将修订作为参数传递。如果构建时间不太长,则可以构建一个作业,然后将修订版本传递给所有其他作业。

编辑:目前, hudson (1.376)不支持以下功能

我还发现了一个不错的svn book。它指出您可以用大括号中的日期替换修订。因此,您可以在作业配置中尝试<svn-url>@{00:00}

关于svn - 如何确保我的所有hudson构建从属都为每日构建 checkout 相同的svn版本?,我们在Stack Overflow上找到一个类似的问题:https://stackoverflow.com/questions/3380979/

10-14 16:07
查看更多