1、流水线改变世界

1910年,福特汽车在引入流水线生产之后,Model-T 的组装时间缩短了8倍,从12.5小时降到了1.5小时,这就是流水线改变世界的神话,造就了汽车上的国家!

那流水线怎么改变软件交付的世界呢?

2、持续交付与部署流水线

2010年,Jez Humble 的大作《持续交付-发布可靠软件的系统方法》出版,软件交付的世界因此大不同,部署流水线就是其中非常重要的一章。

2.1 部署流水线的定义

大神 Jez Humble 对部署流水线的定义:部署流水线是指软件从版本控制库到用户手中这一过程的自动化表现形式。对软件的每次变更都会经历一个复杂流程才能发布。

另一位大神 Martin Fowler 认为部署流水线是持续交付的核心环节。

2.2 持续交付屋的顶梁柱

高效运维社区 DevOps 专家,前百度工程效率专家张乐同学结合自己多年的实践经验和精益屋整理出持续交付屋,其中可靠可重复的流水线就是核心内容。从提交与编译,测试与验证到部署与运维,打通软件交付的完整路径,实现真正的端到端部署流水线。

3、部署流水线案例3.1 持续交付示例流水线

在《持续交付》书中,Jez Humble 为读者提供了一套最基本的流水线示例,如图所示:

图中的多个阶段依靠类似 Jenkins 这样的持续交付引擎工具来驱动,版本控制和制品库管理是流水线的输入和输出。

3.2 百度案例

百度是工程效率非常出类拔萃的公司,敏捷和持续交付都具备很强的能力。如图就是百度建设的可靠可重复的交付流水线,通过交付流水线,将全局过程标准化、自动化、可视化。

汇聚多模块之间的部署流水线

3.3 国外案例:Netflix的流水线

纸牌屋的出品公司,国外视频的一哥 Netflix,也是一家工程能力非常优秀的公司,Netflix 基于 Jenkins 开发了持续交付平台 Spinnaker,从代码嵌入、持续集成、环境制作、部署、测试到发布等各环节都完整打通。

其中还用到了基础设施即代码、不可变基础设施等诸多实践。

4、全开源端到端部署流水线

看到这里,你一定在想:

  1. 这些大公司的经验我们真能复制吗?

  2. 在面临 DevOps 转型和落地的关键时刻,我们应该怎么办呢?

高效运维社区倾力打造的全开源端到端部署流水线就是你要的答案

4.1 流水线设计要点:

1. 全开源工具链:示例中的工具全是开源工具,涵盖依赖与镜像管理、代码管理、持续集成、代码质量、自动化测试、容器化编排和日志管理等。

2. 多阶段过程:示例中将流水线分为三个阶段:提交阶段、验证阶段、部署阶段。

· 提交阶段:代码提交 Merge Requst 前进行编译、单元测试的验证,防止破坏主线

· 验证阶段:基于主线的集成和多环境的自动化测试验证,输出可部署的高质量的版本包

· 部署阶段:基于已发布的版本包部署到生产环境

3. 开源工具集成:开源虽好,可不要贪杯哦!

开源工具链完整集成和跨领域多工具使用,是大多数企业望而却步的原因。高效运维社区的专家们基于实践经验,为大家趟平了前路。

关键点1:基于Jenkins与Gitlab集成,实现提交验证。需要使用 Gitlab API、Jenkins Gitlab 插件、Job深度配置实现完美集成

关键点2:Maven 与 Docker 集成实现镜像自动制作,我们选用 Spotify 的 docker-maven 插件与 Dockerfile 集成实现镜像的自动制作和版本关联。

关键点3:SonarQube 质量门设置和代码质量分析

关键点4:ELK 收集、分析和展示日志信息

4. 最新的 Pipeline 与 BlueOcean:

在案例中,我们选择使用 Jenkins 2.0 中全新的 Pipeline 和 BlueOcean 来实现和可是整个流水线,整个过程一览无余。

精华都在这里。流水线实录视频:https://v.qq.com/iframe/preview.html?vid=z03959pwc0r&width=500&height=375&auto=0

想要将全开源端到端的流水线带回去吗?

DevOps 强调持续改进,不断进化,高效运维社区践行 DevOps 理念,也在不断的优化和改进全开源端到端部署流水线。

