Jenkins 主备master-slave模式搭建
jenkins的版本是2.70,使用下来感觉是一个不错的版本,至于如何搭建jenkins,在此就不多说了,推荐的方法是先安装tomcat,然后再加jenkins.war放在tomcat的webapp路径下来启动jenkins会比较好,这样不存在权限的问题,否则会出现root和jenkins用户权限的相关问题。
由于我的其中一台机器是centos的,没有图形化Jenkins,所以将这台centos作为jenkins master,安装jenkins。
在我们需要不同平台来出不同类型的包时,比如,需要windows平台打exe文件,需要ios系统打ipa的文件,需要linux系统打so,jar等,这种master-slaver的模式就很适用了。
以下分别介绍了当slave是mac系统的时候,当slave时centos系统的时候,当slave是windows的系统的时候,如何设置
一、当slave是mac系统的时候
先说说jenkins-master的设置:
1.系统管理-->管理节点-->新建节点

2.配置新建节点

Name:可以随意命名,用来标记slave机器,我个人喜欢标记为slave机器的系统,比如server-ios
描述:随意,一般设置为slave机器的ip地址
of excutors:slave主机slave的并行数,即同时可以下发多少个job到slave上执行
远程工作目录:用来放工程的文件夹,jenkins master上设置的下载的代码会放到这个工作目录下。
标签:标签一般设置为slave 主机的IP
用法:选择“只允许运行绑定在这台机器的job”
启动方式:选择“Lanch agent via Java Web Start”
默认是没有这个选项的,需要做设置。参考:http://blog.csdn.net/e295166319/article/details/54946966
该版本的配置如下:

Avalibility:keep this agent online as much as possible
如果要设置slave机器上对应的环境变量,可以勾选如下项设置:

至此,slave的设置就算结束了。
3.下载节点服务
slave设置结束后,会看到如下图,点击这个"Launch"会下载一个slave-agent.jnlp的文件。

4.将这个slave-agent.jnlp文件上传到slave机器上刚才设置的‘远程工作目录’下,双击这个文件,会跳出如下:

然后点击‘运行’,会看到如下:

注意,这个图框不能关掉,缩小就可以了,如果关掉,slave就会掉线,同理,如果发现slave不是在线状态,再次双击slave-agent.jnlp打开这个进程即可。
表示slave机器已经连接上了,此时查看master jenkins上,就可以正常看到slave机器是在线的,如下:

如上,server-ios就是刚才设置的slave主机,对应的系统类型,存储大小都是有的。
5.在jenkins上设置job下发到slave机器上执行
(1)master jenkins上点击‘新建’,新建一个自由风格的任务
(2)勾选参数化构建过程,设置如下:
(2.1)选择Node,如下

(2.2)然后默认的任务下发节点为刚才设置的server-ios;其中Name可随意设置,一般比较直观的,会设置代码工程名。

6.源码下载

7.添加构建脚本
最后点击构建的时候,会在执行状态中看到,已经下发到slave上,如下

这个任务就是刚才新建的任务,同样登陆slave机器上的工作目录(即前面节点设置的‘远程工作目录’),可以看到这个工程,如下:

至此,jenkins master-slave就算结束了。
二、当slave是centos系统的时候
同样,先说说如何再jenkins-master上设置节点
1.创建节点步骤和“当slave是mac系统的时候”一样,节点界面也是类似,我的如下:

2.节点保存后显示如下:

由于centos是非图形化界面的,所以倾向于使用命令行方式"Run from agent command line"启动slave.
如上截图,首先下载slave.jar,并放到centos slave的工作目录下(工作目录根据自己的设置,即新建节点时设置的‘远程工作目录’),我的远程工作目录如上设置为/root/src/,在slave.jar放到slave上后,执行dos2unix slave.jar;chmod 777 slave.jar后,执行上面截图的命令:
java -jar slave.jar -jnlpUrl http://192.168.8.246:8080/jenkins/computer/centos-233/slave-agent.jnlp -secret 0576e4e935a2d096f994dc5b0009737566dc2cc728efc1c440f3615607e697 &
设置后台运行,如果显示出现connected 表示slave启动成功,如下:

