引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成测试。Jenkins另一个强大之处就是它的分布式构建(在Jenkins的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows和Linux系统)中编译、测试等。而且Jenkins构建的代码和产物最后自动拷贝到主节点。
简单概括而言,结合RF+Jenkins开展持续集成基本步骤:
1、安装Jenkins
2、添加节点
3、安装RobotFramework插件
4、配置Job运行测试任务
本章节对于Jenkins如何搭建,RobotFramework插件如何安装,不作描述,内部组员可利用现有已搭建好环境,配置所需Job运行测试即可。
1.1 Jenkins普通任务配置
一、添加节点
启动Jenkins服务的这台机器在Jenkins里叫做master,而其他的连到master上的机器(物理机、虚拟机都可以)都是slave,也叫节点。
1、系统管理→管理节点→新建节点(左上角)
节点名称:建议使用字母、数字或字母和数字的组合。最好见名知意。不建议使用标点符号和中文(中文命名没有问题,但Job中无法引用)
Dumb Slave:新建一个节点
复制现有节点:从已存在的节点中复制一份配置(如果存在节点才会显示)
注:这是静态连接的方式,就是先设置好节点,由slave自己去连master作为这个节点。
2、输入Slave名字,点确定,进入下一步:
针对上图一些特殊配置项,进行一些说明:
# of executors:表示在slave上可以并行执行几个线程,即最大同时构建数量(根据机器的性能定,单颗四核cpu建议不要超过5)对于RF来说,建议设置为1。
远程工作目录:节点的根目录,即在slave上创建jenkins工作目录的路径,如设置为D:\JK(注意:如果目录不存在,会自动创建目录。你必须对该目录有读写权限,不然会报错:hudson.util.IOException2: Failed to copy xxxx)
标签:可以给slave加上一个或多个标签,通过标签选择slave,用来对多节点分组,标记之间用空格分隔.例如‘slave1 slave2‘将会把一个节点标记上slave1和slave2。
启动方法:启动slave的方法,推荐选第二个Launch slave agents via Java Web Start
注意:如果是用来执行RF自动化测试案例的slave,严禁选择windows service的方式,否则后果自负。
3、 点击保存,进入下一步
如上图所示,有两种方式可以启动节点(都是JNLP方式。JNLP连接需要端口,默认连接端口是随机的,端口更改 系统设置→Configure Global Security→JNLP节点代理的TCP端口)
两种方式启动如下:
1.Launch agent from browser on slave 下载文件slave-agent.jnlp文件,双击打开。
一般用在Windows系统上,需要javaws.exe(在Java的bin目录中可以找到)程序才能打开。如果提示错误,请卸载JDK后重新安装。成功启动如下图所示:
点击左上角的File选择Install as a service就可以添加为Windows的服务了(默认开机自动启动)。
2.Run from slave command line java -jar http://xxxx/slave-agent.jnlp 如果你配置了权限那么后面还有一串看不懂的随机Key
下载slave.jar到本地,然后进入存放slave.jar的目录,复制粘贴并运行 java -jar slave.jar -jnlpUrl http://xxxxx 即可启动。
注意:如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。(所以运行节点的主机建议在运行前,将所需环境搭建完整)
二、配置运行Job任务
1、进入首页,点击新建任务
对于RF的Job来说,自由风格就可以了。多配置也可以,只不过多配置的略有不方便,看各自需要吧,比如你要把一套案例在多个不同配置的slave上执行,就可以用多配置的Job。
2、选择自由风格,点击OK,进入下一步:
可配置选项很多,这里就介绍几种常用的配置项:
A .Restrict where this project can be run: 前面的标签就在这里用上了。用来指定这个Job在哪个标签的slave上执行
B.源码管理:RF的案例源码管理,部门内部请选用GitLab
C.构建:我们要增加构建步骤-Execute Windows batch command,如下写个简单的命令,完整命令行参数大家自己在命令行输入pybot.bat --help来看
D.构建后操作:我们要增加构建后步骤-Publishes Robot Framework test results,第一个output默认可以为空,如果前面的pybot.bat指定了输出目录,那么这里也要对应进行设置,否则他找不到output.xml就没法解析结果了。
3、保存Job,点击立即构建,运行任务
可以点构建的进度条直接看到控制台输出,或者在点构建的名字在菜单里找控制台输出看结果,如下所示:
RF插件作用:主要用了解析RF运行后的output.xml文件,将解析的结果展示出来。
1.2 Jenkins定时任务配置
上述简述了如何配置一个普通的Jenkins Job任务,但此类型任务需人工的手动去执行构建操作,而Jenkins也可以配置定时任务,从而让我们配置好的JOB在我们指定的时间去自动执行,下述讲述如何配置Jenkins定时任务。
1、添加节点,配置Job等方法,步骤,如4.1章节所示。
2、在配置Job时,其中有一个构建触发器的选项,如图所示:
如上述,选择build periodly(即周期构建),如上图表示每天2:00 自动构建一次。
日程表格式:用 cron 格式,五个空格隔开的字符组成,分别表示分 时 天 月 年,*表示所有
例1:0 12,20 * * *表示的就是每天的12点和20点执行一次构建
例2:*/5 * * * * 表示每5分钟执行一次构建
例3:0 2 * * * 表示每天2点执行一次构建
3、通过增加build periodly选项,就可完成自动构建任务。
1.3 Jenkins邮件发送配置
在上一章节中,当我们配置了自动构建项目,为了可以及时知道构建结果,这里我们介绍如果当构建项目后,如何自动将构建后的结果以邮件的形式通知到指定人员。
这里介绍两种Jenkins邮件通知方法:
一、Jenkins内置邮件功能:
1、配置系统管理员邮件地址(即设置发送者的邮箱地址)
进入Jenkins首页-->系统管理-->系统配置页面,在Jenkins Location位置,配置系统管理员邮箱地址,如下图所示:
2、配置邮箱SMTP
通过“系统管理”-“系统设置”,进行系统设置界面,移动到设置页面的最下面,“邮件通知”部分,配置stmp服务器地址和用户默认邮件后缀,用户名,密码等,如图
注:在系统管理员那个地方设置的email地址要和email配置的相同。
3、测试地址正确性
可以勾选 “通过发送测试邮件配置”测试此配置能否连通。
4、对构建的Job配置邮件发送
在配置job任务时,添加构建后步骤“E-mail Notification”,如下图:
在Recipients中输入接收者的邮箱地址,这样每次build后都会发送邮件给这个接收者, 这种内置邮件通知功能,只能发给 固定的对象,且格式单一(txt)。
二、使用插件 “Email Extersion Plugin”进行扩展
1、成功安装了Jenkins Email Extension Plugin,在邮件通知的上面,按需配置:
上述常用字段解释如下:
Default Recipients:自定义默认电子邮件收件人列表。如果没有被项目配置覆盖,该插件会使用这个列表。您可以在项目配置使用$ DEFAULT_RECIPIENTS参数包括此默认列表,以及添加新的地址在项目级别。添加抄送:cc:电子邮件地址例如,CC:[email protected]
Emergency reroute:如果这个字段不为空,所有的电子邮件将被单独发送到该地址(或地址列表)。
Excluded Committers:防止邮件被邮件系统认为是垃圾邮件,邮件列表应该没有扩展的账户名(如:@domain.com),并且使用逗号分隔
Default Subject:自定义邮件通知的默认主题名称。该选项能在邮件的主题字段中替换一些参数,这样你就可以在构建中包含指定的输出信息。
Maximum Attachment Size:邮件最大附件大小
Default Content:自定义邮件通知的默认内容主体。该选项能在邮件的内容中替换一些参数,这样你就可以在构建中包含指定的输出信息。
2、插件用于job配置页面,添加构建后步骤“Editable Email Notification”
其它各常用字段属性,在此不再作过多解释,如想了解,请自行度娘。
3、默认情况下,是没有配置的触发器,所以默认情况下不会发送邮件。请点击”高级”按钮。该选项允许您各种类型的邮件触发器指定接收者。要增加更多的触发器,选择“Add a Trigger”旁边下拉列表中的类型,它会增加到控件上面的列表中。如下图:
4、至此, 邮件配置完成。
1.4 Jenkins代码检查配置
此章节主要介绍,利用jenkins配置定时检测git远程仓库是否有代码checkin,若有则触发进行构建并执行RF 命令,最终在jenkins中生成report,且email通知你构建结果, 从而实现了持续集成。
1、安装Git plugin ,进入“系统管理”→ “插件管理”, 切换到Available tab, 选择Gitplugin、GitLabPlugin、GitClientPlugin,如果你的git仓库是private的还需要安装SSHSlavesplugin , SSHCredentialsPlugin 。
2、配置Git安装路径,严格来讲应该也需配置JDK路径,但笔者调试时,未配置JDK,也可正常,故配置JDK暂略,方法一样,Git路径配置如下:
3、Git帐号配置(这步应该可以省略):
4、配置Job任务,源码管理选择git,填写“Repository URL ”,并加上相应的“Credentials ”,其中认证信息用私钥的话干脆直接把私钥内容填上去就行了,省的不知道目录查找规则还不知道出的啥问题,如下图所示:
注意:私有项目在认证时一定选择SSH Username with private key,公钥配置在git端的项目里的public keys里.私钥配置在jenkins里即可.直接输入私钥,要完整复制 ~/.ssh/id_isa里面的内容。如果是公有项目,在认证时,可以选择用户名密码认证的方式。
5、 构建触发器:可以通过Poll SCM来设置定时检查编译功能
Poll SCM:定时检查源码变更(根据SCM软件的版本号),如果有更新就checkout最新code下来,然后执行构建动作。
比如*/5 * * * * 就是每隔5分钟检查一次,如果git仓库中有更新,则执行build操作。
如图所示:
注:Build periodically也是周期进行项目构建(但它不care源码是否发生变化)