近期又有几个朋友看了俺的文章询问。怎样让Jenkins能做到分布式。我解释了非常久,发现这也是个非常好的topic,就来博客继续念叨念叨。

这个非常easy,所以这篇文章也就介绍简单点。

首先说下Jenkins能支持的几种build框架:

1.我构建,我收集的Master only框架。



 Master only 框架主要就靠Jenkins本身运作在Server上(数据库在server上或不在都属于该框架),利用Server本身的硬件资源进行build(编译,做包。測试等)。
它能做到的事情:
a:可以让job执行在Master上。

b:可以让job写数据到database。
c:可以让job更新/计划数据并展示。
2.你构建,我收集的Master-单slave框架。
该框架是用于解决单一server又执行Jenkins又编译,影响Jenkins的正常运作的情况。该框架让Jenkins的Agent常驻在另外一台服务器,让它变成Jenkins的slave。由slave来执行job.Master就用来收集数据,传递数据。展示数据。
3.你们构建。我收集的Master-多slave框架。


改框架主要攻克了单台slave同一时候编译多branch的软件的时候的效率低下问题。由N个Jenkins Agent常驻于N个server,由Master统一调度job执行在不同的Slave上。从而达到不同的branch编译不会相互影响的情况,加速编译、做包速度。

而Master 仅仅用于收集数据、展示数据。

4.你们构建,我们各收集各的多Master-多slave框架。



该框架用于解决因为Jenkins 的负载太重导致的Jenkins性能问题,由多个Jenkins作为不同的Master,指派Job到不同的Slave上build.各个master负责的Job领域、类型不同。比方Master 1是SCM做包的,Master2专门管编译,Master 3用于自己主动化測试。而Master们还是用于收集数据,展示信息。
这个框架便是下一步的Cloud build的基础。



5.Cloud Build
该框架是一个动态的框架。处于1-4的框架中的一种。所以这里就没有配图了。

当任务不多的时候。可能为1-2.
当任务非常多的时候,可能为3.
当任务巨大的时候,可能为4.

由于有了Cloud。server资源能够任意调配。那么能够在Cloud上申请几个instance做为Master,同一时候申请几千个CPU的slave做编译。编译完释放instance的所用资源。

而Master还是仅仅做数据收集、展示数据。

当这个Master完毕任务的时候,该instance也能够释放所用资源。


Cloud build框架用于节约HW的资源。一个Cloud服务的公司能够提供非常多其它公司来用它的服务,从而降低了总的HW数量。而几千个cpu的编译速度,不是一般server能比的。


说了这么多,看官您云(晕)了没?


让你的jenkins能当奴隶主---说说几种Jenkins build框架的更多相关文章

  1. jenkins、ant、selenium、testng搭建自动化测试框架

    如果在你的理解中自动化测试就是在eclipse里面讲webdriver的包引入,然后写一些测试脚本,这就是你所说的自动化测试,其实这个还不能算是真正的自动化测试,你见过每次需要运行的时候还需要打开ec ...

  2. 解决jenkins构建job报错“NoClassDefFoundError” in jenkins/scm/RunWithSCM问题

    现象 使用Jenkins 2.8,当我运行一个简单的Jenkins工作时,构建一个job获取源代码,出现下面的错误 FATAL: jenkins/scm/RunWithSCM java.lang.No ...

  3. Jenkins系列之二——centos 6.9 + JenKins 安装

    centos 6.9 + JenKins 安装记录环境: [root@localhost ~]# cat /etc/issue CentOS release 6.9 (Final) Kernel \r ...

  4. 非docker的jenkins的master如何使用docker的jenkins的slave

    前提 1.存在jenkins的master,这个master不是docker的,是通过yum install jenkins安装的 2.使用docker创建n个jenkins,方法是docker pu ...

  5. Jenkins持续集成企业实战系列之Jenkins插件下载及邮件配置-----05

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  6. Jenkins持续集成企业实战系列之Jenkins手动构建-----04

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  7. Jenkins持续集成企业实战系列之Jenkins配置演示-----03

    注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求,根据公司需求Java代码项目升级的.(公司是 ...

  8. Jenkins持续集成企业实战系列之Jenkins持续集成简介及安装-----02

    1.      Jenkins持续集成简介 注:原创作品,允许转载,转载时请务必以超链接形式标明文章 原始出处 .作者信息和本声明.否则将追究法律责任.    最初接触Jenkins也是由于公司需求, ...

  9. 手把手教你如何在window下将jenkins+allure集成生成的测试报告通过jenkins配置邮箱自动发送-04(非常详细,非常实用)

    简介 上一篇生成测试报告,小伙伴们和童鞋们就又问道,测试报告已经生成了,怎么发送给相关的负责人了?小伙伴们和童鞋们不要着急,听宏哥慢慢给你道来,心急吃不了热豆腐哈.今天这篇文章宏哥就给小伙伴和童鞋们来 ...

随机推荐

  1. 【资料】wod烟草

    注意: 1. 所有效果持续时间是整个地城 2. 某几样菸草在使用 烟雾的祝福 的时候效果只有LV1 (技能 -25), 表示该物品设计上主要是自己使用而非加给团队. SL = 技能等级 HL = 英雄 ...

  2. JDK JRE区别

    JDK里面的工具也是用JAVA编写的,它们本身运行的时候也需要一套JRE,如C:/Program Files/Java/jdk1.5.x/目录下的JRE.而C:/Program Files/Java/ ...

  3. SharePoint 2013 代码创建应用程序目录(App Catalog)

    众所周知,SharePoint App是2013版本的一大特色,那么,关于App的分发有几种方式呢?SharePoint给我们提供了两种方式,一种是上载到SharePoint应用商店,另一种是在本地S ...

  4. 探索并发编程(六)------Java多线程性能优化

    大家使用多线程无非是为了提高性能,但如果多线程使用不当,不但性能提升不明显,而且会使得资源消耗更大.下面列举一下可能会造成多线程性能问题的点: 死锁 过多串行化 过多锁竞争 切换上下文 内存同步 下面 ...

  5. Navicat工具里的empty table和truncate table的区别

    如图: 相同点:都会清空数据表里的所有数据 不同点:empty table是清空表里的数据:truncate table是删除表,然后再创建这张表 意义:对于主索引自动增加的情况,empty清表后,新 ...

  6. 使用Vue.js制作仿Metronic高级表格(一)静态设计

    Metronic高级表格是Metonic框架中自行实现的表格,其底层是Datatables.本教程将主要使用Vue实现交互部分,使用Bootstrap做样式库.jQuery做部分用户交互(弹窗). 使 ...

  7. [gevent源代码分析] 深度分析gevent执行流程

    一直对gevent执行流程比較模糊,近期看源代码略有所得.不敢独享.故分享之. gevent是一个高性能网络库,底层是libevent,1.0版本号之后是libev.核心是greenlet.geven ...

  8. Shell编程(脚本)的经常使用命令和语句

    一些经常使用的Shell编程(脚本)命令和语句,能够满足一般需求. 接收到的命令參数: 參数个数: $# 參数值: 命令本身:$0 第一个參数:$1 第二个參数:$2 -- 退出命令: exit ec ...

  9. SQL IN

    here are some additional clause in the SQL language that can be used to simplify queries by decrease ...

  10. Android -- 经验分享(三)

    目录 获取系统版本号 获取系统信息 获取安装路径和已安装程序列表 获取图片.应用名.包名 解决listview上Item上有按钮时item本身不能点击的问题 不让文本框输入中文 获取屏幕宽高 将Tab ...