高效率、低风险,一键发布并测试的持续集成工具Jenkins
文末有本专题系列文章
当每月发布次数变得越来越多时,如超过 200 次,发布工作人员的工作量会翻倍,此时由人工发布操作失误引起的风险会变得越来越大。为了提高项目的发布效率,也为了降低由人工操作失误带来的风险,需要引进持续集成工具。
Jenkins 是一个用 Java 语言编写的开源持续集成工具,最开始被称作 Hudson。Jenkins 在持续集成领域市场份额中居于主导地位,被各种大小规模的团队用于用各种语言实现的各类项目中,语言包括.NET、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,用于指定哪个项目回滚到哪个备份版本。
3.1、邮件配置
Email 是 Jenkins 最基本的通知技术。什么情况下,需要 Jenkins 发送电子邮件通知?例如,在一个构建失败(例如因为编译错误)后。
3.2、角色及权限管理
首先设置全局角色和项目角色,其中 Pattern 是用来设置构建作业名的命名规范,例如:规定了构建作业名的命名规范是{发布环境}.{产品线英文名全称}.{项目名},那么要发到生产环境、属于 Trip 产品线的所有构建作业,其 Pattern 设置的值为【(?i)prod.trip.*】,表示构建作业名必须以 prod.trip 开头,而且不区分大小写,用于发布到生产环境。
然后,分别为 Jenkins 账号分派全局角色和项目角色:
3.3、部署到集群
Jenkins 通过运行自写的 Python 脚本把编译好的发布文件部署到远程应用站点服务器中,以及同步到集群内其他应用站点服务器,所以需要新增构建步骤配置,参考如下:
其中,.py 脚本(即 Python 脚本)内容如下:
.py 脚本实现了如下逻辑:
第 1 步、备份:
在远程应用站点服务器中,备份将要部署新版本的那个应用系统的所有文件。利用 PxExec.exe 工具,让 Jenkins 服务器远程连到应用站点服务器。然后在这台应用站点服务器中,利用 xcopy 命令,把将要部署新版本的这个应用系统站点目录之下的所有文件拷贝到这台应用站点服务器中的备份目录下。
第 2 步、部署:
部署到这台远程应用站点服务器。先利用 xcopy 命令,把由 Jenkins 编译好的、位于 Jenkins 服务器的文件拷贝到这台应用站点服务器共享目录之下,以.config 结尾的配置文件不会被拷贝。再利用 PxExec.exe 工具,让 Jenkins 服务器远程连到这台应用站点服务器。然后在这台应用站点服务器中,利用 xcopy 命令,把临时存放目录下的文件拷贝到这个应用系统站点目录之下。
第 3 步、同步:
同步发布文件到该应用系统集群内的其他应用站点服务器。利用 PxExec.exe 工具,让 Jenkins 服务器远程连到这台应用站点服务器,然后在这台应用站点服务器中,利用 xcopy 命令,把该应用系统站点目录下的所有文件拷贝到集群内的其他应用站点服务器的该应用系统站点目录之下。
3.4、SoapUI 接口自动化测试
测试用例提交到版本库(如 Git)后,通过 Jenkins 把它编译,编译后,通过 SoapUI 一键调用,开始自动化测试。一旦自动化测试完成,会生成报表,通过 HTML Report 把它给呈现出来,如下图所示。
3.5、UFT 界面自动化测试
3.6、回滚操作 Rollback
General 配置:
构建配置:
选择将要回滚哪个项目以及回滚到哪个备份版本号:
3.7、暂未解决的问题
1、数据库发布与回滚。
2、应用配置文件的发布与回滚。
3、加入 QA 流程控制,经过测试工程师确定后,方可发布。
以上三个问题也可以借助其它工具来实现,分别是数据库发布工具、集中式配置服务、流程管理工具甚至邮件确认。
减少发布工作人员的大量日常工作量,大大提高项目的发布效率。
不容易出错,降低人工发布带来的风险。
可 24 小时随时发布。
方便紧急修复或回滚操作 Rollback。
方便对发布流程进行控制、标准化。
方便发布统计、历史版本可追溯。
Jenkins 官网:
https://jenkins.io/index.html
SoapUI 官网:
https://www.soapui.org/
张辉清,10 多年的 IT 老兵,先后担任携程架构师、古大集团首席架构、中青易游 CTO 等职务,主导过两家公司的技术架构升级改造工作。现关注架构与工程效率,技术与业务的匹配与融合,技术价值与创新。
杨丽,拥有多年互联网应用系统研发经验,曾就职于古大集团,现任职中青易游的系统架构师,主要负责公司研发中心业务系统的架构设计以及新技术积累和培训。现阶段主要关注开源软件、软件架构、微服务以及大数据。
本专题已经更新了这些文章,点击蓝字跳转阅读:
缓存 Redis:Redis快速入门及应用
消息队列 RabbitMQ:如何用好消息队列RabbitMQ?
集中式日志 ELK:中小型研发团队架构实践之集中式日志ELK
任务调度 Job:中小型研发团队架构实践之任务调度Job
应用监控 Metrics:应用监控怎么做?
微服务框架 MSA:这是你心心念念的.NET栈的微服务架构实践
搜索利器 Solr:中小型研发团队架构实践之Solr
分布式协调器 ZooKeeper:中小型研发团队架构实践之ZooKeeper
总体架构设计:电商如何做企业总体架构?
统一应用分层:如何规范公司所有应用分层?
调试工具 WinDbg:生产环境诊断利器WinDbg帮你快速分析异常情况Dump文件
机器学习、深度学习、强化学习、迁移学习,这些你到底了解多少?各种深度学习框架如 TensorFlow、Caffe、MXNet 等又该如何选择?如何将机器学习整合到正在开发的应用中?机器学习的新趋势又是什么?
InfoQ 中国团队为大家梳理了目前机器学习领域的最新动态,并邀请到了来自 Amazon、BAT、360、小米、京东、饿了么等一线 AI 技术专家前来分享他们的机器学习落地实践经验,希望大家能从中获得所需方法论和应用经验,早日年薪百万!
目前大会 8 折倒计时 4 天,欢迎点击“阅读原文”了解详情!购票咨询:18510377288(同微信)
关注公众号:拾黑(shiheibook)了解更多
[广告]赞助链接:
四季很好,只要有你,文娱排行榜:https://www.yaopaiming.com/
让资讯触达的更精准有趣:https://www.0xu.cn/
随时掌握互联网精彩
- 1 重温总书记对博物馆工作的殷殷嘱托 4997770
- 2 吴彦祖喊话各地阿祖收手吧 4983069
- 3 警方回应知名主持人被曝私生活混乱 4852877
- 4 速览我国博物馆建设成绩单 4701304
- 5 妻子花380元买裙子被丈夫骂败家 4609681
- 6 居民家疑因未拔电蚊香起火 4515785
- 7 二手玫瑰 太阳照常升起 4419801
- 8 马斯克预测人类30年内在火星建城市 4333143
- 9 太原一学校用淋巴肉做饭?谣言 4259497
- 10 2岁宝宝疑因奶奶嚼碎喂食感染梅毒 4109081