使用智能构建器或许多调度程序来编译和测试5个构建

时间:2011-02-04 21:14:14

标签: python continuous-integration buildbot

我想设置一个包含三个操作系统(MacOSX,Windows和Linux)的持续集成环境。我需要构建五个不同的版本:win32bit,win64bit,lin32bit,lin64bit和mac。对于每个构建,我需要执行以下步骤:

-compile
-put some files in the binary folder
-make a 7z-archive of the binary folder
-upload the 7z-archive to a server

当然有依赖关系。例如,在编译失败时创建和上传7z-archive是没用的。

我的第一次尝试是构建一个调度程序和构建器的小型分层系统,但我不知道如何处理每个构建中的依赖项:

我的计划(Start_scheduler正在侦听svn提交):

\Start_scheduler, kicks off win_builder, lin_builder, and mac_builder
 \win_builder, compiles and uploads win32bit and win64bit
   -compile 32bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 32bit compile was succesful
   -compile 64bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 64bit compile was succesful
 \lin_builder, compiles and uploads lin32bit and lin64bit
   -compile 32bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 32bit compile was succesful
   -compile 64bit
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -trigger upload_scheduler to upload IF 64bit compile was succesful
 \mac_builder, compiles and uploads mac
   -compile
   -put some files in the binary folder
   -make a 7z-archive of the binary folder
   -triggerupload_scheduler to  upload IF compile was succesful
\upload_scheduler
 -upload 7z-archive to central server
 -send notification about new archive

基本上我有两个问题。首先,我如何定义编译和上传之间的IF依赖性,但同时使64位编译独立于32位编译:即使32位失败,构建系统也应该尝试编译64位。 第二,是否有可能对upload_scheduler进行参数化,以便我可以为每次构建重用它?如果我需要为每个构建维护一个单独的upload_scheduler,那将是单调乏味的。

3 个答案:

答案 0 :(得分:0)

Ant和Cruise Control在Java方面很好地处理了这种事情。

我想知道PyAnt是否可以帮助您使用Python。

答案 1 :(得分:0)

你几乎无法击败Hudson(现在称为Jenkins)作为Python的持续集成系统。谷歌为'哈德森蟒蛇'。

答案 2 :(得分:0)

您可以使用单独的平台构建,而不是在32位和64位构建中使用单个构建器,而这些构建将在单个构建池上运行。在这种情况下,32位构建与64位构建分开构建,一个构建永远不会失败。

关于上传计划程序,您可能需要查看TriggerableScheduler

相关问题