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环境
Jenkins-slave分布式环境构建与并行WebUi自动化测试项目的更多相关文章
- 谁能告诉我如何通过Jenkins完成分布式环境搭建并执行自动化脚本
今天我们接着昨天的内容,看一看如何完成Jenkins分布式环境的搭建和使用,因为我之前也是自己一个人摸索的,如果有不对的地方,请各位看官私信指出. 新增分布式部署节点 在系统管理/节点管理中点击新建 ...
- Jenkins Slave 设置
Jenkins Slave node环境变量设置有很多trap,在最近的工作当中,我把slave部署在red hat linux 上,进行c++项目的编译部署和发布,但是在执行工程的时候,总会报出某些 ...
- Jenkins分布式构建与并行构建
Jenkins分布式构建与并行构建 jenkins的架构 Jenkins采用的是"master+agent(slave)"架构.Jenkins master负责提供界面.处理HTT ...
- Docker+Jenkins持续集成环境(5): android构建与apk发布
项目组除了常规的java项目,还有不少android项目,如何使用jenkins来实现自动构建呢?本文会介绍安卓项目通过jenkins构建的方法,并设计开发一个类似蒲公英的app托管平台. andro ...
- Docker+Jenkins持续集成环境(2)使用docker+jenkins构建nodejs前端项目
前文使用Docker搭建Jenkins+Docker持续集成环境我们已经搭建了基于docker+jenkins的持续集成环境,并构建了基于maven的项目.这一节,我们继续扩展功能,增加对Nodejs ...
- Hadoop 分布式环境slave节点重启忽然不好使了
Hadoop 分布式环境slaves节点重启: 忽然无法启动DataNode和NodeManager处理: 在master节点: vim /etc/hosts: 修改slave 节点的IP (这个时候 ...
- hadoop2.2分布式环境搭建
hadoop2.2的分布式环境需要配置的参数更多.但是需要安装的系统软件和单节点环境是一样的. 运行hadoop在非安全环境 hadoop的配置文件有两类: 1:只读的默认配置文件: core-def ...
- Jenkins实现生产环境部署文件的回滚操作(Windows)
由于dotnet项目的生产环境环境部署工具比较少,所以我使用jenkins作为生产环境的自动化部署工具. 既然有回滚操作,那么就会有部署操作:要实现回滚,先要实现部署的操作,我在jenkins搭建了一 ...
- Jenkins + Github持续集成构建Docker容器,维基百科&人工自能(AI)模块
本文分两部分,第一部分是手动计划任务的方式构建Github上的Docker程序,第二部分是用Github webhook Trigger一个自动构建任务. Jenkins采用2.5版本Docker采用 ...
随机推荐
- HTML连载11-HTML中被废弃的标签&字符实体
一.为什么会有被废弃的标签 答:HTML中以前存在一部分不是用来添加语义的标签,而与我们HTML标签是用来添加语义的,这与我们的定义不相符. 例如: 1.标签<br>:换行 2.标签&l ...
- python常用删除库的方法
本文记于初学py的时候,两年后补发. python常用库的安装方法一般有几种,比如: 1.编译过的exe包,直接无脑下一步就可以了. 2.pip install 库名,快速安装.自动匹配最新版本. 3 ...
- 简单学习js
由于是个前端小白,通过这一两天的学习html,css,js和jquery等,基本上前端会用了,而且熟悉我博客的人来说,没错,我把自己的博客给优化了一下(一些大佬都是禁用模板的所有样式,然后自己设计页面 ...
- 你所忽略的,覆盖equals时需要注意的事项《effective java》
我们都知道Object的equals的比较其实就是==的比较,其实是内存中的存放地址的比较.正常逻辑上:类的每个实例本质上都是唯一的. 在工作中我们实际的业务逻辑往往有可能出现一些相对特殊的需求需要对 ...
- 【mysql5.7】远程无法连接设置
版本5.7 系统:ubuntu16.04 配置文件位置(apt安装): 1.链接设置 注释掉在/etc/mysql/mysql.conf.d/mysqld.cnf里面的bind-address = 1 ...
- 阿里云ssl证书NGINX配置https,wss
server { listen 443; server_name server.sentiger.com; ssl on; root /home/wwwroot/Service/beta/public ...
- 手动搭建自己的nuget服务器及使用
这篇文章的主要目的: 1.搭建自己的私有的nuget服务器 2.打包代码为nuget包 3.在其他项目中使用私有服务器上的nuget包 一. 搭建自己的nuget服务器 1. 创建一个空的ASP.NE ...
- CentOS7系统安装
CenOS7安装系统 镜像下载地址: http://isoredirect.centos.org/centos/7/isos/x86_64/ https://mirrors.aliyun.com/ce ...
- 解读TIME_WAIT--你在网上看到的大多数帖子可能都是错误的
由于TCP协议整个机制也非常复杂我只能尽可能的在某一条线上来说,不可能面面俱到,如果有疏漏或者对于内容有异议可以留言.谢谢大家. 查看服务器上各个状态的统计数量: netstat -ant | awk ...
- LBXF时间管理法2.0
前言 LBXF是柳比歇夫的中文拼音缩写,下文中会着重介绍柳比歇夫 时间管理法主要帮助我们提高生产性时间,以及提高生产效率.我会按照柳比歇夫.执行步骤.时间管理工具Toggle三个模块来讲解LBXF时间 ...