您的位置:首页 > 运维架构 > Tomcat

自动化测试持续集成:jenkins+slave环境搭建全教程(以win7+win7为例)

2017-08-26 17:55 603 查看
Jenkins+slave搭建全教程

部分参考图片与内容来源于网上博文,给出链接,本文不讲概念,概念类的相比大家百度一下就明白是怎么回事,参考链接如下:
https://jingyan.baidu.com/article/49ad8bce09d6085835d8fa63.html http://blog.sina.com.cn/ishouke/
http://blog.csdn.net/e295166319/article/details/54946966

http://blog.csdn.net/nescafe1111/article/details/27528749

http://www.cnblogs.com/GGHHLL/p/3251524.html

http://www.cnblogs.com/zz0412/p/jenkins_jj_12.html
http://blog.csdn.net/e295166319/article/details/54946966
博主因为想做纯粹的自动化测试,目的是能够在B主机上执行定时任务,安排测试策略,不需要说本人去打开pycharm选择run,或者命令行python
xx.py。所以去搞Jenkins,如果大家不想搞Jenkins,笨办法就是额外申请了一台主机跑自动化脚本,用A主机远程操控B就可以了,有任务的时候远程一下,执行一下all_test.py。win7系统的安全策略会有很多限制,博主在使用win7默认的远程控制时,碰到太多问题,所以放弃这个方式,选择vnc
viewer和vnc server,具体的安装配置,博主就在此不讲了,感兴趣的同学可以去了解一下。

博主的搭建环境是两台win7,以A-master,B-slave主机为名讲解博主执行自动化测试的持续集成的血泪史

A-master主机搭建环境:

Apache Tomcat 环境安装,下载地址:http://tomcat.apache.org/download-80.cgi

JAVA JDK(博主的JDK版本是1.8),百度jdk,第一条就是,选择普通下载即可。

 


Jenkins,下载地址https://jenkins.io/download/

JDK下载安装后,需要设置环境变量,把jdk安装目录:C:\Program Files (x86)\Java\jdk1.8.0_144\bin添加到PATH中;

新建环境变量JAVA_HOME:C:\Program Files (x86)\Java\jdk1.8.0_144,这个变量值就是你的jdk的目录。不加这个变量在后续启动tomcat的时候会碰到错误提示说没有jre(好像是这样的,原谅博主未保存当时的报错截图)

然后打开cmd,输入命令:java -version,看到以下内容说明java环境配置OK

 


Tomcat安装ok后,进入tomcat的安装目录,例如D:\apache-tomcat-8.5.20\bin,找到startup.bat文件,双击或者命令行输入startup.bat文件启动tomcat,然后在浏览器输入http://localhost:8080或者
输入http://你的ip地址:8080,如果出现以下界面说明tomcat成功启动。

 


Jenkins安装方式有两种:

一种是setup.exe客户端包,这种启动窗口进入安装流程的时候会让你选择一个目录,直接选择Apache tomcat下面的webapps目录例如D:\apache-tomcat-8.5.20\webapps

一种是war包,直接解压到Apache tomcat的webapps目录下,路径同上

 


重启tomcat:startup.bat

浏览器输入http://localhost:808/jenkins/或http://你的ip地址:8080/jenkins访问,启动时间有点小慢,稍等片刻,第一步会让你验证密码,按照指示打开指定的文件复制过来就可以,后续都是傻瓜式配置。

启动成功后界面如下图:



这说明Jenkins已经搭建好了。

 

接下来就是B-slave主机的环境搭建,因为B主机是要跑我们的UI自动化测试的脚本的,博主的自动化脚本是以python3.6+Selenium3.5+chrome59+chromedriver.exe为基础搭建的,当然还有一些其他的python模块,例如xlrd,ddt等等,这些东西都需要在B主机上搭好,想来朋友们来了解Jenkins的时候,对这些环境的搭建已经不是问题了。

B-slave主机同样也需要安装JDK,因为我们选择的启动slave的方法是Java
Web Start(windows推荐),后面会讲这个东西。

