♥ Jenkins的分布式构建,在Jenkins的配置中叫做节点,分布式构建能够让同一套代码或项目在不同的环境(如:Windows和Linux系统)中编译、部署等。
♥ 将jenkins项目发布在不同服务器上(分布jenkins工作空间,部署项目到不同服务器)这就形成了jenkins的分布式。节点服务器不需要安装jenkins,只需要运行一个slave节点服务,构建事件的分发由master端(jenkins主服务)来执行。
一、什么时候使用节点
当我们使用多台服务器时,并且配置了tomcat或jboss集群服务,可通过jenkins的节点配置,将jenkins项目发布在不同服务器上(分布jenkins工作空间,部署项目到不同服务器的tomcat或jboss)这就形成了jenkins的分布式。节点服务器不需要安装jenkins
(只需要运行一个slave节点服务),构建事件的分发由master端(jenkins主服务)来执行。
二、节点服务器的要求
注意
:如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。建议
:所有Linux或者Windows机器的环境路径统一(如:JDK、Maven),安装位置和jenkins所在服务器的JDK和maven必须一致,也就是说jenkins所在服务器和各个节点服务器中的JDK和Maven目录和文件名都是一样的。以便于管理、不容易出现问题。
三、Master-Slave的作用
Jenkins的Master-Slave分布式架构主要是为了解决Jenkins单点构建任务多、负载较高、性能不足的场景。Master-Slave相当于Server和Agent的概念。Master提供web接口让用户来管理job和Slave,job可以运行在Master本机或者被分配到Slave上运行构建。一个Master(Jenkins服务所在机器)可以关联多个Slave用来为不同的job或相同的job的不同配置来服务,现在我们开始配置Jenkins-slave
Slave节点为linux系统
jenkins–slave节点Jenkins 的分布式构建( Master-Slave )
1. 节点配置
系统管理--》管理节点--》新建节点
Number of executors: 一次最多运行多少个项目
标签: 用户构建项目时限制该项目可以在何处运行
用法: 只允许运行绑定到这台机器的job
启动方法: Linux 选择 Launch slave agents via SSH
Host Key Verification Strategy: Non verifying Verification Strategy(对应Credentials为用户名/密码方式)
解释说明
# 用法
尽可能的使用这个节点,默认的, 表示job会随机的使用可以使用的节点
只允许运行绑定到这台机器的Job,表示job会到指定机器运行
# 启动方式
控制Jenkins怎么启动slave
1) Launch slave agents on Unix machines via SSH(常用)
通过SSH连接,发送命令来启动slave。需要提供可以登陆slave主机的帐号,可以不具备root权限。
2)Launch slave agents via Java Web Start
通过JNLP启动一个代理程序启动slave。这种情况下启动是由slave初始化的,所以主机不一定要ip可达(比如隔着一层防火墙)[ The launch in this case is initiated by the slave, thus slaves need not be IP reachable from the master (e.g. behind the firewall.)]
3)Launch slave via execution of command on the Master
通融个从master上执行一个命令来启动启动slave。当master可以在salve上远程执行一个进程,比如通过ssh/rsh,可以使用这个。
4)Let Jenkins control this Windows slave as a Windows service
不推荐。往往问题多多
# Availability
控制jekins何时启动或停止slave。
1)Keep this slave on-line as much as possible
默认和常规设置。这种模式下,jenkins会尽量保持salve在线。如果不通过用户援助启动slave,如果slave不可获取,jenkins将周期性的尝试启动slave。Jenkins不会主动让slave 下线。
2)Take this slave on-line when in demand and off-line when idle
在这种情况下,jenkins可在没有用户援助的情况下启动slave。
>当遇到满足以下条件的不可执行任务时,jenkins将周期性的尝试启动slave:
在队列中等待时间已达指定启动时间( startup demand period)
可在slave上执行
>slave将被下线
slave上没有活动任务在执行
slave处于空闲状态时间已达到指定的空闲时间(specified idle period)。
In demand delay: 告诉Jenkins如果有Job需要在此节点构建,需要在任务队列等待多长时间才会进入任务状态进行构建!
Idle delay: 告诉Jenkins多少分钟内如果没有Job需要构建就离线!
2. 节点属性
环境变量: 键值对列表配置Slave节点java工具(环境变量)
3. 节点运行结果
大致步骤: 通过节点配置的credentials连接到slave服务器—》输出当前用户的环境变量—》检查节点服务器java版本—》开启sftp传输slave.jar到节点服务器的工作目录–》java -jar启动节点服务器上的slave进程
当标签和服务器名称一样时这里不会显示标签!
最后
整个环境的配置到这里已经全部搭建完成,再次声明需要注意的几点
- 配置节点时的远程工作目录可以是节点服务器上的任意目录
- 启动节点时的cmd命令中的ip地址一定是Jenkins服务器的真实地址,因为换成代理的虚拟地址时,节点服务器链接不上Jenkins服务器
- 执行脚本的批处理命令中的python解释器的路径需要是节点服务器中安装的pyhon解释器的路径(并不是Jenkins所在服务器的解释器路径)
- 这点也是最重要的一点,前面所有配置的前提是你的Jenkins主机和节点主机已经配置了Java环境
输出日志
More efforts than others, you can more achievements! Cherish the present and strive for the future!