题
是否有合理的理由不使用SVN进行生产部署,或者这仅仅是个人喜好而没有针对SVN的真实案例?
背景
我的工作场所具有在SVN中标记发布的文化,然后使用(svn co
或svn switch
直接包括)将这些发布直接部署到各种Web服务器。
我个人对此有一个问题,因为我相信如果不使用构建和部署脚本,某种形式或自动部署,就会丢失集成环境设置,因为它们没有文档说明。然而,不仅如此,我有一种直觉,认为这样做可能存在隐藏的危险,而这种危险尚未被抬起头来。
我已经向负责将代码部署到我们的各种环境(阶段,预生产,生产)等中的运营人员提出了自己的担忧。他们的观点几乎是到目前为止效果很好,没有理由进行更改。
编辑:
我的意思是关于构建和部署:
例如,如果开发人员需要为特定环境添加web.config设置。Web.config通常不保存在svn中,因此无需任何形式的自动构建脚本即可手动更新这些文件。因此,如果它们丢失或OPS忘记为发行版在web.config中添加字段,则可能会遇到问题。
可以使用XMLPoke自动生成适合于特定环境的web.config的构建脚本非常理想,因为您有一个可版本化的脚本,该脚本记录了每个环境所需的所有更改。
当前的构建和部署方法
对于有问题的项目,开发人员可以手动构建发行版,而其他项目则可以使用NANT或MSBuild将构建步骤自动化。
对于大多数项目,数据库迁移是通过DB脚本,迁移脚本(Migrator.NET)或CMS程序包进行的。
CI通常是由Team City在每次签入的基础上完成的,我们有一个代码审查过程,所有票证都在分支机构中完成,然后在进入中继线之前进行同行审查,以确认其有效性和正确性/质量(运作良好)。
但是,实际的代码部署几乎总是通过SVN来进行,或者是通过签出带标记的版本,或更通常是通过SVN Switch来进行。在我们使用存储库作为部署过程的一部分时,这让我感到奇怪。
配置通常不会经常更改,配置文件中唯一会发生的事情就是特定于环境的信息。其他所有内容都在数据库中。
不要误会我的意思,这行之有效。但是,我想尝试推动自动化的构建和部署。我已经在Rails和Capistrano以及用于Cygwin,Nant和SSH的个人项目中使用了它。
更重要的是,我需要非常具体的有效参数来使我的同事转变为使用自动生成和部署。
还是没有真正的有效论据反对使用SVN专门部署到生产环境?