Jenkins测试环境到生产环境的一键部署策略(Windows)
一、前言
前面我们已经初步实现了开发集成环境、测试环境的持续集成(自动化构建、自动化测试、自动化部署)。但生产环境自动化部署迟迟没有推进。其原因主要在以下几个方面:
- 尚未实现部署之前的自动化备份
- 尚未实现部署出现问题后的自动化回滚
- 由于之前采用FTP上传部署需要生产环境开放FTP端口存在安全性问题且FTP会因为各种的网速问题,导致站点瞬间挂掉
只要解决以上三个问题,我们就可以初步实现生产环境的自动化部署。
系列文章
二、实现思路
- 利用Jenkins分布式的特性,其中Jenkins服务器作为Master服务器,将生产环境(可以一台也可以多台服务器)作为Jenkins集群中的一台Slave服务器。
- 测试环境应该模拟和生产环境的配置和编译版本保持是Release状态,且功能已经满足预期发布需求。
- 通过文件复制插件,复制测试环境上的部署文件到生产环境上的jenkins工作空间。
- 通过批处理处理不需要覆盖的文件或者临时要修改的配置等。
- 利用rar备份生成环境上即将要覆盖的文件,注意命名上遵循一定规律:项目-文件夹-{BuildID}.bak.rar或日期-项目-文件夹-{BuildID}.bak.rar。
- 利用批处理进行从jenkins工作空间上把文件复制到站点上,常用命令:xcopy。
- 若生产环境程序出现问题,由项目经理和运维人员决定是紧急修复bug还是启用回滚,回滚则采用批处理命令将备份的文件压缩回生产环境站点下的目录内。
通过以上策略可以实现测试环境到生产环境的一键部署,实现了部署前的自动化备份,出现问题的自动化回滚,利用Jenkins Master-Slave特性解决了需要开放FTP端口的的问题,并且将先在测试站点测试好的文件,复制到正式站点上的一个缓冲区,进行预热配置,之后在本机进行文件替换,速度是相当的快,解决了FTP上传过程中网络问题导致站点挂掉的问题。
缺陷与问题:
- 生产环境需作为Jenkins 集群中的一台服务器并承担