摘要:
使用jenkins做内部ci, 原因在于jenkins的简单性及流程代码化文档化以便于对流程本身做版本控制和追踪。
本文说明如何部署jenkins的master节点及agent节点
jenkins工作原理:
master节点和agent节点说明:
- master节点: 即jenkins服务本身, 默认使用8080端口启动一个网站服务
- agent节点: 实际工作节点, 接受master节点下发的任务, 执行后将结果返回master。所有的流水线都在agent节点运行。
节点图和时序图阐释:
说明:
- 用户打开的jenkins网页便为master节点, 用户向master节点触发任务
- master节点将任务下发到匹配标签的agent节点, 由匹配标签的agent节点具体执行任务的pipeline
- agnet节点将执行结果返回master节点, master节点将其在页面上展示给用户
部署:
部署jenkins(master节点):
部署环境:
- 无限制, windows或者任一linux发行版皆可
部署步骤:
以linux为例:
Linux
Redhat Jenkins Packages
注意事项:
- 部署master的机器作为jenkins服务本身, 务必确保机器稳定
- 需将jenkins服务加入启动服务中, 以便于jenkins服务的自愈
部署agent节点:
部署环境:
- 要执行的任务运行在哪个环境, 就要将agent节点的服务部署在哪个环境
- 例如:
- 测试stonedb在centos编译, 就要将agent服务在对应的centos服务上启动
- 其他环境同样
部署步骤:
一. 先确定agent标签的字符串,这个需要自己先去确定一个,为了便于查找,
二. 打开jenkins网站, 找到节点添加页面,
三. 修改为自己agent的名i在和标签及工作目录
四. 保存该页面, 出现用于启动agent服务的命令, 在对应agent机器上用此命令启动该agent服务
正常的启动日志:
Jul 11, 2022 6:26:56 PM hudson.remoting.jnlp.Main$CuiListener status INFO: Handshaking Jul 11, 2022 6:26:56 PM hudson.remoting.jnlp.Main$CuiListener status INFO: Connecting to 192.168.30.238:5549 Jul 11, 2022 6:26:56 PM hudson.remoting.jnlp.Main$CuiListener status INFO: Trying protocol: JNLP4-connect Jul 11, 2022 6:26:56 PM org.jenkinsci.remoting.protocol.impl.BIONetworkLayer$Reader run INFO: Waiting for ProtocolStack to start. Jul 11, 2022 6:26:57 PM hudson.remoting.jnlp.Main$CuiListener status INFO: Remote identity confirmed: 7f:16:6a:5a:af:09:4c:97:39:8e:ad:3f:f6:5c:c7:20 Jul 11, 2022 6:26:57 PM hudson.remoting.jnlp.Main$CuiListener status INFO: Connected
五. 查看已经启动的agent节点服务
注意事项:
- agent的标签用于随后的jenkinfile流水线文件使用, 需要谨慎
- agent节点的服务最好也加入开启启动服务, 以便于机器重启后agent节点服务自愈