Jenkins增加节点的两种方式
单节点的Jenkins在实际生产中是很少使用的,满足不了生产环境的业务,所以我们一定是使用Jenkins集群来做持续集成,Jenkins的集群搭建是非常简单的,而且有多种方式。下面我们来介绍一下。
安装Jenkins
先找一台机器安装Jenkins,安装好后这台机器就作为Jenkins集群的master节点,注意从节点是不需要安装Jenkins的,只需要安装jdk、版本管理工具(git/svn)、构建所需工具即可。安装好Jenkins后,我们就可以添加从节点了。需要进行一下准备:
- 安装插件:SSH Slaves
- 打开agent控制项
在全局安全配置中,选中下面的选项
添加节点
回到系统管理页面,选中节点管理->新建节点
添加固定节点
填写节点的相关信息,名称、标签、远程工作目录,重点就是启动方式了,我们主要使用两种启动方式
- Launch agents via SSH
使用ssh协议,从master向slave发起连接,由master主动发起请求
- 通过Java web启动代理
使用Java web的JNLP协议,从slave向master主动发起连接
节点启动方式配置
Launch agents via SSH
这种方式必须要先安装SSH Slaves插件,否则可能看不到,先配置一个全局凭证,配置用户名密码
在节点管理中添加一个固定节点,选择Launch agents via SSH方式,注意下面选择Non verifying Verification Strategy,其他的方式也可以选择,无非是选择用户密码还是选择私钥方式验证登录。
保存后,可以看到节点列表界面,此节点已经为连接状态
前提是安装好了jdk,如果不是做Java开发,在不是必须使用Java jdk的情况下,我推荐安装OpenJDK,可以使用各种包管理工具(apt、yum)自动安装。
测试一下当前节点
使用之前创建的freestyle工程
保存后立即启动构建
通过执行日志我们看到任务运行成功了,我们登录到节点机器上,看一下配置的工作目录下是否更新了代码
通过Java web启动代理
这种方式也是jnlp的连接方式,这种方式非常优秀,可以无视系统,基本是通过socket方式连接
查看节点状态
通过jnlp方式配置的节点,有两种启动方式
- 通过浏览器启动在节点机器上访问Jenkins网页,进入到上面这个节点状态页面,点击Launch按钮即可
- 通过命令行启动命令已经给出来了,有一个agent.jar的链接,点击以后下载agent.jar文件,将文件拷贝到节点机器上,在其目录下执行页面给出的命令就行了。默认是在前台执行,可以使用nohup在后端执行即可
执行成功后,节点状态会自动刷新为正常。
同样我们可以使用freestyle工程进行验证
注意:
在上面截图中显示的命令地址为127.0.0.1,这样会导致节点无法注册成功,需要修改为机器的ip地址。首先要在Jenkins的配置中修改监听地址,系统管理->系统配置
将这里127.0.0.1修改为机器IP地址即可
三、添加node
启动方式选择--》 通过java web启动代理 --》选择 Use WebSocket
添加后保存,显示连接认证信息,和agent启动方法
四、节点服务器上启动前,需要安装jdk java环境
1、简单启动
验证节点链接是否正常
切换工作目录
cd /home/jenkins/workspec
下载agent.jar包
wget https://jenkinswh.uniontech.com/jnlpJars/agent.jar
验证文件
echo f6b23ae961a2d2b028d446df7b1ebf93ff6625b504dd4ce2 > secret-file
启动agent
setsid java -jar agent.jar -jnlpUrl https://jenkinswh.uniontech.com/computer/arm-kernel-build-31-85/slave-agent.jnlp -secret @secret-file -workDir "/home/jenkins/workspec" > /dev/null &
启动日志路径在工作目录下的 remoting/logs/下
简单启动,默认在前台,而且无法开机自启。 因什么原因挂掉以后,也不会自动重启。 所以,这只是用来验证的启动方式,不推荐正式使用
2、systemd启动
使用systemd作为守护进程
下载agent.jar
切换工作目录
sudo mkdir /home/jenkins/workspace
cd /home/jenkins/workspace
下载agent.jar包
sudo wget https://jenkinswh.uniontech.com/jnlpJars/agent.jar
sudo chmod +x agent.jar
添加
echo f6b23ae961a2d2b028dasdf446df7b1ebf93fcbeaa5695c8a > secret-file
准备env.sh
在sudo vim/home/jenkins/workspace/jenkins_env中,写入以下环境变量:
JNLP_URL=https://jenkinswh.uniontech.com/computer/arm-kernel-build-31-85/slave-agent.jnlp
JNLP_SECRET=f6b23ae961a2d2b028d446df7b1eadfasf3fcbeac8a54ce2
JNLP_WORKDIR=/home/jenkins/workspace
其中,JNLP_URL和JNLP_SECRET需要根据节点信息而修改。
配置systemd
新增文件/etc/systemd/system/jenkins-agent.service
jenkins添加jnlp-slave节点
一、前言有时候,jenkins只提供web访问,master节点与node节点无法通过ssh访问,所以无法通ssh的方式添加node,于是只能通过启动java