这时在jenkins master上看状态,显示在线,如下:

各项都能看到,至此,slave 已经启动了,关于如何下发任务到slave上,参考第一部分"当slave是mac的时候"即可。
【【备注:如果你是使用javaws 命令调jnlp文件,你可能需要做如下操作
yum -y install libX11
yum -y install libXext
yum -y install libXrender
yum -y install libXtst
】】
说明:使用上面的‘lanch agent with java web start ’方法在slave上执行命令来启动slave,这种方式对于centos来说,就我个人使用发现不太稳定,后面在网上搜到一种更好的方法,参考:http://blog.csdn.net/liuchunming033/article/details/52025541
我自己的设置如下:
其中我采用的是用户名密码的那种,使用的是从节点的登陆用户名密码,root/$password

但是在lanch的时候会报错,找不到java,此时需要在设置从节点的时候,添加对应的环境变量,如下:

这种方法不需要下载jnlp和slave.jar文件到slave的机器上,会直接使用上面填写的用户名和密码来登陆slave,lunch过程中可能还需要java来调用某个服务,所以需要指定jdk的路径(具体过程没有详细研究过)。
三、当slave是windows系统的时候
同样,先说说如何在jenkins-master上设置节点,如下:


节点设置后,查看节点如下:
然后点击“window_211”,显示如下页面,

点击‘launch’下载slave-agent.jnlp文件,复制该文件到windows slave主机上,放在节点设置时设置的“远程工作目录”下,双击该jnlp文件

然后显示如下:

然后显示如下connected表示连接成功,如下:

此时,查看jenkins master 主机上,显示已连接,如下:

至于节点的使用,参考“一、当slave是mac系统的时候”其中的任务设置即可。
备注:在配置当slave是centos和windows的时候,请先都一下“一、当salve是mac系统的时候”,centos和windows系统,除了节点的设置和连接不太一样,其他和mac slave的配置和使用是一样的,比如节点的使用,slave主机上是图框显示已经连接状态时,图框不能关掉,直接最小就好了。
我们可以根据任务对系统的而不同需求,下发任务到不同的节点,在配置任务时可以勾选“Restrict where this project can be run”,然后添加可用的节点lable,多个lable之间用 “||” 分隔,如下:

也可以参考 “一、当salve是mac系统的时候” 章节部分的任务设置那里,设置Node的方式指定slave机器。
此外,如果slave是第一次下载代码,需要添加slave的key到gerrit上,并在slave上先下载一次代码看看时候ok,我遇到了询问时候要将gerrit 对应的host ip到known hosts中,需要收到输入'yes',如下:

(备注:如果是windows环境,可以先安装一个git bash ,然后在git bash下执行git clone 过程中添加信任关系)
下次就不要了。
我遇到一个问题:(希望对你有帮助)
场景:我的centos-204是一台centos的机器,本来用上面的centos slave方式搭建ok的,一直在使用中,之前重启机器slave相关服务也是可以自动起来的,但是最近我觉得我的这台机器构建太慢了,让运维帮我加成四核的cpu,结果他加完了,重启了机器,slave相关服务就怎么也起不来,一直报错:

没办法,查询了一圈还是还找到答案,后面干脆重新装了centos-204,启动方式还是“lunch slave agent via SSH”,依然起不来,着急啊,后面换成‘lunch slave agent via java web start’,然后重新下来slave.jar放到centos-204机器上配置的工作目录下,然后在slave.jar所在的路径下执行启动命令(&后台执行):


