Jenkins进阶系列之——12详解Jenkins节点配置
2014-12-08:已不再担任SCM和CI的职位,Jenkins系列的文章如无必要不会再维护。
2014-03-02:修正对于lable标签的理解。(1.532.1版本已经给出了官方解释)
2013-12-22:添加JNLP端口修改,修改了一些错误。
Jenkins有个很强大的功能:分布式构建(在Jenkins的配置中叫做节点),分布式构建能够让同一套代码在不同的环境(如:Windows和Linux系统)中编译、测试等。这么做的好处一大堆,自己去想。而且Jenkins构建的代码和产物最后自动拷贝到主节点。
注意:如果节点主机上不存在JDK,Jenkins会去自动下载,但Oracle对程序自动下载做了限制,会导致下载失败,然后一直循环这个问题。
建议:所有Unix或者Windows机器的环境路径统一(如:JDK、Ant、Maven),好处是便于管理、不容易出现奇葩问题。
Jenkins版本:1.532(不同版本的配置可能不同)
进入节点配置界面:
系统管理→管理节点→新建节点(左上角)
节点名称:建议使用字母、数字或字母和数字的组合。最好见名知意。不建议使用标点符号和中文(中文命名没有问题,但Job中无法引用)
Dumb Slave:新建一个节点
复制现有节点:从已存在的节点中复制一份配置(如果存在节点才会显示)
点击ok进入下一步配置
Name:节点名称
Description:节点描述,支持中文
# of executors:最大同时构建数量(根据机器的性能定,单颗四核cpu建议不要超过5)【必须为数字】
Remote FS root:节点的根目录(注意:如果目录不存在,会自动创建目录。你必须对该目录有读写权限,不然会报错:hudson.util.IOException2: Failed to copy xxxx)
Labels:标记(又叫做标签)用来对多节点分组,标记之间用空格分隔.例如'refression java6'将会把一个节点标记上'regression'和'java6'.
举例来说,如果你有多个Windows系统的构建节点并且你的Job也需要在Windows系统上运行,那么你可以配置所有的Windows系统节点都标记为'windows', 然后把Job也标记为'windows'.这样的话你的Job就不会运行在除了Windows节点以外的其它节点之上了.
用法:尽可能的使用这个节点/只允许运行绑定到这台机器的Job(根据你的需求,二选一)
Launch method:运行方式有四个选项。建议选择第1、2种方式配置。详细如下:
【推荐】Launch slave agents on Unix machines via SSH 在Unix(包括Linux)机器上通过SSH通道连接节点 (适用于Unix和Linux)
Host:节点主机的ip地址
Credentials:凭据(如果为空或者不可选择,请在系统管理→Manage Credentials中配置。Manage Credentials的配置非常简单,这里就不在描述了。Manage Credentials配置完成后,需刷新节点配置页面才会显示。)
Port:端口默认22
JavaPath:[可选]JDK路径,默认和master节点相同。路径必须指定到Java程序,如:/path/bin/java
JVM Options:[可选]JVM可选参数
Prefix Start Slave Command:[可选]不知道干什么用的参数
Suffix Start Slave Command:[可选]不知道干什么用的参数
测试可以使用Unix命令,会自动拼接在[SSH] Starting slave process:[Prefix Start Slave Command] cd '/path' && /path/bin/java -jar slave.jar [Suffix Start Slave Command]
【推荐】Launch slave agents via Java Web Start 通过Java Web Start连接节点 (适用于所有支持Java程序的系统)
Tunnel connection through:[可选]在端口转发这种情况下使用
JVM options:[可选]JVM可选参数
这种方法的缺点:如果该节点宕机了,主节点无法自动重启它。
Launch slave via execution of command on the Master 通过主节点的控制台连接节点
在写内容前吐槽一下Jenkins的帮助,说的云里雾里的。应该去看该选项下Launch command的帮助。
Jenkins的开发者考虑到某些企业可能有N++ 个节点(N>=你猜!)。如果在界面配置,那么升级版本之类的操作会很麻烦。所以允许你使用shell脚本去配置管理节点(貌似很方便的样子)。具体的脚本需要你自己写。
Launch command:Unix运行脚本的命令,如:sh aaa.sh
- 【不建议使用】Let Jenkins control this Windows slave as a Windows service 让Jenkins节点添加到Windows服务中
这个选项比Launch slave agents via Java Web Start添加为服务更加稳定(帮助文档是这么说的)。采用这种运行方式,那么这个系统不能登录任何用户。这种配置方式是非常的麻烦和折腾。具体请查看 点我去看帮助
Administrator user name:域\管理员账号
Password:密码
Host:节点主机IP或者域名
Run service as:
Use Local System User:使用本地系统用户
Log on using a different account:使用不同的用户登录
User name:账号
Password:密码
Use Administrator account given above:使用上面的用户登录
Path to java executable:[可选]JDK路径。必须指定到Java程序,如:C:\Windows\system32\java.exe
JVM options:[可选]JVM可选参数
Availability:
- Keep this slave on-line as much as possible:尽可能保持节点在线【推荐】
- Take this slave on-line according to a schedule:根据时间表在线(类似于Linux的定时任务)
Startup Schedule:类似于Linux定时任务的时间,如下:
# every fifteen minutes (perhaps at :07, :22, :37, :52)
H/15 * * * *
# every ten minutes in the first half of every hour (three times, perhaps at :04, :14, :24)
H(0-29)/10 * * * *
# once every two hours every weekday (perhaps at 10:38 AM, 12:38 PM, 2:38 PM, 4:38 PM)
H 9-16/2 * * 1-5
# once a day on the 1st and 15th of every month except December
H H 1,15 1-11 *
如果使用 H Jenkins会自动提前一段时间连接节点,避免出现同一时间高并发的问题
Scheduled Uptime:超过任务时间后延迟多少分钟离线。如果此数值大于在线总时间(单位:分),就会一直保持在线【必须为数字】
Keep on-line while jobs are running:当有Job在构建时(到达离线时间了)继续保持在线
- Take this slave on-line when in demand and off-line when idle:让Jenkins根据需求自动连接或者离线
In demand delay:告诉Jenkins如果有Job需要在此节点构建,需要在任务队列等待多长时间才会进入任务状态进行构建【必须为数字】
Idle delay:告诉Jenkins多少分钟内如果没有Job需要构建就离线【必须为数字】
Node Properties:
- Environment variables:配置环境变量(可以在脚本中引用,好方便啊\(^o^)/~)
- Tool Locations:工具的目录【推荐】。说明:可以替换系统设置的各种工具目录。如:JDK目录、Ant目录、Maven目录等。好处就是在不更改Job配置的情况下,不同环境(如:Windows和Linux) Job配置通用。好方便啊\(^o^)/~
到此,节点的配置工作完成了,点击Save保存。进入下一步节点的连接:
只介绍Launch slave agents via Java Web Start第二种连接方式,Launch slave agents on Unix machines via SSH点击保存后会自动连接。因为Launch slave via execution of command on the Master和Let Jenkins control this Windows slave as a Windows service选项没有配置测试过,所以大家自行折腾吧。
如上图所示,有两种方式可以启动节点(都是JNLP方式。JNLP连接需要端口,默认连接端口是随机的,端口更改 系统设置→Configure Global Security→JNLP节点代理的TCP端口)
你有两种方式启动:
1.Launch agent from browser on slave 下载文件slave-agent.jnlp文件,双击打开。
一般用在Windows系统上,需要javaws.exe(在Java的bin目录中可以找到)程序才能打开。如果提示错误,请卸载JDK后重新安装。成功启动如下图所示:
点击左上角的File选择Install as a service就可以添加为Windows的服务了(默认开机自动启动)。
2.Run from slave command line javaws http://xxxx/slave-agent.jnlp 如果你配置了权限那么后面还有一串看不懂的随机Key
下载slave.jar到本地,然后进入存放slave.jar的目录,复制粘贴并运行 java -jar slave.jar -jnlpUrl http://xxxxx 即可启动。
好了,Jenkins节点的配置展示告一段落了。如有疑问,请留言!
Jenkins进阶系列之——12详解Jenkins节点配置的更多相关文章
- Jenkins进阶系列之——17Jenkins升级、迁移和备份
升级Jenkins Jenkins的开发迭代非常快,每周发布一个开发版本,长期支持版每半年更新一次(ps:大版本更新).如此频繁的更新,怎么升级呢? war:下载新版的war文件,替换旧版本war文件 ...
- mongo 3.4分片集群系列之六:详解配置数据库
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- Httpd服务进阶知识-HTTP协议详解
Httpd服务进阶知识-HTTP协议详解 作者:尹正杰 版权声明:原创作品,谢绝转载!否则将追究法律责任. 一.WEB开发概述 1>.C/S编程 CS即客户端.服务器编程. 客户端.服务端之间需 ...
- J2EE进阶(四)Spring配置文件详解
J2EE进阶(四)Spring配置文件详解 前言 Spring配置文件是用于指导Spring工厂进行Bean生产.依赖关系注入(装配)及Bean实例分发的"图纸".Java EE程 ...
- nginx高性能WEB服务器系列之四配置文件详解
nginx系列友情链接:nginx高性能WEB服务器系列之一简介及安装https://www.cnblogs.com/maxtgood/p/9597596.htmlnginx高性能WEB服务器系列之二 ...
- mongo 3.4分片集群系列之五:详解平衡器
这个系列大致想跟大家分享以下篇章: 1.mongo 3.4分片集群系列之一:浅谈分片集群 2.mongo 3.4分片集群系列之二:搭建分片集群--哈希分片 3.mongo 3.4分片集群系列之三:搭建 ...
- Hexo系列(二) 配置文件详解
Hexo 是一款优秀的博客框架,在使用 Hexo 搭建一个属于自己的博客网站后,我们还需要对其进行配置,使得 Hexo 更能满足自己的需求 这里所说的配置文件,是位于站点根目录下的 _config.y ...
- css3系列之transform详解translate
translate translate这个参数的,是transform 身上的,那么它有什么用呢? 其实他的作用很简单,就是平移,参考自己的位置来平移 translate() translateX() ...
- Android进阶之路(2)-详解MVP
### MVP简介 >MVP 全称:Model-View-Presenter :MVP 是从经典的模式MVC演变而来,它们的基本思想有相通的[地方](https://baike.baidu.co ...
随机推荐
- python super
http://hi.baidu.com/thinkinginlamp/item/3095e2f52c642516ce9f32d5 Python中对象方法的定义很怪异,第一个参数一般都命名为self(相 ...
- [转]个人源码管理:如何在本机配置自己的SVN Repository (图解)
本文转自:http://blog.csdn.net/wikijava/article/details/6245588 Repository 即源码的集中存放处,所有修改后提交的源码就是保存在这里,并在 ...
- 最锋利的Visual Studio Web开发工具扩展:Web Essentials详解(转)
Web Essentials是目前为止见过的最好用的VS扩展工具了,具体功能请待我一一道来. 首先,从Extension Manager里安装:最新版本是19号发布的2.5版 然后重启你的VS开发环境 ...
- 问题解决——使用串口调试助手发送控制字符 协议指令 <ESC>!?
外行指挥内行的结果就是,你必须按照他想的去做,等做不出来再用自己的办法,而且必须如此. -------------------------------------------------------- ...
- JavaScript中判断为整数的多种方式
之前记录过JavaScript中判断为数字类型的多种方式,这篇看看如何判断为整数类型(Integer). JavaScript中不区分整数和浮点数,所有数字内部都采用64位浮点格式表示,和Java的d ...
- Socket常见错误
一.简介 本文介绍 Socket 连接常见错误. 二.常见错误 1)ECONNABORTED 描述:"software caused connection abort",即&q ...
- 虚拟机下Ubuntu没有GUI图形界面,解决方法
先说下快捷键,CLI切换到GUI:Ctrl+Alt+F7: GUI切换到CLI:Ctrl+Alt+F1. 今天折腾虚拟机时,打开Ubuntu后显示的是命令行界面,按快捷键后并没转换到图形界面,而是一直 ...
- Linux运维式具之pdsh
做系统运维的时候,我们经常需要同时在多台机器上执行相同的命令,这个时候可以使用类似pssh,pdsh的并行执行shell的工具. 当然,之前在没有使用这些工具之前,如果有ssh无密码互访,我们可以自己 ...
- 如何在nopcommerce3.3注册页面添加密码强度检查仪?
我刚刚完成了nopCommerce注册页面的密码强度检查仪,因为我觉得在电子商务交易平台,安全问题是非常重要的.在注册页面有必要添加一个密码强度检测仪,以便通知用户他们的密码是否足够强大.今天,大多数 ...
- docker containerd中的容器操作
containerd的中的各种操作都是通过Task来进行的,因此对于容器的create, start, delete等等操作其实都是一个个的Task而已. Task的数据结构如下所示: type Ta ...