Jenkins实践基础:使用Easypack搭建一主多从的分布式持续集成环境

转自: https://blog.csdn.net/liumiaocn/article/details/94384235

Java面试官:给Java面试者的八点建议: https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/94367014

深度学习的员工离职预测: https://blog.csdn.net/g6U8W7p06dCO99fQ3/article/details/94367036

ROS中解析bag包中的点云文件到pcd格式: https://blog.csdn.net/Mr_yangsir/article/details/94559945

惊:FastThreadLocal吞吐量居然是ThreadLocal的3倍: https://blog.csdn.net/lirenzuo/article/details/94495469

JNDI学习总结 JNDI数据源的配置:  https://blog.csdn.net/swebin/article/details/94503311

几种常用开源报表工具与商用报表工具的对比之ireport 与润乾报表对比: https://blog.csdn.net/terry_chengq/article/details/94562539

# Git 日常操作:  https://blog.csdn.net/sunhangye/article/details/94562656

./ ../ /的区别:  https://blog.csdn.net/qq_38180363/article/details/94562700

【ubuntu】如何在Windows系统中查看并修改Ubuntu系统中的文件:  https://blog.csdn.net/ipfpm/article/details/94559949

抽象代数入门(三): https://blog.csdn.net/AugustMoore/article/details/94560032

带你走进docker: https://blog.csdn.net/weixin_38880359/article/details/94562749

容器十年 ——一部软件交付编年史: https://blog.csdn.net/yunqiinsight/article/details/94561888

各种排序算法的复杂度比较和选择:https://blog.csdn.net/Ucsasuke/article/details/94562777

产品与技术激烈撕逼之后,CSDN APP终于上新了: https://blog.csdn.net/blogdevteam/article/details/94390913

 

 

Jenkins支持多种方式实现分布式构建,主要方式之一为传统的一主多从(Master/Slave)。Easypack的Jenkins的Alpine镜像中将slave.jar文件也集成了进去,使用一个镜像即可实现启动Master的服务也可启动Slave的服务。这篇文章以2.176.1的LTS版本为例进行使用上的介绍。

Jenkins分布式集群环境介绍
https://liumiaocn.blog.csdn.net/article/details/86173195
环境准备
这里使用Easypack的Jenkins 2.176.1来创建验证用的Jenkins环境。使用如下步骤即可完成。

事前准备
事前准备docker和docker-compose,版本要求如下所示:

Docker: >= 1.13.1
docker-compose: >= 1.13
liumiaocn:~ liumiao$ docker version
Client:
 Version:      18.03.1-ce
 API version:  1.37
 Go version:   go1.9.5
 Git commit:   9ee9f40
 Built:        Thu Apr 26 07:13:02 2018
 OS/Arch:      darwin/amd64
 Experimental: false
 Orchestrator: swarm

Server:
 Engine:
  Version:      18.03.1-ce
  API version:  1.37 (minimum version 1.12)
  Go version:   go1.9.5
  Git commit:   9ee9f40
  Built:        Thu Apr 26 07:22:38 2018
  OS/Arch:      linux/amd64
  Experimental: true
liumiaocn:~ liumiao$ 
liumiaocn:~ liumiao$ docker-compose --version
docker-compose version 1.21.1, build 5a3f1a3
liumiaocn:~ liumiao$ 

Step 1: Jenkins Master服务启动
使用Easypack中准备好的LTS的Jenkins镜像,启动Jenkins。

git clone
命令:git clone https://github.com/liumiaocn/easypack.git

启动服务
命令:
cd easypack/containers/alpine/jenkins
docker-compose up -d

使用的docker-compose配置文件
liumiaocn:jenkins liumiao$ cat docker-compose.yml 
version: '2'

services:
  # jenkins service based on Jenkins LTS version
  jenkins:
    image: liumiaocn/jenkins:2.176.1
    ports:
      - "32002:8080"
      - "50000:50000"
    environment:
      - JENKINS_ADMIN_ID=root
      - JENKINS_ADMIN_PW=liumiaocn
      - JENKINS_MODE=master
    volumes:
      - ./data/:/data/jenkins
    restart: "no"
