RF+Jenkins构建持续集成

简介: 引入RF是为了能够快速的开展自动化验收测试,Jenkins而一种持续集成工具,用于监控持续重复的工作,持续的软件版本发布/测试项目,而通过RF+Jenkins可以有利的对RF构建的接口项目进行持续集成测试。

引入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'将会把一个节点标记上slave1slave2

启动方法:启动slave的方法,推荐选第二个Launch slave agents via Java Web Start

注意:如果是用来执行RF自动化测试案例的slave,严禁选择windows service的方式,否则后果自负。

3、 点击保存,进入下一步

 

如上图所示,有两种方式可以启动节点(都是JNLP方式。JNLP连接需要端口,默认连接端口是随机的,端口更改 系统设置→Configure Global SecurityJNLP节点代理的TCP端口)

两种方式启动如下:

1.Launch agent from browser on slave  下载文件slave-agent.jnlp文件,双击打开。

一般用在Windows系统上,需要javaws.exe(Javabin目录中可以找到)程序才能打开。如果提示错误,请卸载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  即可启动。

注意:如果节点主机上不存在JDKJenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。(所以运行节点的主机建议在运行前,将所需环境搭建完整)

 

二、配置运行Job任务

1、进入首页,点击新建任务

 

对于RFJob来说,自由风格就可以了。多配置也可以,只不过多配置的略有不方便,看各自需要吧,比如你要把一套案例在多个不同配置的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 格式,五个空格隔开的字符组成,分别表示分 时 天 月 年,*表示所有

10 1220 * * *表示的就是每天的12点和20点执行一次构建

2*/5 * * * * 表示每5分钟执行一次构建

30 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:someone@somewhere.com

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, 选择GitpluginGitLabPluginGitClientPlugin,如果你的git仓库是private的还需要安装SSHSlavesplugin , SSHCredentialsPlugin 

2、配置Git安装路径,严格来讲应该也需配置JDK路径,但笔者调试时,未配置JDK,也可正常,故配置JDK暂略,方法一样,Git路径配置如下:

3Git帐号配置(这步应该可以省略):

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源码是否发生变化)

