手把手搭建 Jenkins 的分布式构建

本贴最后更新于 1233 天前,其中的信息可能已经沧海桑田

UI 自动化测试代码写完了以后,会放到 Jenkins 这样的持续集成工具上去构建。如果 Jenkins 平台是搭建在服务器上,会面临 2 个问题:第一个问题是 UI 自动化测试需要渲染界面,需要消耗大量的 CPU 和内存资源,如果服务器上还有其他的服务,可能会造成卡顿或者宕机这样的情况。

第二个问题是 Jenkins 平台上除了这个项目,还会有其他项目需要构建,如果同一时间构建大量的任务同样会造成多个任务抢占资源的情况。

Jenkins 提供了主从模式(master-slave) 解决这个问题。我们可以为 jenkins 配置多台客户机,当客户机和服务器建立连接之后,由服务器发指令给指定的客户机去运行任务,消耗的资源由客户机去承担,服务器只负责和客户机传输数据。

在服务器的 Jenkins 上配置项目

提交代码

首先,把自动化测试的代码传到 GitHub 这样的平台上,把本地代码执行以下操作:

git add .
git commit -m "提交自动化测试"
git push

在 GitHub 上可以看到项目代码更新了,复制 GitHub 仓库链接地址。

image20201111150719533.png

创建 Jenkins 项目

输入 jenkins 服务的 URL 地址,进入 Jenkins 页面。比如你们公司的 Jenkins 为 http://118.23.238.138/

先点击 Manage Jenkins --> Manage Plugin 安装 Git 插件。

image20201111151519414.png

安装成功以后,进入 Jenkins 面板,点击 New Item 创建一个项目:

image20201111151147002.png

在 Item 的配置里选择 Git 管理源码。如果之前没有安装 Git 插件,这里不会有 Git 选项。填入自动化代码的仓库地址,用户名密码和关联分支。 第一次没有在 jenkins 里配置账号的可以点击 add 添加。

image20201111151338747.png

添加构建步骤

点击 add build step, 选择执行脚本的方式,windows 和 unix 系是不一样的。 这里一定要注意,是运行任务的机器,这不是由服务器的系统决定的。 配置好了以后,点击立即构建,此时构建操作应该会报错,因为你的服务器还没有安装执行脚本需要的环境,比如浏览器,python 语言环境,selenium 环境等等。

如果你需要服务器运行脚本,这些环境是必须要装的。但是如果是使用主从模式,只需要客户机安装好环境就可以了。

image20201111151945030.png

添加客户机节点(Node)

在服务器上注册你需要运行脚本的客户机的名称,点击 manage jenkins -> manage node and cloud -> New Node 配置新节点。

image20201111152744461.png

需要注意 Launch method 一定要开启 jenkins 的远程连接端口,否则客户机无法连接上服务器。这种连接用的是 JNLP4 协议, 这种协议是在 websocket + TLS 的基础上封装而成的长连接协议。可以在 jenkins 的安全设置面板种开启。

image20201111153248443.png

连接客户机

在 Node 管理界面点击刚刚添加的客户机,会介绍两种连接方式,直接按提示操作就可以了。之后客户机和服务器就是通过这种方式传递数据。服务器不需要安装运行脚本需要的环境,这些环境都由客户机提供并执行。客户机并不需要安装 jenkin。

image20201111153550900.png

正常构建

连接成功以后就可以正常构建啦。

image20201111154227134.png

查看测试报告:

image20201111154332921.png

回帖
请输入回帖内容 ...