java -jar slave.jar -jnlpUrl http://192.168.8.246:8080/jenkins/computer/centos-204/slave-agent.jnlp -secret 40aa8b30d63226290a25a4e18e3bdfe867b975bd24d5e1fbbc46642f2d9d4d &
参考:
http://blog.csdn.net/jymn_chen/article/details/39931469
https://www.cnblogs.com/derekchen/p/5892286.html
http://blog.csdn.net/e295166319/article/details/54946966
https://www.jianshu.com/p/70982c43c3d1
Jenkins 主备master-slave模式搭建的更多相关文章
- jenkins的Master/Slave模式
一. Master/Slave模式 分担jenkins服务器的压力,任务分配到其它执行机来执行 Master:Jenkins服务器 Slave:执行机(奴隶机).执行Master分配的任务,并返回任务 ...
- Jenkins—Master/Slave模式
Jenkins可部署在windows或者linux平台上,项目系统的用户多数为windows系统.如果Jenkins部署在linux上,而自动化任务要在windows平台执行,那么就需要使用Jenki ...
- ActiveMQ集群支持Master/Slave模式
现在ActiveMQ, 在Failover方面有两种解决方案:Pure Master Slave和Shared File System Master Slave. 先看Pure Master ...
- jenkins master/slave模式
master是主机,只有master装jenkins slave是小弟机无需装jenkins,主要执行master分配的任务 一.新建slave 1.新建slave的方法:点击magian jenki ...
- ActiveMQ 基于zookeeper的主从(levelDB Master/Slave)搭建以及Spring-boot下使用
0:说明 ActiveMQ 5.9.0新推出的主从实现,基于zookeeper来选举出一个master,其他节点自动作为slave实时同步消息.因为有实时同步数据的slave的存在,master不用担 ...
- MySQL master/slave 模式
1 .复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重 ...
- mysql master master slave 环境搭建
master1:192.168.128.47 master2:192.168.128.96 slave:192.168.128.97 master1与master2互备,master2作为slav ...
- Jenkins设置Master/Slave
说明:通过master/slave模式,可以在master节点上统一管理其他slave节点. 下面说明一步步实现master/slave模式. 第一步:以管理员登录jenkins.点击"系统 ...
- hadoop的master和slave模式
hadoop的集群是基于master/slave模式. namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slav ...
随机推荐
- 网络通信协议之ICMP
ICMP(互联网控制消息协议) ICMP >>Internet Control Message Protocol IP协议的缺点: >>无差错报告和差错纠正机制 >> ...
- discuz 忘记安全密码的处理方式 修改pre_common_setting表的数据,
一定要记住不要清空pre_common_setting表的数据,会给你带来烦恼的!!!!!只修改siteuniqueid 这条数据的密码就行!!!! 也可以先用我这条密码系统自动加密后:[DXRGYC ...
- 引用:WebAPI中的定时处理-使用Quartz.Net
引用: https://blog.csdn.net/lordwish/article/details/78926252 主要是给自己做个记录,不用到处找,这篇文章写的很全,推荐 文中:在项目的Glob ...
- 树剖+线段树||树链剖分||BZOJ2238||Mst
题面:https://www.lydsy.com/JudgeOnline/problem.php?id=2238 思路:先求个最小生成树,然后就对最小生成树上的边做树剖,依次对非树边进行处理,维护非树 ...
- css学习_css盒模型及应用
1.看透网页布局的本质 2.盒模型 margin.border.padding.width.height a. border: 1px solid red (solid/ ...
- MySQL之视图、触发器、事务、存储过程、函数 流程控制
MySQL之视图.触发器.事务.存储过程.函数 阅读目录 一 视图 二 触发器 三 事务 四 存储过程 五 函数 六 流程控制 MySQL这个软件想将数据处理的所有事情,能够在mysql这个层面上全部 ...
- 为何串口dma发送数据可能不完整
串口dma数据发送不完整, 1. 通过打印log说明数据合成,送给dma buff都是正常的. 2. 数据通过硬件串口直接配置,是正常的 3. 数据通过单片机dma转发后数据异常,通过检查发现 dma ...
- [No000013E]用VSCode写python的正确姿势
最近在学习python,之前一直用notepad++作为编辑器,偶然发现了VScode便被它的颜值吸引.用过之后发现它启动快速,插件丰富,下载安装后几乎不用怎么配置就可以直接使用,而且还支持markd ...
- toggle显示与隐藏切换
jQuery中显示与隐藏切换toggle方法 show与hide是一对互斥的方法.需要对元素进行显示隐藏的互斥切换,通常情况是需要先判断元素的display状态,然后调用其对应的处理方法.比如显示的元 ...
- DDL触发器(用来控制用户的DDL行为)
DDL触发器 禁止scott用户的所有DDL操作 create or replace trigger scott_forbid_trigger before ddl on schema begin r ...