分布式
分布式
使用场景:
- Jenkins搭在了Linux服务器上 可以跑ui自动化脚本么?-可以啊用分布式完美解决
- 比如一个系统的自动化用例有一千多个 一台机器执行所有用例耗时太久 所以用master/slave来解决 同时用多台机器跑脚本更快,需要在jenkins上新建多个任务(对应不同模块用例),指给不同的执行机/小弟机(或许还有更好办法 ,暂不明);
- jenkins搭在了Linux上 只能控制它叫windows上的小弟机去跑脚本;
- jenkins所在机器一般只执行一个项目的部署和自动化测试,就不需要分布式。如果要执行多个项目的,就需要分布式。
- WEB自动化执行比较耗时,常用到执行机。接口自动化运行速度较快,一般不会用到别的执行机
linux上下载jenkins包 用命令行去解压去安装 此处不会需自行百度
1、jenkins服务器 - 在linux上 - 它是纯命令版本。可以装浏览器?-不能,都是以服务来运行的。
2、UI自动化的脚本 - 最好是在windows上跑 用户大多是windows的
怎么在linux上的jenkins上来执行Ui自动化脚本呢??
1)你的linux服务器是不可以运行的。
master(主/领导) - Slave(从/小弟、执行机)
linux windows
1个master(有Jenkins的是master)(创建任务/安排任务/关注任务进度/部门级管理/小弟管理/执行任务)
VS
多个小弟Slave(向领导报到-执行任务-反馈结果)。
1)是不是只有一个jenkins?? 只有master上有jenkins。jenkins具备管理功能。
2)master和slave可以是同一个电脑吗? 领导和小弟是同一个人?---不行 master/Slave模式不支持。
小弟报道之前,主机得先准备一个位置给小弟&要求。
1、名称 、描述: 可自己定义
2、 并发构建数:小弟的能力。一般都写1
3、远程工作目录:1)脚本?2)脚本的环境? 3)脚本放在哪里?小弟机开辟的一个空间放脚本
4、标签: 分类。即小弟机放在哪个标签分类下,以后分配任务时可直接选择某一标签下所有执行机。
5、用法:尽可能多的用、只做指定的匹配的任务(一般选这个)
1台主机(管理工具-java/allure) ----- (java的安装目录/allure安装目录/git目录) -----多台小弟(工具目录)
不同的任务,需要不同的工具环境。jdk1.8,jdk1.11
主机工具配置:全局工具配置当中的设定目录。
小弟机工具路径配置:小弟机节点上,配置工具目录。
一、小弟报道之前,主机得先准备一个位置给小弟&要求。
1.windows机上访问一台Linux机器上的jenkins(129.211.8.149是linux服务器)
2.Manage jenkinsàmanage nodes and cloudsà新建节点
进入后的页面如下:点击新建节点(管理员帐号才可点)(节点即小弟机)
3.新建节点页面:填写节点名称,选择固定节点(permanent agent),点击确定。
此步比喻为:在此声明 招个windows小弟来干web自动化的活
4.进入详情填写页面:
需填字段有:
1、名称 、描述: 可自己定义
2、 并发构建数:小弟的能力。一般都写1
3、远程工作目录:1)脚本?2)脚本的环境? 3)脚本放在哪里?小弟机上开辟的一个空间放脚本
4、标签: 分类。即小弟机放在哪个标签分类下,以后分配任务时可直接选择某一标签下所有小弟机。
5、用法:尽可能多的用/只做指定的匹配的任务(一般选这个,因为没指定的不匹配的任务我小弟机上都没脚本也做不了啊)
6、启动方式:选项有:launch agent agents via ssh -—ssh是mac linux都有的
通过java web启动代理-这个是windows的,即小弟机向主机报道的方式
第一次装Jenkins使用时, 一般没“通过java web启动代理”这个选项 要在下面这里开启:
Manage jenkinsàConfig global securityà
进入后,找到代理部分,如下图。把默认的“禁用”改为“随机选取”(意为改为端口不指定)――〉保存。再次进入详情填写页面就有了“通过java web启动代理”这一选项。
应该是选择这个 选这个下面出现的内容才和选择“通过java web启动代理”出现的内容一样
7、 可用性: 选择“尽量保持代理在线”(即尽量保持小弟机在线)
8、节点属性/工具位置(小弟机本机上的jdk/allure命令行所在位置)不填则用主机上jenkins全局工具配置中定义的位置,如果小弟机和主机刚好位置相同则可成功生成allure报告,如果不同,还需指定下小弟机的工具位置。
5.以上七项填完后点击保存。
保存后 这个节点显示在列表中有个红色叉叉 代表只是给小弟机建了个坑 但是小弟机还未跟我建立联系
二、小弟机建立联系,来报道了。
1.小弟机在自己的电脑上打开master机上的jenkins地址,
进入Manage jenkinsàmanage nodes and cloudsà
2.点击小弟机的名字,进入详情面à
3.lunch
点击“launch”,会触发下载slave-agent.jnlp,保留附件。à
下载完成后,点击打开,可能会弹出提示java版本过低要升级,选择稍后升级(此步可能不会出现)à
点击”launch” 运行程序
连接可能略慢 一两分钟吧。安装好后不要关闭,这是连接的工具,关了就断开连接了,直接最小化就行了
File下有个选项“install as a service”安装成一个服务,如果安装成服务的话,运行过程只能看到日志输出,却看不到浏览器运行过程。
以上过程还需注意:
*进master机上Jenkins,增加节点(给小弟机准备位置)时,要管理员权限才能操作,一般公司要专业运维才有此管理员帐号。且此步骤随便哪台电脑上登陆master机的jenkins都可操作,有些公司连服务器需要运维开互信权限。
*小弟机建立联系,一定要在小弟机本机上登陆master机的Jenkins,且不一定要用管理员帐号。
*小弟机执行时不可锁屏,因为锁屏就断网了。但装成服务的话可以只要开机在 服务就在。但也没网不能执行吧。待求证。
三、实战:master机给小弟机分配任务
Jenkins首页,“新建item”(登陆master机上的jenkins)
2.输入任务名称,选择“freestyle project”,最下方点击“确定”
- 在详情页,把任务指给小弟机:(无此步则是由Jenkins所在的主机来执行此任务)
3.1添加小弟机:勾选“限制项目的运行节点”,下方“标签表达式”中填写小弟机的名字或标签,则后方设置都是为小弟机做设置。
3.2 指定工作空间: 点击“高级”展开项中 勾选“自定义工作空间” (按需选择性使用)
3.2.1. 使用自定义的场景比如:代码在pycharm中已跑通了,可直接指定这份代码为工作空间,填上执行机上的代码路径,此处任务是指给了小弟机的,所以要填上小弟机上的工作空间,如下图展示
1.2.2 不勾选“自定义工作空间”即使用小弟机默认的工作空间,即建立节点(小弟机)时指定了小弟机的“远程工作目录”为D:/Jenkins_Slave_Home, 如果用它就会在这个目录下生成一个workspace目录 然后在里面划块地把代码下载在这里。怎么下载? 通过源码管理GIT/SVN下载。
3.1+3.2配图:
3.4构建触发器:按需配置,此处先不用。
4.构建中选择“执行windows批处理命令”,出现命令填写框,直接填写命令去运行代码中的main_pytest.py文件:python main_pytest.py。(命令行不需要进入某个目录 因为已经指定了工作空间是:“D:\py22_Web_Study\web自动化-阶段3-pytest应用(2)-fixture骚操作+参数化+标记用例-2019-1211”,会自动运行此空间下的文件
以上为分配任务执行,还没allure报告,再加上篇的allure与jenkins集成 便完美了。