我们的构建/部署过程非常繁琐,充分手动且容易出错。你能提出改进建议吗?如何改进我们的构建和部署过程?
因此,让我描述我们的部署策略和构建过程。 我们正在开发名为Application Server(简称AS)的系统。它基本上是基于servlet的web应用程序,它驻留在JBoss Web服务器上。 AS可以安装在两个“环境”中。每个环境都是一个带有webapp代码的目录。该目录放置在网络存储上。存储安装到安装了JBoss实例的多个生产服务器上。目录链接到JBoss'webapps
目录。因此,所有JBoss实例对环境使用相同的代码。 JBoss的配置与环境是分开的,并且基于实例进行更新。
因此,我们有两种类型的补丁:Web应用程序的补丁(针对不同的环境),并配置补丁(每个实例配置)
补丁是一个可执行文件。实际上它是带有嵌入式二进制rpm包的bash脚本。安装非常简单:您只需执行文件并选择回答一些问题。重要的一点是,修补程序不是整个系统 - 它只包含一些修正配置文件的类和/或修改配置文件的脚本。类被复制到WEB-INF /类中(AS被部署为爆炸目录)。
我们建立这些pathes的方法是:
- 我们采取了一些以前的补丁文件,并复制它们。
- 修改补丁的内容。其中最重要的部分是RPM规范。在那里,我们更改补丁的名称,更改其先决条件rpm包并写下实际的bash命令以备份,复制和修改文件。这是最令人讨厌的部分之一,因为我们并不总是可以得到实际的变更。对于跨越多个变更请求和提交的新复杂功能尤其如此。另外,编写这些变更集的命令也很乏味且容易出错。
- 对于webapp补丁,我们还修改了其他环境的规范。除了rpm包名以外,它们通常是相同的。
- 我们把所有与rpm相关的文件都放到了VCS中
- 我们通过添加一些构建新补丁的目标来修改build.xml。修改是通过复制和编辑完成的。
- 我们通过copypasting项目并在
- 改变Ant目标最后修改CruiseControl的配置,我们建立了一个系统
另外,我感兴趣的是在贴剂和部署实践的任何引用,最好是Java应用程序。我没有成功使用Google搜索。
浪费任何定义,计算CPU秒而不是雇员天需要有点反思的。 – soru 2010-07-16 15:54:02
谢谢你的回答。不幸的是,我们现在需要修补程序。补丁通常代表特征,其中一些特定于客户,另一些独立于其他特征等。该项目是未来的产品线。同时,我们既没有架构也没有SCM支持。说实话,我不知道我应该从哪边咬这头大象。 – Rorick 2010-07-19 12:26:20
曾经是市场上称为RTPatch的Windows软件产品。该产品会比较两个版本,称它们为v2.3和v2.4,并生成一个windows程序,其数据可以将用户机器上安装的v2.3更改为v2.4。也许这样的事情。但严重的是 - 现在没有比现在更好的时间来处理供应链管理问题,特别是如果你希望把你的软件变成现金牛。 – 2010-09-08 12:09:42