现在我们回到A-master主机,打开Jenkins网页,进行slave节点的配置。

首先进入Jenkins首页左上角有个系统管理,点击

 


选择管理节点并点击

 

 


左上角选择新建节点并点击

 


 

页面显示如下图

 


可能是Jenkins版本的问题,有些教程给出的这里不太一样,下面显示的是dump slave,例如

 


不过并没太大关系,输入节点名称,这里定义一下就好,博主是跟随教程选择B-slave主机的ip地址命名,然后勾选下面的permanent agent,点击ok,打开的页面如下图所示

 


说明:

Name:

定义 slave 的唯一名称标识,可以是任意字符串,通常设置为slave
主机名、ip地址

描述:

关于 slave 的描述,通常用于描述与其它salve
的区别

# of executors:

来自官方描述:这个值控制着 Jenkins
并发构建的数量. 因此这个值会影响Jenkins
系统的负

载压力. 使用处理器个数作为其值会是比较好的选择。

增大这个值会使每个构建的运行时间更长,但是这能够增大整体的构建数量,因为当一个项目在

等待 I/O 时它允许
CPU 去构建另一个项目。

设置这个值为 0 对于从
Jenkins 移除一个失效的从节点非常有用,并且不会丢失配置信息

远程工作目录:

指定 slave 的工作目录路径。最好设置为绝对路径,如“/var/jenkins”或“c:\jenkins”。这

里填写的是相对于 slave
主机的路径,正常情况下,不必对 master 主机可见。

标签:

标记(又叫做标签),用来对多节点分组,标记之间用空格分隔.例如'refression
java6'将会

把一个节点标记上'regression'和'java6'。

举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运行,

那么你可以配置所有的 Windows
系统节点都标记为'windows', 然后把Job
也标记为

'windows'.这样的话你的 Job就不会运行在除了
Windows节点以外的其它节点之上了.

用法:

控制 Jenkins 如何在这台机器上安排构建.

1)尽可能的使用这个节点

这是默认和常用的设置. 在这种模式下,Jenkins会尽可能的使用这个节点.任何时候如果一个

构建能使用这个节点构建,那么Jenkins
就会使用它.

2)只允许运行绑定到这台机器的 Job

这种模式下,Jenkins只会构建哪些分配到这台机器的Job.
这允许一个节点专门保留给某种类

型的 Job.例如,在Jenkins
上连续的执行测试,你可以设置执行者数量为1,那么同一时间就只

会有一个构建, 一个实行者不会阻止其它构建,其它构建会在另外的节点运行.

 


在启动方法这里,有的新手(就跟博主一样)朋友可能会发现,诶为什么我的启动方法没有这个Launch agent via Java Web Start,不要方不要方,开启方法如下。

同样是Jenkins首页点击系统管理,然后点击configure global security

 


 

进入的界面如下图,然后点击agent protocols

 

 


点击agent protocols后,出现以下内容

 


把protocol/3勾选上,然后进行以下确认

 


保存配置之后,slave的启动方法就有这个java web start了。

Slave配置完成后,界面基本上如下图所示。

 


然后有的朋友(像博主)发现自己的这里并没有 什么javaws httpxxxxxxx,如下图



其实也没什么关系,这三个方式都可以使用,在B-slave主机上打开cmd,输入以上的命令,任意一条都可以,如果你出现下面的图片

 


恭喜你,你的slave搭建ok了,然而还是有像博主这么蛋疼的人,输入命令行发现这个jnlp文件无法access,僵硬,两条命令都不行,注意,这里有些朋友可能在A-master上使用的localhost:8080所以他A-master给出的这些命令是localhost的如下图


你可不至于在B-master上输入这个命令吧。不要这么傻,还是老老实实切换成ip地址吧,

回到前面B-slave主机输入命令报错的问题,博主采用了笨办法,在A-master上点击这个Launch,把slave-agent.jnlp文件下载下来然后通过U盘粘贴到B-slave的Jenkins工作目录下,然后通过javaws
slave-agent.jnlp成功启动。回到A-master上你会发现

 


