自动化测试一个Java码农眼中的技术世界Robotframework

从零搭建Robot Framework+Jenkins持续集成环

2018-01-31  本文已影响511人  Rethink

安装Jenkins

系统环境:CentOS Linux release 7.3.1611 x86_64 GNU/Linux

安装JDK

Jenkins是基于Java开发的持续集成系统(CI),所以运行环境必须安装JDK,安装JDK的方法有很多种,有些Linux系统可能会自带openjdk,需要注意的是较新版本的jenkins并不支持低版本的JDK.

[root@JDu4e00u53f7 ~]# java --version
java version "1.7.0_131"
OpenJDK Runtime Environment (rhel-2.6.9.0.el6_8-x86_64 u131-b00)

如果命令的输出如上,则这需要先卸载自带的低版本openjdk,然后手动安装sunjdk,sunJDK1.8 官网下载地址,下载.rpm和.tar.g格式的安装包都可以,但是要注意jdk位数。

jdk-8u11-linux-x64.tar.gz百度云 密码: 7kxw

我在安装的时候,遇到了一个坑,截至到目前,JDK最新版本为9.0.1,但是Jenkins最新版本v2.86并不支持JDK 9。官方说明如下:

Jenkins packages (deb IIRC) declared a Java 7+ dependency, in some configurations that resulted in Java 9 being downloaded.We no longer declare Java dependencies for that reason, as Jenkins does not work with Java 9.

使用JDK9,安装Jenkins后可能会遇到下面的错误。

下载成功后,上传到服务器,JDK安装步骤如下:

[root@JDu4e00u53f7 ~]# cd ~
[root@JDu4e00u53f7 ~]# mkdir /usr/java
[root@JDu4e00u53f7 ~]# mv jdk-8u11-linux-x64.tar.gz /usr/java/
[root@JDu4e00u53f7 ~]# tar -zxvf jdk-8u11-linux-x64.tar.gz 

···配置全局环境变量(所有用户均可用)···
[root@JDu4e00u53f7 ~]# vi /etc/profile
添加如下内容:JAVA_HOME根据实际目录来
   export JAVA_HOME=/usr/java/jdk1.8.0_11
   export JRE_HOME=/usr/java/jdk1.8.0_11/jre
   export CLASSPATH=.:$JAVA_HOME/lib:$JRE_HOME/lib:$CLASSPATH
   export PATH=$JAVA_HOME/bin:$JRE_HOME/bin:$JAVA_HOME:$PATH
   
···重载配置文件···
[root@JDu4e00u53f7 ~]# source /etc/profile

安装完成后使用java - -version可以查看安装情况:


可能出现的错误信息:bash:./java: cannot execute binary file , 出现这个错误的可能原因是你在32位的操作系统上安装了64位的JDK.

安装Jenkins

Jenkins下载地址,推荐下载war包,如果对版本没特别要求,直接下载最新版本就好。The lastest version 为2.86,以下所有的介绍和说明都是基于此版本,Jenkins迭代速度非常快,若版本不同,页面可能会有区别。

Jenkins release

安装Jenkins的方式有两种 : 如果服务器上已安装了Servlet容器,如Tomcat, 直接把war包放到webapps目录下,然后启动Tomcat就可以了;如果服务器没有安装Servlet容器,那也没有关系,因为Jenkins的war包里内置了Jetty,只需运行以下命令:
java -jar jenkins.war --httpPort=8080
--httpPort用来指定Jenkins服务端口,默认8080 ,如果该端口已被占用,则可以用来更换端口。运行命令行后,当在终端的启动日志中看到这行信息时: INFO:Jenkins is fully up and running, 代表Jenkins服务已经启动。

结合Linux nohup& 命令,我们可以让Jenkins服务永久的在服务器后台运行。
nohup java -jar jenkins.war --httpPort=8080 &
其中, nohup用来不挂断的运行命令(即忽略挂起信号,永久执行命令), & 加在结尾来让命令在后台运行,所以 nohup command & 的合起来使用的意思就是让command 永久的在后台执行。

可通过Jobs命令查看后台运行任务,如果想将某个程序调回前台控制,只需要 fg + 编号 即可,此时如果要终止程序,只需Ctrl+C 即可退出程序。

[1]+  Running         nohup java -jar jenkins.war --httpPort=8080 &

$ fg 1
nohup java -jar jenkins.war --httpPort=8080

Jenkins启动成功后,剩下的配置工作将全部在浏览器中进行,十分方便。

配置Jenkins

在浏览器上输入网址访问Jenkins: http://IP:Port ,如:http://localhost:8080

解锁服务

第一次启动Jenkins时,需要验证账户。只需要在给出的文件路径下将密码拷贝一份到表单中即可验证完成。
$ cat /root/.jenkins/secrets/initialAdminPassword

image

Customize Jenkins