liumiaocn:jenkins liumiao$

Step 2: 创建Agent
通过如下菜单操作,在创建节点的页面输入Agent信息单击Save进行保存

菜单操作:以管理员用户登录,选择Manage Jenkins, 选择Manage Node,创建如下agent001的节点。


同样的方式创建再创建agent002和agent003两个节点,这样三个长时间存在的节点就创建出来了(注意Availability选择的是缺省的Keep this agent online as much as possible)。


Step 3: 启动Agent
以agent001为例,首先需要确认此从节点连接Jenkins主节点是需要用到的信息,相关的设定信息如下图所示

可以看到实际上就是使用JNLP的方式进行连接,连接方式如下所示

java -jar agent.jar -jnlpUrl http://localhost:32002/computer/agent001/slave-agent.jnlp -secret 7aa11fface9ebc3f09a4752637f0642331795b53427186134c71b1b5dfba2783 -workDir “/tmp/jenkins/agent001”

简单来说只需要有JRE的环境使用agent.jar和上述信息即可连接至主节点。唯一需要注意的是如果不在同一台机器上的时候,localhost换成Jenkins的Master节点的IP或者域名即可。这里直接使用easypack的slave模式,将环境变量JENKINS_MODE设定为slave即可。以下以agent001为例介绍如何启动Jenkins的从节点。

[root@devops agent001]# cat docker-compose.yml 
version: '2'

services:
  # jenkins service based on Jenkins LTS version
  jenkins:
    image: liumiaocn/jenkins:2.176.1
    environment:
      - JENKINS_MODE=slave
      - JENKINS_MASTER_URL=http://192.168.163.141:32002/computer/agent001/slave-agent.jnlp
      - JENKINS_SLAVE_SECRET=7aa11fface9ebc3f09a4752637f0642331795b53427186134c71b1b5dfba2783
      - JENKINS_SLAVE_WORKDIR=/tmp/jenkins/agent001
    restart: "no"
[root@devops agent001]#

使用上述设定启动agent001的docker容器即可

[root@devops agent001]# docker-compose up -d
Starting agent001_jenkins_1 ... 
Starting agent001_jenkins_1 ... done
[root@devops agent001]# docker-compose ps
       Name                     Command               State          Ports        
---------------------------------------------------------------------------------
agent001_jenkins_1   /bin/tini -- /usr/local/bi ...   Up      50000/tcp, 8080/tcp 
[root@devops agent001]# 

通过确认日志信息,最后出现Connected即表明已经正常连接

[root@devops agent001]# docker-compose logs
Attaching to agent001_jenkins_1
jenkins_1  | Both error and output logs will be printed to /tmp/jenkins/agent001/remoting
...省略
jenkins_1  | INFO: Connected
[root@devops agent001]#

而此时节点也显示为已经连接,如下图所示

使用同样的方式,将其他的两个Jenkins节点也启动和连接起来,结果如下所示


另外label可以根据需要进行设定,比如本文示例中的三个节点的label全部设定为了jenkins-agent-docker,可通过页面查询此label所包含的节点信息,如下图所示,可以看出名称为jenkins-agent-docker的label中包含agent001、agent002和agent003三个Jenkins节点。


Step 4: 调整of executors个数
Jenkins的of executors是可并行执行Job的数量,缺省的情况下设定值为2,本文示例中启动的Jenkins节点的设定值为1。

设定建议1:
从节点的设定值建议:跟此节点能够分配给此Jenkins节点的CPU个数相同

设定建议2:
主节点的设定值建议:主节点主要负责调度等工作,不建议实际构建操作,所以建议设定为0

设定后此一主三丛的Jenkins分布式持续集成环境的设定如下图所示,Master节点可执行的executors的个数从2变成了0


这样一个主节点三个从节点的Jenkins环境就创建完毕了。
--------------------- 
作者:liumiaocn 
来源:CSDN 
原文:https://blog.csdn.net/liumiaocn/article/details/94384235 
版权声明:本文为博主原创文章,转载请附上博文链接!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值