使用 Ant 或类似工具进行自动化部署
Posted
技术标签:
【中文标题】使用 Ant 或类似工具进行自动化部署【英文标题】:Automated deployment using Ant or similar 【发布时间】:2011-01-23 14:15:39 【问题描述】:我想梳理一下我们的部署过程,我希望使用 Ant 或类似的构建工具来设计和实现将特定 SVN 修订版一键部署到多个服务器。
我们使用 ColdFusion 作为我们的应用程序服务器,因此我们通常只需将一组更改的文件上传到我们所有的服务器。没有编译步骤。
流程如下:
从 SVN 获取特定版本并将其导出到临时目录 将目录中的所有文件复制/FTP到一组Web服务器 根据测试/暂存/生产等需要切换部署目标。 将来我们希望在此过程中添加数据库架构更改是否可以使用 Ant 来完成这项工作,或者是否有更好的开源工具来完成这项工作?我对 SVN 集成特别感兴趣。
我很想听听这方面的任何经验。提前致谢。
【问题讨论】:
【参考方案1】:是的,这个有很多来源:
http://subversion.open.collab.net/articles/IntegratingSubversionIntoYourAntBuild.html
http://ant.apache.org/manual/Tasks/ftp.html 或 http://www.developer.com/java/print.php/998241
另外,我不确定 Cold Fusion 世界中的等价物是什么,但您应该研究一下单元测试和 linting 工具。 linting 工具可以检查无效的语法和基本结构。无效的语法部分是关键。因为如果出现问题,您可以让任务停止,而不是部署已知损坏的代码。
这只是设置各个目标(任务)并以正确的顺序将它们串在一起的问题。
【讨论】:
MXUnit.org 有一些关于使用 Hudson 实施 MUUnit 以支持持续集成过程中的测试的博客文章。【参考方案2】:如果你准备好学习一点,我建议你切换到Maven和朋友。 Maven 基本上使整个开发、测试、部署和管理变得非常简单和可靠。
有一些插件可以在整个过程中为您提供帮助。 SVN 与 Maven 集成,因此您不会有任何问题。
这里是短名单
-
使用 Maven SCM plugin 签出/导出代码。
Maven 将为您执行特定的构建并打包代码。
使用Maven Cargo plugin 将打包的工件/Jar/War 上传到您的服务器。您也可以重新启动服务器。
您在 Maven 中有 build-profiles,您可以根据平台(Unix、Mac、Windows 等)和环境(开发、测试、产品等)定义构建和部署行为。
在发布时,您可能希望将代码版本升级到下一个 SNAPSHOT 版本。这在 Maven 中也是自动化的。
Maven 与Liquibase 的集成非常棒。它使您的数据库更改能够如此可靠地执行,以至于您会找到不同之处。您将像管理 Java 代码一样管理数据库更改。在小的可回滚的变更集中,在生产环境中工作时给人很大的信心。
【讨论】:
以上是关于使用 Ant 或类似工具进行自动化部署的主要内容,如果未能解决你的问题,请参考以下文章