【Jenkins基础知识学习笔记】


1、Master/Slave架构

Jenkins采用Master/Slave架构,Master/Slave相当于Server和agent的概念,Master提供web接口让用户来管理Job和Slave,Job可以运行在Master本机或者被分配到Slave上运行。一个Master可以关联多个Slave,为不同的Job或相同的Job的不同配置来服务。
Jenkins的Master/Slave机制除了可以并发的执行构建任务,加速构建以外,还可以用于分布式自动化测试,当自动化测试代码非常多或者是需要在多个浏览器上并行的时候,可以把测试代码划分到不同节点上运行,从而加速自动化测试的执行。
Master:主要是处理调度构建作业,把构建分发到Slave节点实际执行,监视Slave节点的状态。当然,并不是说Master节点不能跑任务。构建结果和构建产物最后还是传回到Master节点,比如说在jenkins工作目录下面的workspace内的内容,在Master节点照样是有一份的。
Slave:执行机(奴隶机)。执行Master分配的任务,并返回任务的进度和结果。
当job被分配到slave上运行的时候,此时master和slave其实是建立的双向字节流的连接。
在这里插入图片描述

  • Master—>Slave:
    管理slave,并分配调度任务;
  • Slave—>Master:
    反馈slave状态(空闲或忙碌),反馈任务进度和结果等;

2、搭建步骤

Jenkins Master/Slave的搭建需要至少两台机器,一台Master节点,一台Slave节点(实际生产中会有多个Slave节点)。
Jenkins分布式环境搭建步骤如下:
(1)前提:Master和Slave都已经安装JDK 1.8或更高版本
(2)Master节点上安装和配置Jenkins
(3)Master节点上新增Slave节点配置,生成Master-Slave通讯文件SlaveAgent
(4)Slave节点上运行SlaveAgent,通过SlaveAgent实现和Master节点的通讯
(5)Master节点上管理Jenkins项目,指定Slave调度策略,实现Slave节点的任务分配和结果收集来源。

3、工作流程

常规工作流程大概如下:
1、工作人员将新版本代码push到代码仓库,如git server (Gitlab)。
2、Gitlab随后触发jenkins master节点进行一次build。
(通过webhook或者定时检测)
3、jenkins master节点将这个build任务分配给若干个注册的slave结点中的一个,这个slave结点根据一个事先设置好的脚本进行build。
这个脚本可以做的事情很多,比如编译,测试,生成测试报告等等,这些原本需要手动完成的任务都可以交给jenkins来做。

4、配置建议

每个slave都有用户jenkins,所有的机器使用相同的UID和GID,使得slave的管理更加简单;
每个机器上jenkins用户的home目录都相同, 即/home/jenkins, 拥有相同的目录结构使得维护简单;
所有的slave运行sshd,windows运行cygwin sshd;
所有的slave安装ntp client,用来与相同的ntp server同步;
使用脚本sh来自动地配置slave的环境,例如创建jenkins用户,安装sshd,安装java,ant,maven等;
使用脚本来启动slave,保证slave总是运行在相同的参数下:
#!/bin/bash JAVA_HOME=/opt/SUN/jdk1.8.0_04 PATH= P A T H : PATH: PATH:JAVA_HOME/bin export PATH java -jar /var/jenkins/bin/slave.jar


5、通信方式

Jenkins的Master和Slave之间的通信方式,常用的Master和Slave节点连接的方式是ssh或JNLP。
(1)ssh:对于Slave Node是linux系统,最方便的就是通过ssh启动jenkins节点,但这个的前提是Master和Slave之前能进行ssh连接。
(2)jnlp:jnlp连接有个好处就是不需Master和Slave之间能够ssh连接,只需能ping即可。Slave Node是windows的话,这个方式十分实用,因为有时候一些权限或者防火墙的原因,导致Master和Slave不能够ssh连接;还有一些未知的原因导致无法ssh到Slave Node。(注意:通过JNLP连接有下面的缺点:从节点不能被jenkins自动启动或者重启,因此,如果从节点,发生故障,则master是无法重启它的,得去slave节点去看。)

参考文档

Jenkins学习(3)-Jenkins的Master/Slave机制,及添加Slave节点操作:https://www.cnblogs.com/yickel/p/12206838.html
jenkins原理简析:https://www.cnblogs.com/betterquan/p/11635399.html
jenkins中slave节点连接的两种常用方式:https://www.cnblogs.com/qstudy/p/9690824.html
Linux下ping,telnet,ssh命令的比较:
https://www.cnblogs.com/geeklove01/p/8452567.html

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

Davidwatt

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值