正常情况下,会进入安装插件页面。点击Install suggested plugins,安装Jenkins建议安装的插件。

image image

如果在进入这一步时,遇到了Offline问题,没有关系,这是由于你的Jenkins服务器没有科学上网,点击跳过插件安装就好,后续我们可以自行安装插件,详见下文“安装插件”部分的内容。

image

Create First Admin User

配置管理员用户账号/密码,这个账号密码一定要保存好,不然补救措施比较麻烦。

image 完成确认后,点击Start using Jenkins,进入Jenkins使用页面! image

补充:Jenkins的配置信息已经插件都会放到 ~/.jenkins/ 目录下,这个也是Jenkins的主目录,它默认是隐藏的。所以如果需要重新初始化安装Jenkins ,只需要清理掉 ~/.jenkins目录即可。

image

关闭/重启Jenkins

我们用jar -jar jenkins.war 来启动jenkins服务器后,可以使用以下方法关闭或重启Jenkins服务。

关闭Jenkins 服务

只需要在访问Jenkins的url地址后加上exit,如http://localhost:8080/exit , 回车后会跳转到以下页面,点击Retry using POST按钮,即可关闭Jenkins.

image

重启Jenkins 服务

将上面的exit改为restart后就可以重新启动jenkins服务器。

重载Jenkins配置文件

将上面的restart改为reload就可以实现重新加载Jenkins配置信息。

安装插件

Jenkins安装插件时,既可以选择在线安装,也可以离线安装。

在线安装

在线安装首先要保证Jenkins服务器可以上网。安装方法为:点击 ‘系统管理(Configure System)->插件管理(Manage Jenkins),选择可选插件,搜索需要的插件后直接安装即可。

image image

​ 如果出现插件无法安装或安装失败的情况,尝试修改Jenkins配置文件(.jenkins/是隐藏目录):
$ vi .jenkins/hudson.model.UpdateCenter.xml

把'https'修改为'http'后,重载Jenkins配置信息。

image
如果仍不能解决问题,可能是Jenkins源的问题,可以尝试换一个源码,打开刚才的配置文件,把URL换成http://mirror.esuni.jp/jenkins/updates/update-center.json ,重启Jenkins,查看是否可以成功安装插件。

若以上方法都不能解决问题,请尝试插件离线安装方法。

离线安装

首先下载所需的Jenkins插件, 然后打开:系统管理-插件管理-高级,点击上传插件,选择扩展名为.hpi的插件。

image 上传成功后,插件自动安装。安装成功后,重启Jenkins后生效。 image

离线安装插件时,可能会因为依赖缺失的问题而导致安装失败。出现该种问题时,可以在Jenkins终端的输出日志中找到依赖的插件,先安装需要的依赖后,再安装插件。

由于是和rf集成,所以这里需要下载插件Robot Framework Plugin ,插件介绍详见Jenkins Wiki .

image

配置Slave

创建Slave

启动Jenkin服务的这台机器在Jenkins中被称为Master,而其他连到Master上的机器(物理机或虚拟机)被称为Slave. Master/Slave相当于 Server 和 Agent 的概念。Master 提供web接口让用户来管理 Job 和 Slave,Job 可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave用来为不同的Job或相同的Job的不同配置来服务。

image

进入系统管理->管理节点页面点击左侧的新建节点,输入节点名称,并选择固定代理(Dumb Slave),如果已经添加过节点了,也可以选择复制现有节点,It doesn't matter.

image

点击OK后进入有节点设置页面,此页面上有一些配置项,概要说明如下。

image image image

配置Jenkins使其支持通过Java web启动代理的方法如下:

  1. 打开首页-系统管理-全局安全配置(Configure Global Security);

  2. 代理 - TCP port for JNLP agents设置为“随机选取”;

image
  1. 点击代理协议,勾选全部选项;

    image
  2. Hidden security warnings中的Enable Agent需要打钩选中;

    image

保存后,配置节点时就可以看到"通‘过Java web启动代理" 这一选项了。

一般来说,选择通过Java Web这种方式启动Slave agents就可以了,这种方法需要你登录到Slave机器,详尽的启动步骤后面会描述。若在Master上运行cases,通常是隐藏进程运行的,这就导致如果我们的cases有UI层面的部分,很大可能会运行失败,这样的话我们就需要添加一个Slave节点来执行。大多数实际应用中,会有多台机器需要加入Jenkins,所以添加Slave更是必不可少的。

启动Slave

在Slave列表页可以看到,刚才创建的Slave图标上有一个红色的叉号,这代表当前此Slave处于offline状态。点击Slave名称,可以看到Jenkins给出了两种启动的方法,如下:

image

windows系统下,个人觉得第一种方法比较简单,点击【Launch】,会下载一个名为 "Slave-agent.jnlp"的文件,然后双击该文件就可以启动Slave了。

image

正常情况下,此时再去查看Slave列表,会发现图标上面的红叉已经消失了。