技术改变世界! --狂诗绝剑
目录
相关文章
|
3小时前
|
jenkins Devops 机器人
【DevOps】(五)Jenkins构建给企业微信推送消息
【DevOps】(五)Jenkins构建给企业微信推送消息
20 1
|
3小时前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于容器技术的持续集成与部署实践
【5月更文挑战第13天】 在现代软件开发周期中,持续集成(CI)和持续部署(CD)已成为提升开发效率、保障产品质量的关键环节。随着云计算和微服务架构的普及,容器技术如Docker和Kubernetes为运维领域带来了革命性的变革。本文旨在探讨如何利用容器技术构建一个高效、可靠的自动化运维体系,实现从代码提交到产品发布的全过程自动化管理。通过深入分析容器化技术的核心原理,结合实际案例,我们将阐述如何优化持续集成流程、确保自动化测试的覆盖率、以及实现无缝的持续部署。
14 2
|
3小时前
|
安全 物联网 Android开发
构建未来:Android与IoT设备的无缝集成
【5月更文挑战第10天】 在数字化时代的浪潮中,智能设备与互联网的结合日益紧密。本文深入探讨了Android系统如何通过其开放性和灵活性成为连接物联网(IoT)设备的关键枢纽。我们将分析Android平台与IoT设备集成的技术途径,探索它们如何共同塑造智能家居、可穿戴技术以及工业自动化等领域的未来。文中不仅阐述了当前的发展状况,还展望了未来的发展趋势,特别是安全性和隐私保护方面的挑战及对策。
10 1
|
3小时前
|
敏捷开发 运维 测试技术
构建高效自动化运维体系:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】在数字化转型的浪潮中,企业对软件交付速度和质量的要求日益提高。自动化运维作为提升效率、确保稳定性的关键手段,其重要性不言而喻。本文将探讨如何利用容器技术构建一个高效的自动化运维体系,实现从代码提交到产品上线的持续集成(CI)与持续部署(CD)。通过分析现代容器技术与传统虚拟化的差异,阐述容器化带来的轻量化、快速部署及易于管理的优势,并结合实例讲解如何在实际环境中搭建起一套完善的CI/CD流程。
|
3小时前
|
运维 Kubernetes 持续交付
构建高效自动化运维系统:基于容器技术的持续集成与持续部署实践
【4月更文挑战第30天】 在快速发展的云计算时代,传统的运维模式已无法满足敏捷开发和快速迭代的需求。本文将介绍如何利用容器技术搭建一套高效自动化运维系统,实现软件的持续集成(CI)与持续部署(CD)。文章首先探讨了现代运维面临的挑战,接着详细阐述了容器技术的核心组件和工作原理,最后通过实际案例展示了如何整合这些组件来构建一个可靠、可扩展的自动化运维平台。
|
3小时前
|
运维 Kubernetes 持续交付
构建高效自动化运维体系:基于容器技术的持续集成与持续部署(CI/CD)实践
【4月更文挑战第29天】 随着云计算和微服务架构的兴起,自动化运维已成为提升企业IT效率、确保系统稳定性的关键因素。本文旨在探讨如何利用容器技术构建一套高效的自动化运维体系,实现软件开发过程中的持续集成(CI)与持续部署(CD)。文章首先分析了传统运维模式面临的挑战,然后详细介绍了基于Docker和Kubernetes等容器技术的CI/CD流程设计与实施策略,并通过一个实际案例来展示该方案在提高部署频率、降低人力成本及提升系统可靠性方面的显著优势。
|
3小时前
|
敏捷开发 缓存 Devops
构建高效持续集成系统的策略与实践
【4月更文挑战第23天】 在快速迭代的软件开发过程中,持续集成(CI)是确保代码质量和加速交付的关键。本文深入探讨了构建和维护一个高效CI系统的方法和最佳实践。从自动化测试到部署策略,文中细致分析了各环节的优化技巧,并提供了解决常见问题的实用建议。通过案例研究和工具选型,读者将获得构建强大CI流程的具体指导,以支持敏捷和DevOps环境下的高质量软件发布。
|
3小时前
|
机器学习/深度学习 数据采集 人工智能
构建未来:移动应用开发中的人工智能集成
【4月更文挑战第18天】 在本文中,我们将深入探讨移动应用开发中人工智能(AI)的集成。我们将分析AI如何改变移动应用的功能和用户体验,以及开发者如何利用这种技术来提升他们的产品。我们还将讨论一些挑战和解决方案,以及AI在未来移动应用开发中的潜在影响。
|
3小时前
|
jenkins Java 持续交付
实战指南:运用Jenkins实现Java项目的持续集成与自动化部署
【4月更文挑战第17天】Jenkins是一款强大的开源CI/CD工具,广泛用于Java项目的自动化构建、测试和部署。通过配置Jenkins环境、创建Job、设定构建触发器和步骤,实现持续集成和部署。集成Maven、Git等工具,确保代码质量并加速上线。持续部署阶段,Jenkins可将工件发布至远程服务器或云环境,实现高效、稳定的自动化流程。实践过程中,关注工作流优化、配置备份和服务器状态监控,以提升整体开发效率和软件质量。
|
3小时前
|
SQL 机器学习/深度学习 数据可视化
Pandas与其他库的集成:构建强大的数据处理生态
【4月更文挑战第16天】Pandas在数据处理中扮演关键角色,但与其他Python库如NumPy、Matplotlib/Seaborn、Scikit-learn和SQL的集成使其功能更加强大。结合NumPy进行数值计算,搭配Matplotlib/Seaborn实现高效可视化,与Scikit-learn联用加速机器学习,以及与SQL集成便于数据库操作,这些都构建了一个全面的数据处理生态系统,提升了数据科学家的工作效率,助力于数据价值的发掘。