持续集成
一、持续集成含义
持续集成顾名思义就是保持不间断的将软件开发中的事情集中到一个地方进行管理和处理,包括代码库的维护、测试环境的搭建、测试脚本的运行、测试结果的报告发送等。通过持续集成的工具把这些事情集中到一起按照一定步骤进行自动化管理,和自动化测试框架非常类似,只是前者的框架不局限于测试,而是贯穿了整个项目的各个环节。持续集成的好处在于减少重复的工作,将这些工作通过持续集成工具自动执行,提高整个项目的效率。
二、持续集成工具:Jenkins
1、工具特点
1、基于java的持续集成工具
2、免费开源
3、多平台兼容性:windows、Linux、OS
4、可视化管理:启动工具后直接在浏览器打开即可
5、配置简单:所有功能均可通过配置插件完成
6、功能插件齐全:插件是Jenkins的核心,本身平台工具只是提供一个基础的框架,然后通过插件的安装使用来完成具体的事物功能,还可以自己编写插件上传提供使用,扩展性极强
2、工具安装并启用(Windows)
①启动Jenkins服务
1、准备一台配置了java环境的测试机
2、访问官网下载Windows版Jenkins:https://jenkins.io/zh/download/
3、下载成功后是一个文件jenkins.msi
双击安装
4、在安装目录运行cmd窗口输出java -jar jenkins.war
备注:如果启动报错不要方,Jenkins默认端口号是8080,8080被占用时就会启动失败,此时修改一下命令:java -jar jenkins.war --httpPort=9000
修改端口号为9000即可
5、出现以下提示则代表启动成功
6、Windows下可以写一个批处理来启动,代码如下:
set jenkins_home=F:\jenkins
cd /d %jenkins_hom%
java -jar %jenkins_hom%\jenkins.war --httpPort=9000
②访问Jenkins管理页面
1、打开浏览器,访问:localhost:9000
2、解锁Jenkins:输入管理员密码(获取方式:页面提示路径文件中获取、启动的cmd窗口有打印)
3、自定义Jenkins:选择推荐插件即可,会自动进行安装,等待所有插件均出现√
则代表安装完毕(后续要补充插件可在插件管理中安装和更新)
4、初始化管理员账号
5、实例配置:Jenkins url: localhost修改为IP地址
6、开始使用Jenkins
3、构建任务
①新建任务
1、输入任务名称
2、选择任务类型模板(一般选择第一种自由风格,因为该模板灵活度高)
②配置任务
1、Discard old builds: 丢弃旧的构建,顾名思义就是自动删除构建,因为每次构建需要保存结果和日志等东西,且都会单独进行保存,久而久之就会占用系统的空间,所以需要按照一定的规则进行清理,默认是不勾选,保留全部构建记录,勾选后可以按照时间和构建个数的规则进行自动删除。
2、关闭构建: 一般不会勾选,除非有特殊情况需要在某一时间段关闭时,勾选该项即可
3、静默期: 构建前等待时间,单位秒
4、SCM签出重试次数: 当代码库获取代码失败时重新执行指定的次数,如果指定次数后还是失败则停止执行
5、源码管理:
默认:
无 ,即不用代码工具,这种情况主要用于不需要修改代码的任务,比如定时执行某些脚本任务或自动化测试任务git/Subversion:
勾选后添加对应账号,管理代码
6、构建触发器: 一切的构建脚本都要满足触发器设置的条件才能执行,也就是说不设置触发器是不会执行后续的构建的,触发器有5种类型
触发远程构建 (例如,使用脚本):
需要远程脚本或者命令触发,和手动执行一样,所以一般不使用Build after other projects are built:
完成某个构建任务之后执行这个构建任务,如果流水线中的先后顺序,只有完成了上一步的工作,才会触发这个任务执行,适用于多个关联构建任务Build periodically:
定时触发构建,类似于crontab脚本的配置,可以指定构建的时间,比如每天9点执行或者周一9点执行GitHub hook trigger for GITScm polling:
提交代码到GitHub后,Jenkins会进行自动构建Poll SCM:
升级版定时触发构建,与Build periodically的区域在于定时检查源代码是否更新,只有更新了代码才会触发,而Build periodically只是定时执行,不用判断是否更新代码备注:
定时触发构建都是通过日程表的配置来完成的,生成表达式网站:http://www.bejson.com/othertools/cron/
7、构建环境:
一般不进行勾选,仅做了解
Delete workspace before build starts
在开始生成之前清理工作空间
Use secret text(s) or file(s)
使用加密文本或文件
Abort the build if it's stuck
如果出现问题,就中止构建
Add timestamps to the Console Output
控制台输出增加时间戳
Inspect build log for published Gradle build scans
检查生成日志以查看已发布的Gradle构建扫描
With Ant
用Ant
8、设置构建:
这部分是整个Jenkins的核心,所有的任务都是通过构建完成的,可以根据需求将建立一个或者多个任务,只需要点击增加构建步骤即可。这里仅介绍2种构建方式,分别是Windows和Linux/OS系统
①execute windows batch command
这个选项是执行windows下的命令行,类似于在计算机端输入cmd。可以在命令行指定调用Python、Java命令执行测试脚本
②execute shell
这是Linux下执行的脚本命令,适用于Linux系统,安装了python或者java之后直接可以通过命令运行
补充:
其他几种构建方式也都可以通过安装配置环境变量,直接通过命令行执行,相对来说比较单一,不如这2种方式自由度高。
构建本身只是一个处理过程,如果需要多个处理也可以新增多个构建,只不过构建之间会有先后顺序,执行完成上一个构建才能执行下一个,比如新增构建A执行远程部署更新测试环境,然后再新增构建B执行自动化测试脚本的运行,以Windows为例,使用execute windows batch command
,第一个构建执行python的环境部署脚本,第二个构建执行Python自动化测试脚本
9、构建后操作:
执行完构建之后如果需要执行一些收尾工作,可以添加构建后操作,介绍两种常用操作
①build other projects
- 这是最常用的功能之一,就是完成之后执行另外一个构建任务,只需要输入已经存在的项目,即可在执行完成这个构建操作后运行另外一个构建任务
- 还有3个选项是触发下一个构建的条件,分别是:
- 构建成功后执行
- 构建不稳定也依然执行
- 即便构建失败也依然执行
②E-mail notification
发送邮件功能,只需要输入收件人的邮箱地址即可,因为之前系统设置已经配置过邮件通知了。同时也可以输入多个收件人,通过;
间隔。勾选每次不稳定的构建都发送邮件通知,之后每次构建失败就会发送邮件到指定的收件人邮箱,并且附上构建失败的日志,以便相关人员了解执行结果以及执行错误。
三、测试使用思路
- 持续测试 : 配合自动化测试(单元/接口/UI),在研发持续构建任务后关联自动化测试任务,达到持续构建持续测试的目的,把好质量的第一道关
- 测试辅助: 搭配测试脚本、测试工具,定时触发任务,达到无人值守、定时定点完成你的目的:监控、报警、提醒、测试…