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