2025上半年,最新 AI实践都在这!20+ 应用案例,任听一场议题就值回票价 了解详情
写点什么

中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具 Jenkins

  • 2018-01-04
  • 本文字数:2650 字

    阅读完需:约 9 分钟

一、Jenkins 简介

当每月发布次数变得越来越多时,如超过 200 次,发布工作人员的工作量会翻倍,此时由人工发布操作失误引起的风险会变得越来越大。为了提高项目的发布效率,也为了降低由人工操作失误带来的风险,需要引进持续集成工具。

Jenkins 是一个用 Java 语言编写的开源持续集成工具,最开始被称作 Hudson。Jenkins 在持续集成领域市场份额中居于主导地位,被各种大小规模的团队用于用各种语言实现的各类项目中,语言包括.NET、Java、Ruby、Groovy、Grails、PHP 等。选择 Jenkins 的理由如下:

  • 易于使用:Jenkins 的用户界面简单、直观、友好,发布工作人员只需要通过简单的 UI 操作就可以替代原来繁琐的发布工作。
  • 拥有良好的扩展性:提供数以百计的开源插件可供使用,而且几乎每周会有新的开源插件贡献进来,这些插件的安装都十分快捷和简单。
  • 发展良好:Jenkins 开源社区的规模变得越来越大、活跃度也变得越来越高,发展速度非常快。

二、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,用于指定哪个项目回滚到哪个备份版本。

三、Jenkins 关键配置

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 流程控制,经过测试工程师确定后,方可发布。

以上三个问题也可以借助其它工具来实现,分别是数据库发布工具、集中式配置服务、流程管理工具甚至邮件确认。

四、总结,Jenkins 使用价值

  • 减少发布工作人员的大量日常工作量,大大提高项目的发布效率。
  • 不容易出错,降低人工发布带来的风险。
  • 可 24 小时随时发布。
  • 方便紧急修复或回滚操作 Rollback。
  • 方便对发布流程进行控制、标准化。
  • 方便发布统计、历史版本可追溯。

五、更多资料

作者介绍

张辉清,10 多年的 IT 老兵,先后担任携程架构师、古大集团首席架构、中青易游 CTO 等职务,主导过两家公司的技术架构升级改造工作。现关注架构与工程效率,技术与业务的匹配与融合,技术价值与创新。

杨丽,拥有多年互联网应用系统研发经验,曾就职于古大集团,现任职中青易游的系统架构师,主要负责公司研发中心业务系统的架构设计以及新技术积累和培训。现阶段主要关注开源软件、软件架构、微服务以及大数据。

本专题已经更新了这些文章,点击蓝字跳转阅读:

感谢雨多田光对本文的审校。

2018-01-04 16:478525

评论

发布
暂无评论
发现更多内容

告别消费主义的双12,是华为云12.12会员节真正的意义

脑极体

牵头成立“现代计算联盟”,强大如谷歌也需要组团打怪吗?

脑极体

JAVA基础 -- java8新特性一之 Stream流以及基本操作

起个名字很难

第八周作业

走走,停停……

这才是你需要的C/C++Linux学习路线!

赖猫

c++ Linux 后台开发 服务器开发

JAVA基础 -- java8新特性一之 lambda表达式

起个名字很难

java基础

三分钟看懂新一代.Net Core3.1工作流引擎平台

Learun

敏捷开发

JAVA基础 -- java8新特性一之 方法引用

起个名字很难

java基础

Java并发编程:如何防止在线程阻塞与唤醒时死锁

李尚智

Java 并发编程

亿级流量背后战场,京东11.11大促全方位技术揭秘

京东科技开发者

云计算

盘点 2020 | 一枚程序员的跑步之路

Simon

程序员 跑步 锻炼 盘点2020

如何构建彼此信任相托的团队?

Alan

团队管理 个人成长 团队协作

Python进阶——为什么GIL让多线程变得如此鸡肋?

Kaito

Python

生产环境全链路压测建设历程之十一:生产压测给淘宝网带来的价值

数列科技杨德华

全链路压测

架构之书:田园与《Agile Web Development with Rails》

lidaobing

ruby-on-rails 架构

IDEA 2020.3 更新了,机器学习都整上了

楼下小黑哥

Java IDEA

第七周作业

走走,停停……

架构师训练营第一期 - 第十二周课后作业

卖猪肉的大叔

极客大学架构师训练营

盘点2020 | 热点事件回顾这一年经历的共同记忆

Java_若依框架教程

盘点2020

IPFS四币循环系统软件开发|IPFS四币循环APP开发

系统开发

第九周作业

走走,停停……

架构师训练营 Week9 - 课后作业

极客大学架构师训练营

企业面临大危机,CRM崩溃告急,程序员竟用特殊手段化解危机!

Philips

敏捷开发

甲方日常 69

句子

工作 随笔杂谈 日常

第六周期作业

走走,停停……

全人类的数字化迁徙在加速完成 | 读《区块链:分布式商业与智数未来》

邓瑞恒Ryan

创业 读书笔记 金融 经济 战略

架构师训练营第一期 - 第十二周学习总结

卖猪肉的大叔

极客大学架构师训练营

第十周作业

走走,停停……

架构一期第十二周作业

Airs

架构师训练营第十二周课程笔记及心得

Airs

DolphinDB与Spark的性能对比测试报告

DolphinDB

spark 流计算 时序数据库 DolphinDB 数据库开发

中小型研发团队架构实践:高效率、低风险,一键发布并测试的持续集成工具Jenkins_DevOps & 平台工程_张辉清_InfoQ精选文章