如何快速复制BAT级的DevOps工具链

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、全开源端到端部署流水线
看到这里,你一定在想:
这些大公司的经验我们真能复制吗?
在面临 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工具链的更多相关文章
- 一文解读DevOps工具链 (转)
在列出DevOps 工具链之前,介绍一下什么是DevOps,虽然DevOps这个概念现在还没有标准的定义,但我们可以追溯一下其过去九年的历史发展过程(从2009年-2017年),列出几个相对明确又有所 ...
- 从大厂DevOps工具链部署,看现代产品的生命周期管理
目录 1. 认识DevOps 1.1. DevOps工具链 1.2. CI 持续集成(Continuous Integration) 1.3. CD(持续交付 & 持续部署) 1.4. Agi ...
- 研发过程及工具支撑 DevOps 工具链集成
https://mp.weixin.qq.com/s/NYm63nkCymIV3DbL4O01dg 腾讯重新定义敏捷 |Q推荐 小智 InfoQ 2020-09-03 敏捷开发奠基人 Robert C ...
- DevOps工具链
Devops工具链 DevOps实际是一种文化上的变迁,代表了开发.运维.测试等环节之间的协作,因此DevOps工具是非常多种多样的,甚至可以由多种工具组成一个完整的DevOps工具链.此类工具可以应 ...
- devops工具链概述
1. devops工具链概述 1)devops工具篇 2) 持续集成 3) 持续交付 4) 持续部署 2. devops工具链概述
- 第七章 DevOps工具链
DevOps工具生态圈 协同开发工具 敏捷开发 可视化 加强团队沟通协作 数据分析 协同开发 持续集成工具 Jenkins 自动化编译 自动化测试 自动化部署 丰富的插件库 版本管理工具 Git 简介 ...
- DevOps - DevOps工具链
不要满足于使用世界上已存在的各种方法和技术,而应重点放在希望达到的效果上! 单单使用工具不难,困难的是在团队开发中熟练使用,并形成一套理想的工作流程,只有在团队中工具和思想才能发挥最大价值. 开源工具 ...
- DevOps时代,企业数字化转型需要强大的工具链
伴随时代的飞速进步,中国的人口红利带来了互联网业务的快速发展,巨大的流量也带动了技术的不断革新,研发的模式也在不断变化.传统企业纷纷效仿互联网的做法,结合DevOps进行数字化的转型. 通常提到Dev ...
- GitLab + Jenkins + Harbor 工具链快速落地指南
目录 一.今天想干啥? 二.今天干点啥? 三.今天怎么干? 3.1.常规打法 3.2.不走寻常路 四.开干吧! 4.1.工具链部署 4.2.网络配置 4.3.验证工具链部署结果 4.3.1.GitLa ...
随机推荐
- kubernetes 搭建集群外部ip服务
nginx-pod.yaml apiVersion: v1 kind: Pod metadata: name: webapp labels: app: webapp spec: containers: ...
- leetcode-Min Cost Climbing Stairs
题目: On a staircase, the i-th step has some non-negative cost cost[i] assigned (0 indexed). Once you ...
- Spring Cloud之分布式配置中心
用服务的方式来实现 ConfigAppApplication.java package com.packtpub.ConfigApp; import org.springframework.boot. ...
- Android从相册选取视频
1. /** * 从相册中选择视频 */ private void choiceVideo() { Intent i = new Intent(Intent.ACTION_PICK, android. ...
- Netty源码学习(七)FastThreadLocal
0. FastThreadLocal简介 如同注释中所说:A special variant of ThreadLocal that yields higher access performance ...
- (1) C语言 基础1
VS scanf 安全错误 在预处理器定义那里添加一行_CRT_SECURE_NO_DEPRECATE vs编译头错误 一.打印helloworld #include<stdio.h> ...
- (转)NSString 类的使用
官网连接地址:https://developer.apple.com/library/mac/documentation/Cocoa/Conceptual/Strings/Articles/Creat ...
- hdu 1556 Color the ball 线段树
题目链接:HDU - 1556 N个气球排成一排,从左到右依次编号为1,2,3....N.每次给定2个整数a b(a <= b),lele便为骑上他的“小飞鸽"牌电动车从气球a开始到气 ...
- C#实现简单的字符串加密
最近用到一些字符串加密,而.net中提供的加密算法中用起来比较复杂,便简单的封装了一下,方便日后使用. public class Encrypt { static Enco ...
- IMAP 命令
最近学习了一下IMAP命令,现在也算总结一下学习的东西,先说说IMAP命令,如果你使用的是163.126邮箱,反正是网易家的邮箱,那么这里就有很多坑要踩了,因为网易邮箱的特殊性,由于网易邮箱在中国占有 ...