Jenkins 集群搭建
一.前言
Jenkins是当下比较流行的一款功能强大的持续集成工具,它支持搭建集群,来提高多项目的构建速度,模式为主从模式,master会将任务分配到各个从节点进行并发构建,从而提高速度,下面介绍一下如何搭建Jenkins集群。
二.环境介绍
系统环境:CentOS 7.2
Jenkins版本:2.121.1 长期支持版
两台服务器,一台作为master,一台作为slave,设A为master,设B为slave。
关于Jenkins的安装,根据个人使用过一段时间来说,不推荐使用docker来安装,推荐直接安装。Jenkins只需要装在master即可。Jenkins的安装教程:https://cloud.tencent.com/developer/article/1158215l
三.从节点的环境准备
根据你是用的源代码管理工具git或者svn来安装对于的工具,还有需要安装可能会构建的项目所需的环境,比如.NET Core 项目就需要安装 .NET Core SDK,JAVA项目就需要安装JAVA环境。从节点无需安装Jenkins。
1.确保Master和Slave之间能相互通信。
2.master执行以下shell命令,确保master能通过ssh登录slave
#生成秘钥 生成以后我这里保存在 /root/.ssh/id_rsa 记住这个位置
ssh-keygen
#将秘钥发送到slave 此过程会输入slave密码
ssh-copy-id <从节点用户一般为root>@<从节点ip>
#执行ssh命令进行登录
ssh <从节点用户一般为root>@<从节点ip>
四.建立结点
打开Jenkins -> 系统管理 -> 管理节点 -> 新建节点
按图中标记的顺序来操作,输入结点名称,选择固定结点类型,然后点击OK按钮。
五.配置节点
结点名称:随意填
描述:随意填
并发构建数:同时进行构建的最大数量,我这里设置为2
工作目录:从节点上的jenkins工作目录,权限要给足。
标签:随意填,我们将项目关联到节点时,可以根据标签来。
用法:选择“尽可能的使用这个节点”,相当于设置结点优先级。
启动方式:“Launch slave agent via SSH”,使用SSH由master连接到slave来执行任务
主机:slave的ip
Credentials:见后文
Host Key Verification Strategy :Manually trusted key Verification Strategy
Require manual verification of initial connection :选中
可用性:尽量保持在线
工具位置:不设置
环境变量:不设置
Credentials 的设置
点击“Add"按钮,选择"Jenkins"
按照上图进行设置,设置以后,在界面上选择你刚刚设置的凭据。
最后点击“添加”按钮,便完成了对slave的添加。
六.验证连接从节点
由于上面我们使用了“Manually Trusted Key Verification Strategy”策略,所以,这里我们需要手动验证一下从节点的身份。
点击我们刚刚新建的从节点 -> 点击【Trust SSH Host Key】,点击【是】:
点击【Launch agent】:
配置完成的节点列表:
在左侧会显示:
七.Job和slave的关联
在Job配置,进行如何设置即可。
参考资料
https://blog.csdn.net/ruangong1203/article/details/78687450
- JavaScript 教程
- JavaScript 编辑工具
- JavaScript 与HTML
- JavaScript 与Java
- JavaScript 数据结构
- JavaScript 基本数据类型
- JavaScript 特殊数据类型
- JavaScript 运算符
- JavaScript typeof 运算符
- JavaScript 表达式
- JavaScript 类型转换
- JavaScript 基本语法
- JavaScript 注释
- Javascript 基本处理流程
- Javascript 选择结构
- Javascript if 语句
- Javascript if 语句的嵌套
- Javascript switch 语句
- Javascript 循环结构
- Javascript 循环结构实例
- Javascript 跳转语句
- Javascript 控制语句总结
- Javascript 函数介绍
- Javascript 函数的定义
- Javascript 函数调用
- Javascript 几种特殊的函数
- JavaScript 内置函数简介
- Javascript eval() 函数
- Javascript isFinite() 函数
- Javascript isNaN() 函数
- parseInt() 与 parseFloat()
- escape() 与 unescape()
- Javascript 字符串介绍
- Javascript length属性
- javascript 字符串函数
- Javascript 日期对象简介
- Javascript 日期对象用途
- Date 对象属性和方法
- Javascript 数组是什么
- Javascript 创建数组
- Javascript 数组赋值与取值
- Javascript 数组属性和方法
- PHP设计模式之PHP迭代器模式讲解
- 简单实用的PHP文本缓存类实例
- Keras 实现加载预训练模型并冻结网络的层
- Django-imagekit的使用详解
- Python类super()及私有属性原理解析
- Python 实现 T00ls 自动签到脚本代码(邮件+钉钉通知)
- 简单了解Python多态与属性运行原理
- 树莓派升级python的具体步骤
- keras中的loss、optimizer、metrics用法
- Django中F函数的使用示例代码详解
- 详解pandas获取Dataframe元素值的几种方法
- pandas数据处理之绘图的实现
- Pandas把dataframe或series转换成list的方法
- Django 构建模板form表单的两种方法
- 详解pandas.DataFrame.plot() 画图函数