前言
- Jenkins的Master-Slave分布式构建,就是通过将构建过程分配到从属Slave节点上,从而减轻Master节点的压力,而且可以同时构建多个,有点类似负载均衡的概念。
- 简单理解就是,将Jenkins服务器上的构建任务分配到其他机器上,可以是linux,也可以是windows,这样不仅减轻了Jenkins服务器的压力,也实现了跨平台的任务构建。
准备工作
- 首先要有一台Jenkins服务器,如何搭建可参考我的另一篇文章
- 我这里计划配置三个从属节点,所以分别准备了三台机器。一台虚拟机A Centos,ip为192.168.206.134,一台虚拟机B Ubuntu,ip为192.168.206.139,一台windows机器C,ip为192.168.206.133。
- 虚拟机A Centos java 安装命令
- 查找 : yum search java|grep jdk
- 选择一个安装 : yum install java-1.8.0-openjdk
- 虚拟机B Ubuntu java 安装命令
- 查找 : apt search java|grep jdk
- 选择一个安装 : apt install openjdk-8-jdk
- windows机器C java安装
- windows去官网下载安装java,配置环境变量。这里我就不介绍了,windows安装java的文章很多。
- 这里重点介绍如何去配置Centos从节点,可以选择只配置这一台,熟悉这个流程就可以。
Jenkins配置 - 配置centos从节点
- jenkins节点管理这块,目前只有一个节点,就是我的jenkins服务器
- 开始配置新节点,选择系统管理
- 然后选择全局安全设置
- 代理这里指定一个端口,然后保存。
- 然后在系统管理中选择节点管理
- 新建一个节点
- 起一个节点名称,然后创建
- 依次填写以下信息,这里的信息就是刚才准备的虚拟机A的信息,可以在虚拟机A的root目录下创建一个jenkins目录。
- 保存之后,可以看到这里已经有一个新的节点了。但显示节点不在线
- 点开可以看到以下信息,然后先点击agent.jar把这个包下载下来
- 然后把这个agent.jar拷贝到虚拟机A的/root/jenkins目录下,然后在虚拟机A的/root/jenkins目录下执行上面那个命令
-
java -jar agent.jar -jnlpUrl http://192.168.206.137:8080/computer/centos7/jenkins-agent.jnlp -secret 0d6908ae6652429557b05ed7e0060b5a5d0dea0a3dd6b0b159752599f5d72469 -workDir "/root/jenkins"
- 看到以下提示信息,说明连接成功了
- 再返回节点列表,可以看到节点centos7已经是在线状态了
- 然后再在系统管理中选择插件管理
- 在可选插件这里搜索 Node and Label parameter,安装
实现远程构建
-
新建一个任务
-
这里选择Node
-
这里指定git仓库,选择分支
-
创建任务成功后,可以看到这里多了一个Build with Patameters参数
-
这里可以看到,就可以选不同节点了。我们选择centos7,点击开始构建
-
构建成功。我的jenkins服务器ip为192.168.206.137,从这里可以看到,代码已经拉取到了另一台机器 192.168.206.134上面了。
-
可以看到在虚拟机A上有成功拉取的代码了。
-
我们可以在虚拟机A上,实现代码的拉取,编译,打包及发布,减轻了jenkins服务器的压力。如果有需求,可以按照以上步骤添加更多的机器,把构建任务分发到不同的机器上去执行。
Jenkins配置 - 配置Ubuntu从节点
- 基本上和配置centos节点步骤一样,这里也不介绍了
- 看下ubuntu机器的配置
Jenkins配置 - 配置Windows从节点
- Windows的配置步骤和linux也差不多,我们可以在C盘下建一个jenkins目录,将agent.jar程序拷贝过去,在cmd命令行执行对应的launch命令。
- Windows平台配置如下
- 这里注意下,我们可以在工具位置添加我们要使用的命令的位置,比如git,cmake等。
效果
- 配置完成,看下效果。三台从节点机器都是在线状态了。
- 我们在执行构建任务时,就可以将任务分配到不同的机器上。