Jenkins 主备master-slave模式搭建

时间:2022-12-26 08:44:32

 

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.系统管理-->管理节点-->新建节点

Jenkins 主备master-slave模式搭建

2.配置新建节点

Jenkins 主备master-slave模式搭建

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

    该版本的配置如下:

Jenkins 主备master-slave模式搭建

 

Avalibility:keep this agent online as much as possible 

如果要设置slave机器上对应的环境变量,可以勾选如下项设置:

Jenkins 主备master-slave模式搭建

至此,slave的设置就算结束了。

3.下载节点服务

slave设置结束后,会看到如下图,点击这个"Launch"会下载一个slave-agent.jnlp的文件。

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

注意,这个图框不能关掉,缩小就可以了,如果关掉,slave就会掉线,同理,如果发现slave不是在线状态,再次双击slave-agent.jnlp打开这个进程即可。

表示slave机器已经连接上了,此时查看master jenkins上,就可以正常看到slave机器是在线的,如下:

Jenkins 主备master-slave模式搭建

 

如上,server-ios就是刚才设置的slave主机,对应的系统类型,存储大小都是有的。

5.在jenkins上设置job下发到slave机器上执行

(1)master jenkins上点击‘新建’,新建一个*风格的任务

(2)勾选参数化构建过程,设置如下:

(2.1)选择Node,如下

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

6.源码下载

Jenkins 主备master-slave模式搭建

 

7.添加构建脚本

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

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

至此,jenkins master-slave就算结束了。

二、当slave是centos系统的时候

同样,先说说如何再jenkins-master上设置节点

1.创建节点步骤和“当slave是mac系统的时候”一样,节点界面也是类似,我的如下:

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

由于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模式搭建

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

Jenkins 主备master-slave模式搭建

各项都能看到,至此,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

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

这种方法不需要下载jnlp和slave.jar文件到slave的机器上,会直接使用上面填写的用户名和密码来登陆slave,lunch过程中可能还需要java来调用某个服务,所以需要指定jdk的路径(具体过程没有详细研究过)。

 

三、当slave是windows系统的时候

同样,先说说如何在jenkins-master上设置节点,如下:

Jenkins 主备master-slave模式搭建

Jenkins 主备master-slave模式搭建

节点设置后,查看节点如下:

Jenkins 主备master-slave模式搭建然后点击“window_211”,显示如下页面,

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

然后显示如下:

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

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

Jenkins 主备master-slave模式搭建

 至于节点的使用,参考“一、当slave是mac系统的时候”其中的任务设置即可。

 

备注:在配置当slave是centos和windows的时候,请先都一下“一、当salve是mac系统的时候”,centos和windows系统,除了节点的设置和连接不太一样,其他和mac slave的配置和使用是一样的,比如节点的使用,slave主机上是图框显示已经连接状态时,图框不能关掉,直接最小就好了。

我们可以根据任务对系统的而不同需求,下发任务到不同的节点,在配置任务时可以勾选“Restrict where this project can be run”,然后添加可用的节点lable,多个lable之间用 “||” 分隔,如下:

 Jenkins 主备master-slave模式搭建

  也可以参考 “一、当salve是mac系统的时候” 章节部分的任务设置那里,设置Node的方式指定slave机器。

此外,如果slave是第一次下载代码,需要添加slave的key到gerrit上,并在slave上先下载一次代码看看时候ok,我遇到了询问时候要将gerrit 对应的host ip到known hosts中,需要收到输入'yes',如下:

Jenkins 主备master-slave模式搭建

(备注:如果是windows环境,可以先安装一个git bash ,然后在git bash下执行git clone 过程中添加信任关系)

下次就不要了。

 

参考:

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