2009-05-03 65 views
2

假设您有两位开发人员在他们的笔记本电脑本地工作(A和B)。他们每个都有SVN回购的工作副本,并且他们在VS中编码。每个人都有一个完整的应用程序副本。他们在每个停靠点都回复SVN。您如何影响集成服务器上的构建?

您有一个集成/测试服务器(C),它有另一个工作副本,每当您想测试时都会更新它。

您也可以拥有从C

一个生成后XCOPY

说出代码是一个Web应用程序项目生产服务器(d),所以它需要一个明确的版本(而不是一个网站只需要源代码并即时创建的项目)。

你如何在集成服务器(C)上管理它?

如果开发人员创建自己的机器上(A和B),然后按下DLL来整合服务器(C)......这是行不通的,因为在整合服务器必须从他们两人采取代码开发一个通用的DLL。所以,所有的源代码必须到达集成服务器(C),在那里建立,只需要将所需的文件和DLL推送到生产(D)。

如何管理集成服务器(C)上的构建?你有从命令行定时构建?你是否在集成服务器(C)上安装VS并构建这种方式?如果从命令行执行,如何管理VS通常在CSPRJ或SLN文件中管理的必需参考和其他设置?

+0

感谢所有评论。我们最终设置了CruiseControl,我们使用Nant中的CSC任务直接从集成服务器上的命令行构建。它工作得非常好,给我们带来了更多控制和标准构建的好处,您可以从一堆开发人员那里获得VS的本地副本。 – Deane 2009-05-19 22:13:48

回答

2

此问题的最佳解决方案是使用CruiseControl等连续构建解决方案。在确定自己做这件事的所有缺陷时,你是正确的,最终,建立第三方软件包并不需要自己解决这些问题就简单多了。

CruiseControl的可以被配置为基于一个颠覆建立提交,定时的基础上,或按需。另外,它还可以运行所有的单元测试,并在出现问题时提醒用户。这是一个非常棒的套餐。

0

我们还使用svn repo中的subversion commit hook来激活每次提交的单元测试构建。我们链接不同的构建,因此集成测试和Web测试在单元测试构建绿色时运行。此外,我们真的希望将发布版本链接到所有这些版本的最后,但是我们的集成测试对于此不够稳定(开发中SLA较差的片状后端环境 - 我讨厌它!)。目前我们手动启动发布版本。从质量角度来看,我们可以从所有绿灯直接进入验收测试服务器,但这意味着您可能需要在验收测试中运行交替图像,因为如果每次构建系统时都会重新部署,构建系统可能会造成相当多的停机时间成功的提交已经完成。 (在我们的项目,我们会下来的大部分时间上午10点至下午2点,因为有在那个时候提交的continious流;)

+0

但是你怎么实际执行构建?命令行? CC.Net? – Deane 2009-05-03 13:41:36

0

我们使用巡航控制系统为一体的服务器上持续集成。我们的巡航控制脚本执行以下步骤:

  • 从cc上下载最新的SVN代码。网络服务器
  • 执行MSBUILD文件编译的最新代码下载
  • 复制发布版本中的一个单独的文件夹
  • 我们维持“释放”建立一个单独的文件夹,所以相同的脚本也犯了最新版本的SVN “释放”分支
  • 执行测试用例[使用内置NUnit的]
  • 发送出含有生成的状态&测试执行一个电子邮件导致

上述命令都在我们的CC.net服务器上进行配置,并计划在上午1点执行。为了便于维护,我们在集成服务器上部署了我们的CC.net服务器。这也有助于我们自动执行我们的测试用例并发送结果(如果它是一个Web应用程序)。任何代码破坏都会通过电子邮件发送给配置的订阅者,并在第二天进行适当的操作。

一旦集成服务器上的一切正常,我们只需“更新”生产服务器上的“发布”分支。

您可以找到有关cc.net更多信息here

,如果你需要与脚本的帮助,我一定能够帮助您。

相关问题