想象一下,我有一个带有 Java webapp 的普通持续交付场景。
这个场景有: - 一个运行 Cruisecontrol 的构建服务器 - 一个运行 Tomcat 并运行 Tomcat 管理器的 Web 服务器
构建服务器上运行的 Ant 构建目标之一构建一个 war 文件,然后使用 catalina-ant 使用 Tomcat 管理器远程部署 Web 服务器。
为了真正有用——我们需要能够回滚部署。鉴于这种香草设置,我需要哪些额外的难题才能回滚到最后一个已知的良好配置?
想象一下,我有一个带有 Java webapp 的普通持续交付场景。
这个场景有: - 一个运行 Cruisecontrol 的构建服务器 - 一个运行 Tomcat 并运行 Tomcat 管理器的 Web 服务器
构建服务器上运行的 Ant 构建目标之一构建一个 war 文件,然后使用 catalina-ant 使用 Tomcat 管理器远程部署 Web 服务器。
为了真正有用——我们需要能够回滚部署。鉴于这种香草设置,我需要哪些额外的难题才能回滚到最后一个已知的良好配置?
主要工具似乎是AntHill Pro和UDeploy(都来自 UrbanCode - 现在是 IBM 的一部分)。Anthill OS似乎已经退役。
看起来Go CD Sever也可以用于此。
采用一次构建多次部署的方法
在某个存储库中维护您的二进制文件(战争文件)(例如最近 10 个构建)
跟踪当前部署的版本
要回滚新版本,只需根据 #3 重新部署旧版本表单 #2
您可以尝试一些不同的方法,步骤是:
1. 假设您有名为 /opt/wars
的文件夹 2. 在此文件夹中,您有带有版本的子文件夹,例如
/opt/wars
|-my-server-0.0.1/
|--my-server.war
|-my-server-0.0.2/
|--my-server.war
|-my-server-0.0.3/
|--my-server.war
|-current --> my-server-0.0.3
3. 在部署之前,您总是使用新版本创建新文件夹,例如版本 0.0.4
/opt/wars
|-my-server-0.0.1/
|--my-server.war
|-my-server-0.0.2/
|--my-server.war
|-my-server-0.0.3/
|--my-server.war
|-my-server-0.0.4/
|--my-server.war
|-current --> my-server-0.0.3
4.一旦使用看到该版本准备就绪,您需要将“当前”链接更改为 my-server-0.0.4 文件夹
5.在回滚的情况下,您可以切换到以前的副本,只需更改链接即可。
考虑使用 CloudMunch 来解决这个问题。CloudMunch 存储您的构建的完整历史和链接到它们的工件,并允许您执行基于标签的搜索以找到正确的构建(除了明显的最后一个最好的构建并修复给定的缺陷等)
一旦你选择了构建,在没有任何 SQL 服务器的情况下,回滚会简单得多。如果您有数据库,请参阅我的答案以增量管理 SQL 更改 -如何持续交付基于 SQL 的应用程序?
免责声明:我在 CloudMunch 工作。