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模式搭建的更多相关文章

  1. jenkins的Master/Slave模式

    一. Master/Slave模式 分担jenkins服务器的压力,任务分配到其它执行机来执行 Master:Jenkins服务器 Slave:执行机(奴隶机).执行Master分配的任务,并返回任务 ...

  2. Jenkins—Master/Slave模式

    Jenkins可部署在windows或者linux平台上,项目系统的用户多数为windows系统.如果Jenkins部署在linux上,而自动化任务要在windows平台执行,那么就需要使用Jenki ...

  3. ActiveMQ集群支持Master/Slave模式

    现在ActiveMQ, 在Failover方面有两种解决方案:Pure Master Slave和Shared File System Master Slave.      先看Pure Master ...

  4. jenkins master/slave模式

    master是主机,只有master装jenkins slave是小弟机无需装jenkins,主要执行master分配的任务 一.新建slave 1.新建slave的方法:点击magian jenki ...

  5. ActiveMQ 基于zookeeper的主从(levelDB Master/Slave)搭建以及Spring-boot下使用

    0:说明 ActiveMQ 5.9.0新推出的主从实现,基于zookeeper来选举出一个master,其他节点自动作为slave实时同步消息.因为有实时同步数据的slave的存在,master不用担 ...

  6. MySQL master/slave 模式

    1 .复制 Mysql内建的复制功能是构建大型,高性能应用程序的基础.将Mysql的数据分布到多个系统上去,这种分布的机制,是通过将Mysql的某一台主机的 数据复制到其它主机(slaves)上,并重 ...

  7. mysql master master slave 环境搭建

    master1:192.168.128.47 master2:192.168.128.96 slave:192.168.128.97   master1与master2互备,master2作为slav ...

  8. Jenkins设置Master/Slave

    说明:通过master/slave模式,可以在master节点上统一管理其他slave节点. 下面说明一步步实现master/slave模式. 第一步:以管理员登录jenkins.点击"系统 ...

  9. hadoop的master和slave模式

    hadoop的集群是基于master/slave模式. namenode和jobtracker属于master,datanode和tasktracker属于slave,master只有一个,而slav ...

随机推荐

  1. F#周报2019年第1期

    新闻 介绍versionsof.net InfoQ正在寻找F#社区的声音 使用F#开发端对端的实际应用 UnoPlatform上的F# Elmish 视频及幻灯片 事件溯源DIY02--事件,事件存储 ...

  2. 在Ubuntu环境下安装eclipse

    Eclipse运行需要Java环境,java环境的安装见https://www.cnblogs.com/Sabre/p/10349320.html,本文不再赘述. 1.下载eclipse eclips ...

  3. [No0000145]深入浅出图解C#堆与栈 C# Heap(ing) VS Stack(ing)理解堆与栈2/4

    前言   虽然在.Net Framework 中我们不必考虑内在管理和垃圾回收(GC),但是为了优化应用程序性能我们始终需要了解内存管理和垃圾回收(GC).另外,了解内存管理可以帮助我们理解在每一个程 ...

  4. [No000013B]初识Ildasm.exe——IL反编译的实用工具

    Ildasm.exe 概要: 一.前言: 微软的IL反编译实用程序——Ildasm.exe,可以对可执行文件(ex,经典的控制台Hello World 的 exe 可执行文件)抽取出 IL 代码,并且 ...

  5. RuntimeError - [Xcodeproj] Unknown object version.解决方法

    wjw:layoutInScrollView username$ pod install Analyzing dependencies xcode-select: error: tool 'xcode ...

  6. [archlinux] linux boot process/order/stage

    信息量好大 --! 神教读物,无人能比: https://wiki.archlinux.org/index.php/Arch_boot_process IBM的高质量文档 https://www.ib ...

  7. 图->连通性->无向图的连通分量和生成树

    文字描述 对无向图进行遍历时,对于连通图,仅需从图中任一顶点出发,进行深度优先搜索或广度优先搜索,便可访问到图中所有顶点.但对非连通图,则需从多个顶点出发搜索,每一次从一个新的起始点出发进行搜索过程得 ...

  8. 《Mysql 日志结构》

    推荐一首歌 - <往后余生>王贰浪 发现自己每天就听这么几首歌 一:慢查询日志 - SQL 完成查询并完成对于锁资源的释放之后,msqld 会将符合条件的SQL写入慢日志.因此慢日志可能和 ...

  9. 2018/05/02 每日一学Linux 之 .bash_profile和.bashrc的区别

    最近一直在学习其他,导致博客就疏忽了,很不好(其实就是自己懒了......). -- 为什么要使用 .bash_profile和.bashrc ? 在平常的使用中,有些文件夹或者命令很长,在执行时需要 ...

  10. Servlet基本介绍和使用

    基本概念 Servlet又称为Java Servlet是一个基于java技术的web组件,运行在服务器端,用于生成动态的内容.Servlet是平台独立的java类,编写一个Servlet实际上就是按照 ...