image

我的Slave节点的系统为win10,双击启动文件时,会报以下错误:

image

这个问题可能是由于工作目录丢失引起的,需要你在Slave远程工作目录下新建一个名为remoting的文件夹就可以正常启动了。

配置 Job

在Jenkins首页的左侧菜单栏,点击新建任务,输入一个任务名称,并选择“构建一个自由风格的软件项目”,点击确定进入配置Job页面。

image

配置Job页面分为六个部分,分别为General,源码管理,构建触发器,构建环境,构建,构建后操作,下面将会对这几部分的内容分别进行简要的说明。

General

因为每构建一次Job都会有记录,如果构建次数很多,也可能会占用很多硬盘资源。因此,这个设置就是可以让我们控制丢弃旧的构建。 image

源码管理

Job中配置源码管理的前提是Jenkins服务器已经安装了对应的源码管理工具。Jenkins有很多种源码管理工具可以选择,但是需要下载响应的插件才可以,比如git,则需要安装Git client plugin 和 Git plugin插件。

image

其实,此处没有设置版本管理工具也不是不行,这样的话就需要手动去做更新的动作,加大了人力成本,Jenkins也不推荐这样做。如果大家的Cases使用了版本管理,这样在Cases更新后,Job就会自动Fetch最新的代码来运行,十分方便。

SVN(Subversion)

image

这几个配置好了,基本上就可以使用了。如果有多个不同的SVN库要检出的话,可以点击"Add moudle"来添加新的配置。

Git

Git的配置比较简单,只需要配置好Repository URL(Git库地址),Credentials(证书),并选择一个分支就可以了。

image

构建触发器

可以手动来触发一个构建,也可以通过触发器来自动构建,这里的设置需要根据项目情况自行考虑设置。设置构建触发器时,支持同时设置多个不同类型的触发器;

构建

这里可以选择增加构建步骤,如果Slave是Windows系统,建议选择"Execute Windows batch command"来执行dos命令进行构建,其他平台,如Linux,可以选择"Execute shell",如果项目集成了Ant或Maven,也可以选择对应的选项。

pybot完整的命令行参数,可以在cmd下输入pybot --help查看。

图片.png

构建后操作

构建后操作可选的项同样有很多,根据用户安装的不同插件,可以实现不同的需求,如分析测试结果,发送邮件通知等。

由于我们的Jobs是和rf集成, 所以我们要增加构建后的步骤是Publishes Robot Framework test results, 只有安装了Robot Framework Plugin 插件才会出现该选项,界面如下所示:

image

Directory of Robot output 可以为空,如果前面的pybot命令使用参数-d 指定了输出目录,那么这里也必须要进行设置,否则插件找不到output.xml文件,也就无法解析结果了。所以这里设置的路径是RF运行后产生的xml和html文件所在的目录。

Directory of Robot output 用来设置临界值,一般都设置为100%,表示只要有案例运行失败,则Job的状态就是unstable. 此参数的介绍如下:

Specify thresholds for marking a build unstable or passed. Thresholds are expressed in percentage of tests that passed compared to total amount of tests run. Builds with pass percentage under the blue threshold wild be marked unstable and pass percentage under yellow threshold will yield a failed build.

If "Use thresholds for critical tests only" is selected thresholds will be compared to the pass ratio of critical tests instead of all tests.

配置Jenkins邮件通知

Jenkins本身自带的邮件通知功能较弱,我们可以通过下载'Email Extension Plugin'' 插件来自定义更高级的邮件通知功能。

具体配置步骤,请参照:https://zhuanlan.zhihu.com/p/22810691

【To be continued...】

参考文档

  1. 使用Jenkins进行持续集成, 廖雪峰

  2. linux下利用nohup后台运行jar文件包程序 ,一汪清水

  3. 用Jenkins构建一个新工程,我们一起试一下 ,幕客老师

  4. Jenkins-持续集成平台(安装篇) ,幕客老师

  5. Jenkins入门系列之——01第一章 Jenkins是什么? ,wangmm0218

  6. Jenkins Master/Slave架构, iTech

  7. Jenkins Guided Tour

  8. 基于jenkins搭建一个持续集成服务器,YaiHo

  9. Jenkins常用插件说明(持续更新) ,小学徒V

  10. Jenkins使用教程之关联节点 ,MR_Hanjc

  11. Jenkins 2.19.4默认没有Launch agent via Java Web Start,可通过以下来设置: , jgw2008

  12. jenkins Error performing command: git ls-remote -h , wangfei0904306

  13. Jenkins入门总结 ,iTech

  14. Robot Framework自动化测试修炼宝典[书],齐涛 著

  15. Jenkins的Credentials(证书)管理 ,张侦毅

  16. 配置Jenkins邮件通知, 邓布利多·雪​

上一篇下一篇

猜你喜欢

热点阅读