Jenkins-slave分布式环境构建与并行WebUi自动化测试项目
前言
之前搭建过selenium grid的分布式环境,今天我们再来搭建一次Jenkins的分布式环境:jenkins-slave
Jenkins的Master-Slave分布式架构主要是为了解决Jenkins单点构建任务多、负载较高、性能不足的场景。
Master-Slave相当于Server和Agent的概念。Master提供web接口让用户来管理job和Slave,job可以运行在Master本机或者被分配到Slave上运行构建。一个Master(Jenkins服务所在机器)可以关联多个Slave用来为不同的job或相同的job的不同配置来服务,现在我们开始配置Jenkins-slave
配置前准备
为了模拟真实的Jenkins环境,我采用了两台实体电脑,192.168.1.101作为Jenkins服务器,并已经安装好了Jenkins和java环境(如何安装,点击此处), 192.168.1.103作为slave机也就是node节点,并安装好Java环境,同时要保证两台机器处于同一个网段,相互能够ping通,到此为止前期的环境准备就已经完成了
新建节点
登录Jenkins服务器-点击Jenkins配置-选择Manage Nodes(节点配置)-点击New Node(新建节点)-点击ok
配置节点
注意:如果你没有配置过任何节点,那么启动方式是没有我选择的选项的(后面会讲启动方式的配置),你只需要先随意选择一个保存即可
配置完所有的节点信息之后保存,会看到如下界面,我们可以点击节点机器进去看一下[点击window10]
里面显示是这样的(你的机器看到的就是这样的,因为启动方式你并没有配置),明显这里是断开链接的状态,是无法使用的, 你先别管为什么,进入下面的设置
配置启动方式
启动方式的配置(配置上一个步骤中的启动方式选项,让我们需要的启动方式能够选择)
返回Jenkins主目录-点击Manage Jenkins-选择Configure Global Security(全局安全配置)
接下来勾选如下选项
全部勾选,或只勾选第3项即可(jave web的启动方式),当然不同版本的jenkins这里显示的貌似也不太一样,但是作用是一样的,也许你的是如下页面这样的
保存全局安全配置,(这一步完成之后你需要重新到节点配置里面把启动方式修改一下,修成成我图中的方式)之后再次保存节点的配置,接下来查看节点,你会看到如下显示
启动节点服务器
启动节点服务器,目的是使节点服务器与Jenkins主机建立链接,有两种方式启动
1. 你可以点直接点击Launch,然后根据提示,会执行下载slave-agent.jnlp文件,下载完成后,把此文件上传到作为节点的机器(192.168.1.103)的远程工作目录中(配置节点时的远程工作目录)
2. 点击上图中的agent.jar链接,下载此文件,下载完成后此文件传到作为节点的机器(192.168.1.103)的远程工作目录中(配置节点时的远程工作目录),在此目录下执行cmd命令
java -jar agent.jar -jnlpUrl http://192.168.1.102:8080/computer/window10/slave-agent.jnlp -secret 3217c15e66f1fbbe597775fcd0513b895ccf02c3e7fc3e6b3d2a53d487e7bac4 -workDir "D:\Program Files (x86)\Jenkins"
注意其中的地址,地址中的ip是代理自动生成的Jenkins服务器代理地址,我们在执行命令时,需要把这个地址改为真实的Jenkins服务器地址192.168.1.101
以上两种方式任选其一,我这里选择执行cmd命令(注意命令是在节点主机上执行的),执行结果如下
再次查看Jenkins主机上的几点状态
构建配置
接下来配置一下Job,测试一下项目在节点主机上是否能够成功构建并执行
新建项目
配置Geeral
注意这里的标签名,输入后会自动识别之前节点的标签
添加构建步骤
这里我选择的是执行windows批处理命令,这里有个坑
python解释器的完整目录需要是节点主机上安装的解释器路径,当然如果你的解释器配置了环境变量,也可以省去完整路径
ok,我们保存配置,我只做了简单的配置,没有其他功能,如果你想配置发送邮件,拉取git库的代码执行等其他功能,你可以参考我之前的文章
执行构建
接下来我们手动执行一下构建,因为这个项目是第一次配置的,所以需要手动执行一次构建,为了生成项目的工作空间
当手动执行完构建之后,你会在节点主机的远程项目目录下发现生成了一个workspace文件夹且里面包含了以项目名称为PytestUiAutoTest的文件夹
下一步,我们手动把项目的原代码复制到此目录下,然后再次执行构建
查看结果
Jenkins服务器控制台日志
通过控制台日志可以看到,执行任务的机器是我们配置的节点服务器执行的
最后
整个环境的配置到这里已经全部搭建完成,再次声明需要注意的几点
1. 配置节点时的远程工作目录可以是节点服务器上的任意目录
2. 启动节点时的cmd命令中的ip地址一定是Jenkins服务器的真实地址,因为换成代理的虚拟地址时,节点服务器链接不上Jenkins服务器(当然你也可以试试使用代理地址,我是没成功)
3. 执行脚本的批处理命令中的python解释器的路径需要是节点服务器中安装的pyhon解释器的路径(并不是Jenkins所在服务器的解释器路径)
4. 这点也是最重要的一点,前面所有配置的前提是你的Jenkins主机和节点主机已经配置了Java环境