Jenkins的分布式构建及部署——节点

目录

 

一、 什么是Jenkins的分布式构建和部署

二、 什么时候使用节点和作用

三 、节点服务器的要求

四 、节点管理

五、连接节点

 六、job配置

七、问题

1. ant.bat 无法识别

2. 查看错误日志时,提示build.xml:6: Unexpected text " "

3.taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found


一、 什么是Jenkins的分布式构建和部署

  Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。

二、 什么时候使用节点和作用

  当我们使用多台服务器时,并且配置了tomcat或jboss集群服务,可通过jenkins的节点配置,将jenkins项目发布在不同服务器上(分布jenkins工作空间,部署项目到不同服务器的tomcat或jboss),这就形成了jenkins的分布式。节点服务器不需要安装jenkins(只需要运行一个slave节点服务),构建事件的分发由master端(jenkins主服务)来执行。

三 、节点服务器的要求

  注意:如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。

  建议:所有Linux或者Windows机器的环境路径统一(如:JDK、Maven),安装位置和jenkins所在服务器的JDK和maven必须一致,也就是说jenkins所在服务器和各个节点服务器中的JDK和Maven目录和文件名都是一样的。以便于管理、不容易出现问题。

四 、节点管理

1.在jenkins上点击 “系统管理”--->“管理节点”--->“新建节点”,填写节点名称,勾选选项,点击ok开始新建节点

                   

2.配置信息如下:

 

 配置介绍:

名称:节点的名称

并发构建数:使用处理器个数作为其值会是比较好的选择(可以点击后面的?号来查看详细信息)设置为0即表示不删除该节点的配置但是不启动该节点

远程工作目录:操作服务器的目录

用法:选择尽可能使用的话,在构建job的时候会优先在该节点上构建;选择绑定job的话,需要在运行的节点中指定从节点.

启动方式:launch agent via java Web Start
Host Key Verification Strategy:选择不验证(non verifying verification strategy)

可用性:尽量保持代码在线(这里仅仅做测试,不考虑性能消耗..)

接下来要在节点属性中添加一些工具列表,本次实验至少需要jdk、maven、git,因此必须得在这里进行配置,地址选择对应slave服务器上的地址

 4种启动方式:
Launch agent via Java Web Start 通过Java Web Start连接节点 (适用于所有支持Java程序的系统)
Launch slave via execution of command on the Master 通过主节点的控制台连接节点
Launch slave agents via SSH 在Unix(包括Linux)机器上通过SSH通道连接节点 (适用于Unix和Linux)
Let Jenkins control this Windows slave as a Windows service 让Jenkins节点添加到Windows服务中
关于四种启动方式如何选择,建议直接单击Jenkins启动方式一栏旁边的问号图标,会有每种启动方式的具体解释。具体,这里slave server 为macOS,可以使用Java Web Start ,也可以使用ssh,但由于项目限制,slave机器IP不固定,故选择了Java Web Start。

Tips:默认第一次打开时,没有 Launch agent via Java Web Start方式,需要在系统配置中进行配置,Jenkins -> 系统管理 -> Configure Global Security -> Agent -> 指定端口,此时返回配置节点,则可以看到该项。
 

 

五、连接节点

到目前为止,节点配置工作完成,并已创建成功,新的节点机初始化将处于脱机状态,接下来需要连接节点。介绍Launch slave agents via Java Web Start连接方式,Launch slave agents on Unix machines via SSH点击保存后会自动连接。

1.  在节点机上浏览器上输入{IP:prot}/computer/,这里指的是Master的IP和端口号,可以看到新的节点机初始化将处于脱机状态

2.  下载 安装节点服务

点击节点name,跳转到下面页面

Jenkins的分布式构建及部署——节点

a:需要完成下载工作,下载到slave节点的远程工作目录
1.点击Launch,下载文件为slave-agent.jnlp
2.将slave-agent.jnlp文件复制到节点机的远程工作目录D:\ProgramFiles\jmeter\bin下,(这个路径就是上面咱们新建的节点时选的工作路径)


b.下载完成后,就要启动slave了,有两种启动方式,但本质都是将master中的slave-agetn.jnlp文件下载至slave所在的虚拟机,然后运行文件。两种方式如下:
1.双击运行slave-agent.jnlp,
2.如果无法运行,在cmd命令中输入javaws D:\ProgramFiles\jmeter\bin\slave-agent.jnlp

运行过程:

Jenkins的分布式构建及部署——节点

点击运行:

Jenkins的分布式构建及部署——节点

--显示Connected,即表示此节点创建成功。

3.  将这个节点加入服务

  上面的窗口关闭或者电脑重启后,这个节点也就关闭了,所以最好把这个节点加入window服务。     点击窗口的file菜单,点击Install as a service,完成

Jenkins的分布式构建及部署——节点

成功示例:

六、job配置

所有环境准备都已经完成,执行构建即可,同时如果需要指定到slave机器执行,则在构建设置中设置对应的机器即可。

七、问题

1. ant.bat 无法识别

思路:出现这个问题有可能是环境变量配置错误,于是第一反应就是重新查看环境的配置,发现没有问题,然后又运行了几次,还是失败,错误日志是一样的。命令行执行ant -version提示正确,再次证明ant配置正确,但就是提示不识别该命令,于是重新整理了一下思路,思考了一下这个项目需要的框,包含ant、jdk和jenkins,初步怀疑可能jdk和ant版本冲突,于是问了下度娘,发现jdk和ant之间确实有版本要求,但是百度上没搜到相关的对应版本信息,于是试着去ant官网上有没有说明,好像有了收获

 解决方法:可以看出ant1.9.x需要java5以上的版本,ant1.10.x需要java8。而我用的jdk7,ant用的是最新的1.10.1,

2. 查看错误日志时,提示build.xml:6: Unexpected text " "

解决方法:将所有的注释删除,问题解决

3.taskdef class org.programmerplanet.ant.taskdefs.jmeter.JMeterTask cannot be found

由于Ant的lib文件没有ant-jmeter-1.1.1.jar这个jar包,因为ant执行jmeter脚本时会调用JMeterTask,但是在ant的lib文件没有相应的jar包。所以一直会报这个错。

解决方法:把jar包:ant-jmeter-1.0.9.jar放到ant的lib路径中即可。因为JMETER的测试结果一般生成的是一份聚合报告,如果想用ANT生成具体的测试报告,需要这样的一个jar包 ant-jmeter-1.0.9.jar 里面提供的一个JMeterTask的类来运行JMTER的测试脚本,生成jtl的结果文件,然后用XSLT来把.jtl的结果文件转化为.html形式的结果报告

 

發表評論
所有評論
還沒有人評論,想成為第一個評論的人麼? 請在上方評論欄輸入並且點擊發布.
相關文章