做升级包其实不是一件很容易的事情,并不是完全没有技术含量的,另外也很需要耐心和细致。同时,如果平时有到位的管理手段,在制作升级包的时候也会提高效率,减少工作量
在前一家公司的时候,有一段时间负责维护公司的门户网站。虽然代码改动的频率也挺高的,不过每次升级就特别简单。
现在回头想想,这个简单是有原因的:
1、领导对网站可用性没有硬性的指标,所以找个夜深人静,甚至中午午休的时间升级就可以了,不需要热部署什么的
2、网站搞了几年下来,数据库表结构已经很稳定了,各种小修小改主要都是代码层面的。所以每次升级的时候,不涉及数据库脚本的升级
3、服务器就在公司机房,只有这么一套,所以不涉及版本管理的问题
4、每次升级也很简单粗暴,就是把整个.war包扔上去,重启,不需要做升级补丁
现在做的产品,上述的条件基本不具备:
1、应用如果停机升级的话,对商用会有很大影响,所以绝对不能频繁重启,要保证升级的成功率
2、应用尚未稳定,常常有数据库层面的变更。除了要专门制作数据库升级脚本之外,还要考虑保留业务历史数据,不能简单地drop create
3、应用不是集中部署的,在好几个局点都有不同的版本,研发除了trunk之外,还有若干个branch,所以涉及到版本管理的问题。比如说捷克跑的是B110,上海跑的是B080,那要一起升级到SPC001,就需要制作不同的升级包
4、升级不一定是全量替换,需要比对筛选出有区别的文件,以补丁的形式发布
这里先简要地记录几条制作升级包的注意事项,后续再慢慢完善
0、总的来说,制作升级包首先要明确两点,即现场的版本,以及目标版本。一个是头,一个是尾。明确了这一点,才能进行文件的比对,特别是比对sql脚本的差异,制作升级sql
1、对于代码文件的替换,比如.js,.css,.jsp,.class等,有一种最简单粗暴的方法,就是直接全量替换。比如说,直接把/jsp目录给全量替换了,不去考虑其中有哪些.jsp是改动过的
2、对上述代码文件的替换,如果平时有比较完善的管理手段,比如说每次修改都用列表进行记录,那在制作升级包的时候,就可以根据这个列表,筛选出修改的文件。但这依赖于平时的管理。还有一种方法,就是比如从B100升级到B110,可以取B100的tag,然后用svn的比对功能进行比对
3、对于配置文件的升级,因为可能开发提供的只是一个模板,实际是在现场进行配置的,比如说域名,IP这些,都是会根据现场的环境来调整的。所以这类配置文件的升级,可以在制作升级包时事先填好,也可以发布到现场,提供升级指导要求现场配置。
4、配置文件尽量集中存放,或者有详细的文档说明配置文件的位置,这样在制作升级包的时候才好筛选,以免遗漏。配置文件的修改,也可以在平时就进行跟踪记录
5、SQL脚本的升级,是最麻烦的。因为直接覆盖肯定是不行的,一般都需要比对前后sql的区别,专门制作升级脚本。比如B100是insert 123,B110是insert 456,那就需要专门写一个update 123 to 456
6、sql脚本也应该集中存放,这样制作升级包的时候就容易筛选比对
7、脚本的变化,是特别需要记录的。因为普通的文件,毕竟还可以全量替换。但是这个方法对sql脚本升级行不通,所以通常需要筛选,这样的话,平时的记录就可以发挥作用了
总结一下:
1、制作升级包的前提,是明确当前版本和目标版本。这样文件的比对才能有的放矢
2、文件的存放路径要可控。比如sql脚本统一存放,配置文件统一存放,jsp、js都有合理的目录规划,这样取文件才不会遗漏
3、普通的文件,有一种简单的方式是全量替换。即不管文件是否有改动,都统一覆盖一遍,这样肯定是不会有遗漏的。但是要注意一点,如果升级的时候,需要删除一些旧的文件,这个方法就行不通了
4、如果是配置文件,可能需要根据现场的情况,进行灵活的调整。可以在升级包里根据现场的情况事先配置好,也可以提供指导文档,在现场进行配置
5、对于sql文件,情况是最复杂的,需要比对2个版本的sql差异,专门制作sql升级脚本,比如update alter等
6、精确的方式,就不应该全量替换,而要筛选出需要升级的文件。这有两种方式,一种是依赖平时的跟踪记录。这种方式可以减少制作升级包时的工作量,但会增加平时的工作量。另一种方式是用svn进行比对
7、制作升级包时,还要考虑备份和回滚等,才能保证升级的安全性
分享到:
相关推荐
MT7687/MT7682升级包制作工具是一款专为MTK(MediaTek)MT7687和MT7682芯片设计的固件升级软件开发工具。这款工具的主要目的是帮助开发者和工程师创建针对这两种芯片的定制化升级包,以便于设备的维护和性能优化。 ...
卡巴斯基离线升级包制作工具是一款专为用户设计的便捷软件,主要用于在无网络连接的情况下更新卡巴斯基防病毒软件。这个工具尤其适用于网络环境不稳定或者需要在多台计算机上进行批量升级的情况。它支持卡巴斯基7.0...
标题中的“2009卡巴离线升级包制作工具.zip”指的是一个专门用于为2009版卡巴斯基反病毒软件创建离线更新包的压缩文件。这个工具允许用户在有网络连接的情况下下载所有最新的病毒定义和安全更新,然后将其转化为一个...
卡巴斯基2009离线升级包制作工具是一款专为卡巴斯基用户设计的实用程序,旨在解决在没有网络连接或网络环境不稳定时进行病毒库更新的问题。这个工具允许用户在有网络的情况下创建离线升级包,之后可以在无网络的...
卡巴斯基7.0版本离线升级包制作器是一款专为卡巴斯基安全软件7.0用户设计的工具,旨在帮助用户在没有网络连接的情况下也能完成防病毒数据库的更新。这款制作器允许用户将最新的病毒定义文件转换为一个RAR格式的离线...
下面我们将详细探讨OTA升级包制作脚本的相关知识点。 1. **OTA升级概述**: - OTA升级允许用户通过无线网络下载并安装更新,无需物理接触设备。 - 在OpenHarmony这样的操作系统中,OTA更新是系统维护和升级的重要...
卡巴斯基离线升级包制作器是一款专门针对卡巴斯基安全软件的工具,它允许用户在没有网络连接的情况下创建更新包。这个官方英文版本V2.1.2.25是为KIS(卡巴斯基互联网安全套装)2014版设计的,对应的具体版本号为14.0...
InstallShield 12 是一款强大的安装包制作工具,尤其适合创建 InstallScript 项目,它允许开发者构建复杂的安装程序,包括创建升级包。本教程将详细解释如何使用 InstallShield 12 制作 InstallScript 项目的升级包...
卡巴斯基离线升级包制作工具
卡巴斯基离线升级包制作工具,它会自动建一个以日期为文件夹名的文件夹。然后拷回上升级的机子上,再把升级数据源改成你这个文件夹的路径就可以了。很好用的哦……
该项目是一款基于Python及Java开发的升级包制作工具设计源码,包含44个文件,其中32个为Python源文件,其余包括3个Markdown文件、1个Git属性文件、1个许可证文件、1个XML文件、1个JSON文件、2个测试数据文件、1个gn...
"升级包制作"是指在软件更新时,为了方便用户下载和安装,将新版本的改动部分打包成一个较小的文件,这个过程涉及到文件的差异对比、增量更新以及打包技术。通常,升级包会包含新旧版本之间的差异数据,这样用户在...
Eset Nod32 离线升级包制作指南 在企业环境中,许多机器可能无法连接互联网,这使得更新病毒库变得非常困难。为了解决这个问题,我们可以手工制作 Eset Nod32 离线升级包,方便地更新机器的病毒库。下面是制作离线...
本工具运行后会将升级所需文件完全复制到D盘根目录下,复制完全后请用户自行打包。制作:逆流の草 个人网站:www.dance-up.cn
UPG - update-package-generator升级包制作工具工具原理: 遍历源码文件夹, 将文件md5值不相同的移动到升级包内(带路径)特性文件夹A文件夹B文件夹C1.txt 1.txt2.txt ->升级 2.txt(修改过)->生成升级包 2.txt3.txt...
#### 二、补丁/升级包制作方法 ##### 1.1 ROOT ROOT是获取Android设备最高权限的过程,对于制作定制ROM而言至关重要。目前市面上大多数民间ROM已经默认ROOT,因此在进行定制包制作前,确保设备已ROOT。 ##### 1.2...
本软件可简单高效生成软件工程项目或已发布软件不同版本间的绿色离线升级包。可准确快速记录软件项目不同版本或不同时间的文件快照,并根据快照之间的差异生成绿色离线升级包,分发后只需简单拷贝覆盖即可升级成功。...
描述部分进一步确认了这一点,它提到这是"C#实现自动更新之(新版程序升级包制作)项目工程源码",这意味着包含的源代码展示了如何利用C#语言来创建一个能够自我更新的应用程序。"方便打包客户端程序为升级包程序和...
用批处理写的kis6.0/7.0升级离线包... <br>说明:此程序适用于kis6.0和kis7.0的离线升级包制作,能自动检测电脑上卡巴的版本,根据不同版本选择不同的升级方式,无需为不同版本的卡巴准备多个升级器,不适用于5.0