每次手动打包部署到深夜,你是否也曾仰望星空思考:为啥不让Jenkins这个贴心小助手来干活?
第一章:认识Jenkins,你的构建管家
每次看着Jenkins构建队列排成长龙,你是否感觉时间像蜗牛一样爬行?别急,Windows从节点就是你的救星!
01 为什么你的Jenkins需要分布式构建?
记得我刚加入团队时,每次代码提交后的构建过程都像是一场漫长的等待游戏。开发小伙伴们常常围在咖啡机旁,不是真的想喝咖啡,只是在等待Jenkins完成构建。
直到有一天,后端服务代码量暴增,构建时间从10分钟延长到了30分钟,开发效率受到了严重影响。
正在大家焦头烂额之际,团队决定尝试Jenkins分布式构建,将任务分发到多台机器上执行。
结果令人震惊:原本30分钟的构建过程,被缩短到了8分钟! 这就是分布式构建的魔力。
想象一下,你是一家繁忙餐厅的主厨,订单源源不断涌来,你一个人切菜、炒菜、装盘肯定忙不过来。聪明的做法是聘请几位助手,每个人负责不同的工作站。
Jenkins的分布式构建也是类似的道理:
- 主节点(Master) 作为指挥中心,负责调度任务、管理界面和记录结果
- 从节点(Slave/Agent) 则负责实际执行构建任务
这种架构的好处不言而喻:构建时间大幅缩短,多个任务可以并行执行,不同环境的需求可以得到精准满足,而且整个系统更容易扩展。
在实际应用中,尤其是随着微服务的流行,企业通常有多套测试环境,同时可能有数十个构建请求,单节点的Jenkins不足以支撑这些需求,造成大量的构建请求等待和时间浪费。
使用分布式构建的典型场景:
- 跨平台构建:你的Web应用需要在Linux上测试API,在Windows上测试IE兼容性
- 资源密集型任务:庞大的代码库编译耗费大量CPU和内存
- 并行测试需求:自动化测试套件非常庞大,需要分发到多个节点同时执行
- 环境隔离:某些任务需要干净的环境,或者特定的软件配置
02 Jenkins分布式构建的核心架构
Jenkins的分布式构建架构由主节点(Master)和多个从节点(Slave)组成。理解这个架构是掌握分布式构建的关键。
主节点:大脑和中枢神经系统
Master节点是Jenkins的控制中心,它承担着以下关键职责:
- 任务调度:决定哪个任务在哪个节点上运行
- 界面管理:提供Web用户界面,方便用户与Jenkins交互
- 构建记录:存储构建结果、日志和制品
- 节点管理:管理所有Slave节点的状态和连接
主节点通常不直接执行繁重的构建任务,而是保持轻量专注,这样才能确保整个系统的稳定性。
从节点:四肢和肌肉
Slave节点(也称为Agent或从节点)是实际执行构建工作的机器,它们:
- 可以分布在不同的物理机或虚拟机上
- 能够运行在不同的操作系统上
- 根据任务需求配置不同的工具和环境
- 通过多种方式与Master节点通信
一个节点可以配置多个执行器(Executor),这决定了节点能够同时执行多少个构建任务。
标签(Label):精准匹配任务与节点
标签是Jenkins分布式构建中的服务发现机制,它允许你给节点分类(如windows、jdk11、vs2019),然后根据这些标签将任务精准投递到合适的节点上。
例如,你可以将一个任务配置为只能在具有windows和vs2019标签的节点上运行,这样就确保了任务环境的一致性。
03 环境准备:打好分布式构建的基础
在开始搭建分布式环境前,我们需要做好充分的准备。
硬件和软件要求
所有节点(主节点Master、从节点Slave)需安装相同版本的Jenkins,避免兼容性问题。同时,所有节点都需要安装Java运行时环境(JRE),推荐OpenJDK 11。
你可以通过以下命令验证Java版本:
java -version
对于Windows从节点,你需要确保已安装Java环境,并配置好环境变量。
网络要求
节点间网络互通是分布式构建的生命线,需要确保无防火墙拦截Jenkins通信端口,特别是SSH端口(默认22) 和JNLP端口(随机分配,也可固定)。
安装Jenkins主节点
如果你是全新安装Jenkins,在Ubuntu系统上,你可以通过以下命令安装Jenkins主节点:
sudo apt update
sudo apt install openjdk-11-jdk # 安装Java
wget -q -O - https://pkg.jenkins.io/debian/jenkins.io.key | sudo apt-key add -
sudo sh -c 'echo deb http://pkg.jenkins.io/debian-stable binary/ > /etc/apt/sources.list.d/jenkins.list'
sudo apt update
sudo apt install jenkins # 安装Jenkins
sudo systemctl start jenkins && sudo systemctl enable jenkins # 启动并设为开机自启
安装完成后,你可以通过http://<master-ip>:8080访问Jenkins Web界面。
04 配置主节点:让Jenkins认识新伙伴
首先登录Jenkins Web界面,进入Manage Jenkins → Manage Nodes and Clouds → New Node来创建新的从节点。
创建节点配置
创建节点时需要填写以下信息:
- 名称:自定义(如windows-node-01)
- 类型:选择Permanent Agent(常驻代理,推荐用于生产环境)
- 远程工作目录:指定节点上的绝对路径(如D:\jenkins,需提前创建)
- 标签:为节点打上标识(如windows、jdk11),用于后续任务定向分配
- 用法:选择Use this node as much as possible,尽量使用此节点
启动方式配置
对于Windows从节点,有多种启动方式可选:
- Launch slave agents via Java Web Start:使用JNLP方式来建立slave与master的连接
- Let Jenkins control this Windows slave as a Windows service:Jenkins将把该Windows slave当做Windows service进行控制
对于Windows操作系统的节点,推荐用第二种Launch slave agents via Java Web Start。
点击"保存"后,在Master中一个节点就配置好了。
05 以远程服务方式启动Windows从节点
当节点以Launch slave agents via Java Web Start配置好后,在节点界面将看到如图所示,其slave有三种启动方法。
本质上其实就一种,即将master中的slave-agent.jnlp文件下载至slave所在的虚拟机,然后运行文件。
下载并配置JNLP文件
Jenkins分布式构建:Windows从节点配置

最低0.47元/天 解锁文章
76

被折叠的 条评论
为什么被折叠?



