Jenkins 主从模式实现分布式自动化测试

本贴最后更新于 913 天前,其中的信息可能已经时移世易

背景

日常构建Jenkins任务中,会经常出现下面的情况:

(1)自动化测试执行需要消耗大量的 CPU 和内存资源,如果服务器上还有其他的服务,可能会造成卡顿或者宕机这样的情况;

(2)Web自动化测试代码需要在不同浏览器上面执行(兼容性测试),或者自动化测试代码比较多,执行速度非常缓慢。

Jenkins 提供了主从模式(Master/Slave) 解决这个问题。Master/Slave相当于Server与Agent。通过Master我们可以关联多个Slave从机来为不同的任务或相同的任务的不同配置服务。

默认我们使用Jenkins Master来构建任务。我们可以为Jenkins 配置多台Slave从机,当Slave从机和Jenkins服务建立连接之后,由Jenkins发指令给指定的Slave从机去运行任务,消耗的资源由Slave从机去承担。

添加Slave节点

在Jenkins中,Master和Slave都称为Node(节点),我们可以在Jenkins中配置多个Slave 节点。

进入Jenkins首页,选择Manage Jenkins -> Manage Nodes and Clouds -> New NodeManage Jenkins -> Manage Nodes and Clouds -> New Node,配置参考如下:

image.png

需要注意 Launch method 一定要开启 Jenkins的远程连接端口,否则Slave节点无法连接上Jenkins服务。这种连接用的是 JNLP4 协议, 这种协议是在 WebSocket + TLS 的基础上封装而成的长连接协议。可以在 Jenkins 的安全设置面板中开启:进入Jenkins首页-> Configure Global Security,选择如下配置

image.png

连接Slave节点

进入到Nodes管理页面,从Jenkins首页->Manage Jenkins->Manage Nodes and Clouds进入:

image.png

可以看到我们可以通过两种方式将Slave节点连接上Jenkins:

(1)Launch agent from browser在从机中通过浏览器方式启动

(2)Run from agent command line 在从机中通过运行命令行方式驱动

1. 浏览器方式连接

在需要作为从机的主机上通过浏览器访问上述页面,点击Launch图标将会在下载一个名为slave-agent.jnlp文件,下载完毕双击打开,初始化之后会显示已连接:

image.png

再次进入到节点管理页面,此时Jenkins显示Slave节点已连接上:

image.png

注意:Jenkins连接Slave节点需要一段时间,不会立即更新连接状态,我们需要多等待下。

2. 命令行方式连接

点击蓝色“agent.jar”链接,会下载一个名为agent.jar文件:

image.png

按照上述提示,在命令行终端输入对应命令,最后会提示已连接。

image.png

Jenkins任务配置Slave节点执行

进入到任务配置页面中,选择General对应配置指定对应从机:

image.png

再次构建任务通过Console Ouput控制台输出可以看到任务已经由Jenkins调度从机执行:

image.png

可能碰到的问题

在Jenkins任务开始构建之后发现出现如下的错误信息:

image.png

问题发生原因:

因为任务是在Slave节点执行,所以Jenkins需要Slave节点的环境变量(包括Git、JDK等等),而Jenkins 默认使用的是本身宿主机的环境变量。

解决方案:

进入到Slave节点的配置页面中,选择Node Properties -> Tool Locations,指定Git及JDK在从机上对应的路径

image.png

1 操作
shakebabe 在 2021-09-28 13:52:08 更新了该帖
回帖
请输入回帖内容 ...