乔尔 似乎 认为高度的日常生.对于一个传统的编制应用程序,我可以肯定看到他的理由,但这是如何并行过网络的发展--或不是吗

一位有关的项目,我要-- 有2的开发工作上的一个Django(Python)万维网应用程序。我们有1svn库。各开发维护的一个结帐和他们自己的副本MySQL本地运行的(如果你不熟悉它,它捆绑了它自己的测试服务器,多方式ASP应用程序可以运行的内部Visual Studio)。开发和测试都是在本地完成,然后提交回仓库。实际工作的副本,网站是一个SVN结账(我知道SVN出口和它的时间太长)。最近我们有一个'建立'的一批文件的运行SVN更新的工作副本,并django位('manage.py syncdb'),更新的搜索引擎高速缓冲存储器(solr),然后重新启动apache.

我猜是什么我看不是平行的网络应用程序。

你在做源控制网络应用程序与'晚间建立'--如果是这样,那是什么样的?

有帮助吗?

解决方案

您可以通过Django测试框架轻松运行所有Django单元测试作为您的夜间构建。

这就是我们所做的。

我们还有一些不利用Django功能的普通单元测试,我们也运行它们。

尽管Python(和Django)不需要编译语言的夜间编译/链接/单元测试,但您仍然可以从<!>的日常规则中受益;不要破坏构建<! > QUOT ;.每天对您拥有的所有内容进行单元测试是一件好事。

我们正在寻找Python 2.6(这对我们来说非常适合),并使用-3选项运行我们的单元测试以查看我们正在使用的已弃用功能。拥有一整套单元测试可以确保Python 3兼容性的更改不会破坏构建。每晚运行它们意味着我们必须确定我们才能正确重构。

其他提示

如果您有正确的流程,持续集成非常有用。如果您想建立熟悉度,JetBrains的TeamCity是一个很好的起点:

http://www.jetbrains.com/teamcity/index.html

这里有一篇很棒的文章直接与Django有关:

http://www.ajaxline.com/continuous-integration-in -django项目

希望这能让你开始。

使用动态语言构建的Web应用程序可能不需要<!>“编译<!>”;步骤,但仍然可以有一些<!> quot; build <!> quot;让应用程序运行所涉及的步骤。您的构建脚本可能会安装或升级依赖项,执行数据库迁移,然后运行测试套件以确保代码<!>“clean <!>”; w.r.t.存储库中的实际签入版本。或者,您可以将代码的副本部署到测试服务器,然后针对新版本运行一组Selenium集成测试,以确保核心站点功能仍然有效。

关于持续集成的主题可能会有所帮助,这对于webapp开发团队来说是一个非常有用的实践。您的开发过程越快,越敏捷,您就越需要从自动化测试和质量指标中定期输入,以确保您在任何损坏的代码版本上快速而大声地失败。

如果这真的只是你和一个其他开发工作,夜间的建立大概是不会给你多少。

我要说的是,网络应用程序,相当于每晚建立将是临时的网站(可以是建立夜间).

哪里的夜间建立一个临时区域开始支付真正的股息是,当你有客户,项目经理和质量保证的人,需要能够看到一个最新的,但相对稳定的版本的应用程序。你的开发sandbox(如果你像我一样,至少)可能花费很多时间在一种无法使用的状态为你打破东西,试图获得一个新的功能实施。这样的典型问题是,一个QA人想要验证一个缺陷是固定的,或一个下午要来检查,一些计划的特点是正确实施,或客户想见您已经取得进展的问题上,他们关心。如果他们只有访问开发sandbox,有一个很好的机会,当他们到周围看,无论是沙盘版本没有运行(因为它装置。/manage.py runserver是在一个终端的地方)或它处于中断状态,因为别的东西。这真的缓慢下来的整个团队和废物大量的时间。

它听起来像是你没有一个临时设置的,因为你只是自动更新的生产版。这可能是好的,如果你 方式 更加仔细和纪律,比我的(而我认为大多数开发人员)和从未提交任何不完全防弹。就个人而言,我想确保我的工作作出了它的通过至少某些粗略的QA通过其他人比我之前的生产。

所以,在结论,安装在那里我的工作:

  • 每个开发商运行自己的沙盒当地的(同为你这样做)
  • 还有一个"共同的"临时sandbox在开发服务器就得到更新,每晚从一定时任务.PMs、客户、与QA去那里。他们从来没有给出直接进入开发sandbox。
  • 有一个自动化的(虽然手动启动)部署到生产。开发或到可以"推"生产时,我们觉得事情已经足够QA会稳定和安全。

我会说唯一的缺点(除一些额外的开销设立了夜间临时建立)是,它使得一个一天的周转错误的验证。即、质量保证报告中的一个错误软件(基于上看着那一天的晚间建立)、开发人员修复的错误,并提交,然后QA必须等待,直到次日建立的检查,错误实际上是固定的。这是通常不那么多的问题,因为每个人都有足够的东西,它不会影响计划。当一个里程碑是接近尽管我们在一个功能冻结,修正的唯一模式,我们会做更频繁的手册的更新的临时网站。

我使用 Hudson 进行持续整合取得了巨大成功。通过 Redsolo 使用Hudson和Python的详细信息。

几个月前,有几篇文章支持持续部署引起网上轰动。 IMVU 详细介绍了他们部署最多5次日

频繁构建(夜间或更频繁,如持续集成)背后的整个想法是获得即时反馈,以减少问题的引入和检测之间经过的时间。因此,只有通过编译,(理想的自动化)测试,质量检查等能够产生一些反馈,经常建立才有用。没有反馈,没有实际意义。

许可以下: CC-BY-SA归因
不隶属于 StackOverflow
scroll top