当每月发布次数变得越来越多时,如超过500次,发布工作人员的工作量会翻倍增长,此时由人工发布操作失误引起的风险会变得越来越大。为了提高项目的发布效率,也为了降低由人工操作失误带来的风险,需要引进持续集成工具。
Jenkins是一个用Java语言编写的开源的持续集成工具,最开始被称作Hudson。Jenkins在持续集成领域市场份额中居于主导地位,被各种大小规模的团队用于用各种语言实现的各类项目中,语言例如C#、Java、Ruby、Groovy、Grails、PHP等。选择Jenkins的理由如下:
- 易于使用:Jenkins的用户界面简单、直观、友好,发布工作人员只需要通过简单的UI操作就可以替代原来繁琐的发布工作。
- 拥有良好的扩展性:提供数以百计的开源插件可供使用,而且几乎每周会有新的开源插件贡献进来,这些插件的安装都十分快捷和简单。
- 受大众喜欢:Jenkins开源社区的规模变得越来越大、活跃度也变得越来越高,发展速度非常快。
1、Jenkins:持续集成工具。
2、Git:源代码管理工具,是目前流行的分布式版本控制系统。需要安装的Jenkins插件有:
3、TFS:可选,源代码管理工具。
4、MSBuild:Visual Studio里面自带的一个程序编译组件。需要安装的Jenkins插件是MSBuild Plugin插件。
5、FTP:可选,通过FTP把编译好的发布文件部署到应用服务器中。需要安装的Jenkins插件是Publish Over FTP插件。
6、Jenkins角色及权限管理: 需要安装的Jenkins插件是Role-based Authorization Strategy插件。
7、Python脚本:自写的Python脚本放在Jenkins服务器中。可以实现Jenkins把编译好的发布文件部署到远程应用站点服务器,以及实现回滚操作Rollback。
8、PxExec.exe工具:装在Jenkins服务器中,利用这个工具,可以在远程服务器中执行命令如xcopy。
9、SoapUI自动化测试:用于接口测试自动化,同时需要安装Jenkins插件是HTML Publisher plugin插件。
10、回滚操作Rollback:需要安装的Jenkins插件是Build with Parameters插件,用于指定哪个项目回滚到哪个备份版本。
Email是Jenkins最基本的通知技术。什么情况下,需要Jenkins发送电子邮件通知?例如,在一个构建失败(例如因为编译错误)后。
首先设置全局角色和项目角色,其中Pattern是用来设置构建作业名的命名规范,例如:规定了构建作业名的命名规范是{发布环境}.{产品线英文名全称}.{项目名},那么要发到生产环境、属于Trip产品线的所有构建作业,其Pattern设置的值为【(?i)prod.trip.*】,表示构建作业名必须以prod.trip开头,而且不区分大小写,用于发布到生产环境。
然后,分别为Jenkins账号分派全局角色和项目角色:
Jenkins通过运行自写的Python脚本把编译好的发布文件部署到远程应用站点服务器中,以及同步到集群内其他应用站点服务器,所以需要新增构建步骤配置,参考如下:
其中,.py脚本(即Python脚本)内容如下:
.py脚本实现了如下逻辑:
- 第1步备份:在远程应用站点服务器中,备份将要部署新版本的那个应用系统的所有文件。利用PxExec.exe工具,让Jenkins服务器远程连到应用站点服务器。然后在这台应用站点服务器中,利用xcopy命令,把将要部署新版本的这个应用系统站点目录之下的所有文件拷贝到这台应用站点服务器中的备份目录下。
- 第2步部署:部署到这台远程应用站点服务器。先利用xcopy命令,把由Jenkins编译好的、位于Jenkins服务器的文件拷贝到这台应用站点服务器共享目录之下,以.config结尾的配置文件不会被拷贝。再利用PxExec.exe工具,让Jenkins服务器远程连到这台应用站点服务器。然后在这台应用站点服务器中,利用xcopy命令,把临时存放目录下的文件拷贝到这个应用系统站点目录之下。
- 第3步同步:同步发布文件到该应用系统集群内的其他应用站点服务器。利用PxExec.exe工具,让Jenkins服务器远程连到这台应用站点服务器,然后在这台应用站点服务器中,利用xcopy命令,把该应用系统站点目录下的所有文件拷贝到集群内的其他应用站点服务器的该应用系统站点目录之下。
测试用例提交到版本库(如Git)后,通过Jenkins把它编译,编译后,通过SoapUI一键调用,开始了自动化测试。一旦自动化测试完成,会生成份报表,是通过HTML Report把它给呈现出来,如下图所示。
General配置:
构建配置:
选择将要回滚哪个项目以及回滚到哪个备份版本号:
- 数据库发布与回滚;
- 应用配置文件的发布与回滚;
- 加入QA流程控制,经过测试工程师确定后,方可发布。
- 以上三个问题也可以借助其它工具来实现,分别是数据库发布工具、集中式配置服务、流程管理工具甚至邮件确认。
- 减少发布工作人员的大量日常工作量,大大提高项目的发布效率。
- 不容易出错,降低人工发布带来的风险。
- 可集成UI和接口自动化测试功能,提供测试报告。
- 可24小时随时发布。
- 方便紧急修复或回滚操作Rollback。
- 方便对发布流程进行控制、标准化。
- 方便发布统计、历史版本可追溯。
- Jenkins官网:https://jenkins.io/index.html
- SoapUI官网:https://www.soapui.org/