淘先锋技术网

首页 1 2 3 4 5 6 7

1. Jenkins master-slave架构

Jenkins master不支持横向扩展,单个master节点的构建并发线程数受到机器的cpu核数、内存、网络等配置限制,可以选择通过部署多个slave从节点的方式实现多任务同时并发执行。 Jenkins的master提供了工作页面和API接口来管理Jenkins的job任务和slave节点。Master可以管理不同工作职责的slave节点,包括运行在linux和windows环境下的slave节点。 Jenkins 通过安装远程代理实现slave与master的通信,由于Jenkins和远程代理程序都是java语言开发,所以slave节点需要提前安装JDK。 多个slave节点配置不同的标签,在执行时,master按照job选择的标签调度到某个slave节点上执行任务。 Jenkins master-slave的架构图如下:

在这里插入图片描述


2. Jenkins master安装

Jenkins master可以选择物理机或者虚拟机部署,或者使用docker/k8s容器化部署。在K8s上部署Jenkins可以使用k8s控制slave动态节点,本次使用docker容器的方式运行。
  • 下载docker镜像:
docker pull jenkinsci/blueocean:1.21.0
  • 启动jenkins master容器
docker run -u root -d --restart=always \
	   --name jenkins-master --net=host\
	   -e JAVA_OPTS=-Duser.timezone=Asia/Shanghai \
	   -v /var/jenkins_home:/var/jenkins_home \
	   jenkinsci/blueocean:1.21.0
第一次启动jenkins容器日志输出jenkins的初始登录token,进入后选择安装插件或者跳过安装插件。用到的插件可以在在jenkins管理端中系统管理-插件管理处选择安装。

3. Jenkins slave节点配置

进入Jenkins系统管理-节点管理,如下图:

在这里插入图片描述

点击新增节点,输入节点名称,选择固定节点。如下图:

在这里插入图片描述

进入从节点配置页面,如下图:

在这里插入图片描述

  • 远程工作目录:Jenkins slave节点workerspace工作目录,这个目录需要提前在slave节点上建好。
  • 标签:slave节点的标签,Jenkins job构建配置中,可以选择指定的标签运行构建任务。
  • 启动方式:Linux节点选择使用slave节点用户名/密码 SSH登录的方式创建远程slave代理程序。
  • 主机:slave节点Ip地址。
  • Credentials:点击右侧的凭证添加,这里使用slave节点的用户/密码创建凭证。
  • Host Key Verification Strategy:使用SSH选择No verifying Verification Strategy。
新增节点显示未在线:

在这里插入图片描述

点击节点名称,进入节点代理启动页面,点击启动代理:

在这里插入图片描述

到节点列表,点击刷新状态,可以看到新增节点已同步,slave节点新增成功:

在这里插入图片描述

新建一个job测试,选择maven构建:

在这里插入图片描述

勾选限制项目的运行节点,输入标签表达式,表达式的写法参考右侧的帮助提示。输入我们高出创建的slave节点node01标签(测试git拉取代码和maven编译代码,需要node01节点提前安装好git和maven,并在Jenkins master的系统管理-全局工具配置中配置好MAVEN_HOME)。如下图:

在这里插入图片描述

配置好git代码库地址和maven构建配置,点击构建,查看构建日志:

在这里插入图片描述

可以看到在slave节点上工作目录下,输出了构建制品:

在这里插入图片描述


为了实现master和slave之间的工作协同,或者多个构建任务之间输出物能够共享,需要使用共享存储来解决。如下图:

在这里插入图片描述