在发布更新的时候验证资源完整性是非常重要的,这里我区分为两种,一种是更新资源的完整性,另外一种是远程执行发布任务脚本的一致性,在开发前期如果不注重这个问题的话,很可能在上线前期就会出现一些灾难性问题。
第一种,shell中使用md5sum验证传输文件的完整性
这个我是用shell中md5sum来做的,一般的发布流程大概有拉取代码仓库的资源,将资源传到线上,执行发布操作。
1,拉取代码仓库资源到跳板机或者中心服本地,这个过程省略...
2,首先和业务方约定,每次大版本结版前,将打印一个时间格式的字符串到一个date文件里
echo `date +%Y%m%d%H%M%S` >/data/ops//RSYNC_DIR/update_dir/server/v1.xxx/date
3,获取跳板机本机更新资源的MD5值
LOCAL_MD5=$(md5sum /data/ops/xxx/RSYNC_DIR/update_dir/server/v1.xxx/date|awk '{print $1}')
4,接下来,远程执行脚本同步资源,将中心服rsync/update_dir/server/下的目录文件内容同步到线上,此处省略...
5,获取远程主机更新资源的md5值
也是一样,远程主机执行命令使用md5sum 接上传远程主机的date文件路径获取md5值
REMOTE_MD5=$(md5sum /cygdrive/d/modelfile/update_dir/server/v1.xxx/date|awk '{print $1}')
6,发布代码中对这两个值进行对比,如果不一致则报警并且异常退出执行程序
第二种,shell中使用md5sum验证远程主机中的执行脚本和跳板机中执行脚本的一致性
经常我们的发布任务,并不是都在中心服或者跳板机上执行的,复杂的发布任务一般都需要在远程主机上执行脚本才可以完成,这个执行脚本一般是写到跳板机上的,在购买机器初始化的时候会将跳板机上的执行脚本给推送到远程主机上,但是如何保证跳板机和远程主机上的执行脚本是一致的,这个是很重要的
1,首先我们在跳板机本地预先生成一个标准的md5对照关系文件
这个也是使用md5sum先在跳板机本地将这些重要的执行文件的md5值给生成出来,/data/scripts_dir这个远程主机存放执行脚本的目录,先将这个标准的对照文件stand.md5文件给生成出来