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