使用 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 或类似工具进行自动化部署的主要内容,如果未能解决你的问题,请参考以下文章

自动部署工具ant

jenkins ios 自动化打包一定要在mac下吗

怎么把java自动化代码提交到jenkins

基于ant自动部署ear/war 文件到weblogic12c

如何利用jenkins来做android自动化

用Ant实现Java项目的自动构建和部署