zoukankan      html  css  js  c++  java
  • Jenkins-slave分布式环境搭建

    前言

    之前搭建过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环境

  • 相关阅读:
    跟我一起学Go系列:gRPC 全局数据传输和超时处理
    跟我一起学Go系列:Go gRPC 安全认证方式-Token和自定义认证
    c++中的继承关系
    数值型模板参数的应用
    [源码解析] 机器学习参数服务器Paracel (3)------数据处理
    [源码解析] PyTorch 分布式(2) --- 数据加载之DataLoader
    [源码解析] PyTorch 分布式(1) --- 数据加载之DistributedSampler
    [源码解析] 机器学习参数服务器 Paracel (2)--------SSP控制协议实现
    [源码解析] 机器学习参数服务器 Paracel (1)-----总体架构
    [源码解析]机器学习参数服务器ps-lite(4) ----- 应用节点实现
  • 原文地址:https://www.cnblogs.com/linuxchao/p/linunx-Jenkins-slave.html
Copyright © 2011-2022 走看看