状态已经发生了变化,这说明你的slave节点已经配置ok了。

然后接下来就是新建项目,点击新建

 


 

然后选择构建一个自由风格的软件项目

 


进入页面后

 




保存后,执行构建,构建时,会自动执行远程主机上的python项目脚本。

写在后面,后续还有一些坑会等着朋友们,所以博主这里一起讲了。后面博主碰到的有两个问题,因为环境的问题,或许你碰不到,那恭喜你,如果碰到了,不妨试试博主提供的解决方法。

一个是上面输入的批处理命令,执行python脚本的时候报错:import模块失败,找不到这个模块,平时使用pycharm的时候为什么没有碰到这个问题,简单讲就是pycharm和命令行查找模块的路径不同,感兴趣的朋友可以具体了解一下,搞清楚包和文件夹的区别(__init__.py),然后解决的办法就是在B-slave主机的python安装目录下,在Lib文件夹找到site-packages文件夹,在里面新建一个xxxx.pth文件,注意确实是pth格式,把自己自动化测试工程的绝对路径写进去,如D:\\code\\autotest
至于为什么是双斜杠,博主也没搞清楚这个,因为单斜杠不生效,而且博主在python下 使用print(sys,path)的时候发现他的输出都是这个格式,所以博主就这样写了,结果确实有效。

 




 

可以通过以上的命令检查一下我们的工程是否被添加到这里,出现上图就说明我们的包能够被找到,就不会出现imort失败的情况了。

另外一个出现的问题是B-slave主机上的那个jnlp启动的连接会中断,这个博主没去了解具体原因,有可能是他自己过了一段时间主动关闭了这个服务,所以你在A-master上会看到这个B-slave节点下线了,报错信息如下所示:

 


要知道选择Java web start
一个很蛋疼的问题就是如果B-slave节点 宕机,主机是无法启动的,只能远程操作重新启动连接,那我们自动化的意义在哪里呢,要勇于说no,解决办法其实在启动jnlp
conneted成功的时候已经给出提示了,原谅博主网页盗图,还是xp的好气。

 


这里会有一个install as windows service,点击这个就可以把slave-agent服务添加到windows服务中,开机的时候自动启动,岂不是美滋滋,何况B-slave主机不碰到意外情况是不用关机的。如果安装成功,在windows服务下面会看到这个,当然没那么简单的就是像博主这种菜鸡,又碰到坑了,java的异常错误,大体上是vmi
dennied,这又是什么JB,这个东西的意思就是说当前登录的windows系统的账户权限不足,测试权限不足的方法,你可以使用在命令行输入net
start winmgmt
 如果出现错误5 dennied,恭喜你成功入坑,权限不足,莫方,解决办法如下。

1、打开注册表

2、按照如下的路径慢慢找下去。HKEY_LOCAL_MACHINE\Software\Microsoft\Windows\CurrentVersion\Policies\System\EnableLUA

点击system右侧会有这个enablelua的变量,修改他的值改为0,win7会弹出提示重启,重启之后再次验证权限,方法同上,如果提示大体意思是wmi已经启动了,ok,你的权限修改成功,然后我们再次执行javaws
slave-agent.jnlp 启动agent服务的时候,选择install
as windows service,完美解决。但是切记,如果设置成了service,那么在执行项目的之后你是无法看到浏览器启动的,虽然有在构建过程,是在后台处理的。

然后我们
计算机-右键-管理-点击服务,看到以下内容

 


就配置ok了,这样的话就不会主动断开连接了,博主亲测。

博主当然还碰到下面这个问题,具体的原因等到博主找到解决办法之后会再次更新。谢谢大家,看完是挺累的。有能解决的大佬,欢迎评论区留言,博主感激不尽。

 


 
内容来自用户分享和网络整理,不保证内容的准确性,如有侵权内容,可联系管理员处理 点击这里给我发消息