8月18日的 DevOpsDays · 上海站将会发布最新的2.0版本,将加入更多的实践和工具,帮助我们的企业快速实现 DevOps 的转型和落地。

如何快速复制BAT级的DevOps工具链的更多相关文章

  1. 一文解读DevOps工具链 (转)

    在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所 ...

  2. 从大厂DevOps工具链部署,看现代产品的生命周期管理

    目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...

  3. 研发过程及工具支撑 DevOps 工具链集成

    https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...

  4. DevOps工具链

    Devops工具链 DevOps实际是一种文化上的变迁,代表了开发.运维.测试等环节之间的协作,因此DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链.此类工具可以应 ...

  5. devops工具链概述

    1. devops工具链概述  1)devops工具篇 2) 持续集成 3) 持续交付 4) 持续部署 2. devops工具链概述

  6. 第七章 DevOps工具链

    DevOps工具生态圈 协同开发工具 敏捷开发 可视化 加强团队沟通协作 数据分析 协同开发 持续集成工具 Jenkins 自动化编译 自动化测试 自动化部署 丰富的插件库 版本管理工具 Git 简介 ...

  7. DevOps - DevOps工具链

    不要满足于使用世界上已存在的各种方法和技术,而应重点放在希望达到的效果上! 单单使用工具不难,困难的是在团队开发中熟练使用,并形成一套理想的工作流程,只有在团队中工具和思想才能发挥最大价值. 开源工具 ...

  8. DevOps时代,企业数字化转型需要强大的工具链

    伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化.传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型. 通常提到Dev ...

  9. GitLab + Jenkins + Harbor 工具链快速落地指南

    目录 一.今天想干啥? 二.今天干点啥? 三.今天怎么干? 3.1.常规打法 3.2.不走寻常路 四.开干吧! 4.1.工具链部署 4.2.网络配置 4.3.验证工具链部署结果 4.3.1.GitLa ...

随机推荐

  1. python--easygui

    1.msgbox import easygui as eg # msgbox # 一般使用三个参数,msg:内容,title:标题,ok_button:按钮内容 eg.msgbox(msg=" ...

  2. SpringCloud简介(一)

    一.SpringCloud简介 SpringCloud 为开发人员提供了快速构建分布式系统的一些工具,包括配置管理.服务发现.断路器.路由.负载均衡.微代理.事件总线.全局锁.决策竞选.分布式会话等等 ...

  3. LCA【p2912】 牧场散步 (USACO08OCT)

    顾z 你没有发现两个字里的blog都不一样嘛 qwq 题目描述-->p2912 牧场散步 题意概括 给定一个树,给你Q个询问,每次询问输入一个二元组\((x,y)\),要求求出\((x,y)\) ...

  4. linux coreseek-4.1安装

    1.假设已经有coreseek-4.1-beta.tar.gz源文件 [root@qp232 ~]# cd /usr/local [root@qp232 local]# tar -zxvf /yd/l ...

  5. Android入门之文件系统操作(一)简单的文件浏览器 (转)

    Android入门之文件系统操作(一)简单的文件浏览器 (转)        import java.io.File; import java.util.*; import android.app.A ...

  6. .net / java /安卓des加密互通

    一 . C#.net /// <summary> /// 加密数据 /// </summary> /// <param name="Text"> ...

  7. IMAP IDLE模式(推送邮件)

    在电子邮件技术中,IDLE是RFC 2177中描述的一项IMAP功能,它允许客户端向服务器表明它已准备好接受实时通知. Internet消息访问协议IMAP4协议,它要求客户端轮询服务器来更改所选中的 ...

  8. Android获取视频音频的时长的方法

    android当中获取视频音频的时长,我列举了三种. 1:获取视频URI后获取cursor cursor.getLong(cursor.getColumnIndexOrThrow(MediaStore ...

  9. 关于各浏览器的cookie上限

    IE6~IE6以下,每个域名最多20个cookie IE7及以上,每个域名最多50个cookie Firefox,每个域名最多50个cookie Opera,每个域名最多30个cookie Safar ...

  10. Mybatis通用分页

    分页分为真分页和假分页,而 MyBatis 本身没有提供基于数据库方言的分页功能,而是基于 JDBC 的游标分页,很容易出现性能问题.网上提供的一个解决方案感觉还不错,是基于 MyBatis 本身的插 ...