抖音技术能力大揭密!钜惠大礼、深度体验,尽在火山引擎增长沙龙,就等你来! 立即报名>> 了解详情
写点什么

如何以可组合块的方式重构 CI/CD 管道

2020 年 4 月 18 日

如何以可组合块的方式重构CI/CD管道

DeliveryConf大会上,VMware 主管工程师Bryan Liles讨论了构建持续集成交付(CI/CD)管道的一系列原则。Liles 建议,应将 CI/CD 视为模式而非 Jenkins 或 Spinnaker 这样的具体实现;需要构建一种平台,它由独立于技术堆栈的可组合部分和可替换组件构成。


演讲一开始,Liles 介绍了会有多少企业按照传统的方式构建 CI/CD 管道,并阐明建立此类管道的目的是实现应用从开发环境到生产环境的迁移。交付过程在本质上就是从源代码管理方获取应用的代码,进而在管道中编译应用,形成工件并打包(bundle)存储在仓库中。最后,管道将打包文件交付给各个环境,例如开发、测试和生产。Liles 指出,如果交付管道看上去非常复杂,那么这意味着技术栈不应该再继续复杂下去了。


在 Liles 看来,工程人员应该将部署管道看成是一些可组合的块和模式,而非仅注重实际使用的 Jenkins 或 Spinnaker 等具体实现。例如,管道中的一部分可以是完成应用构建、运行测试和创建工件的集成块,该部分可以使用 Jenkins 实现,但也支持使用 Circle CI 等其他工具。管道中的另一个块可以部署应用、征求批准和执行数据迁移的交付过程。集成和交付块都具有一些相同的基本组件,例如 Webhook 触发器、工作流、通知和批准等。集成块和交付块是部署管道这一更大的可组合部分中的一部分。



Liles 提出:“必须更多地考虑系统的可组合性。”部署管道应该是一种将应用交付至指定目的地的应用发布“平台即服务”(PaaS)。Liles 建议将部署管道重新定义为可组合的 PaaS,工程人员可轻易更改其中的各个组件。该模式的典型例子就是 Kubernetes。作为构建平台的平台,部署管道可基于 Kubernetes 实现与上述集成块和交付块一样的基本组件,同时支持使用其它各种不同的工具。例如,集成部分可以使用TektonArgo实现触发器、工作流、通知和批准块。


Liles 进而指出,Jenkins、Spinnaker 或 ConcourseCI 之类的工具可用于定义如何构建 CI/CD 管道以及如何使用它们,但应在使用中汲取前车之鉴,避免入坑。由此,他建议应以破旧立新的思维去利用工具:


我们确实需要换种思维去使用各种工具。技术现状驱动我们到达了当前的位置,但这并非我们所需要的高度。我们应该拓展思维,破旧立新。


Liles 最后总结道,工具本身是复杂的,但从生态系统角度看,我们应致力于去构建更小且可组合的工具集。他建议工程人员琢磨一下如何共同改进生态系统,而不是沉溺于如何在现有工具上锦上添花。他认为自己提出的构建方式仅是抛砖引玉,“关注点应是更多地考虑系统中的可组合性。”


原文链接:


Reimagining CI/CD Pipelines as Composable Blocks with Bryan Liles


2020 年 4 月 18 日 09:001358

评论

发布
暂无评论
发现更多内容

读书笔记-MySQL

crush

MySQL

使用 RxJS 设计实现一个下载中心功能

laoergege

前端 RXJS

区块链电子合同应用平台,区块链存证系统

13530558032

《第一财经(月刊2021年02期)》

石云升

读书笔记 28天写作 2月春节不断更 第一财经

日记 2021年2月23日(周二)

Changing Lin

2月春节不断更

Protobuf源码解读之编解码

batman

protubuf zigzag varint

从事Java9年,27天熬夜把近年遇到的面试题收录成册全网开源!

程序员小毕

Java spring 程序员 面试 分布式

为了面试阿里巴巴、腾讯、字节跳动、京东、华为等大厂,我收集了8家大厂高频Java面试真题集锦(含答案)

Java架构之路

Java 程序员 架构 面试 编程语言

LiteOS:盘点那些重要的数据结构

华为云开发者社区

源码 数据结构 LiteOS LOS_DL_LIST Priority Queue

Java训练营第一周习题:01字节码分析

现实中游走

Java 字节码

话题讨论 | 技术从入门到熟练是怎样的?

happlyfox

话题讨论 28天写作

架构设计篇之微服务实战笔记(四)

小诚信驿站

架构师 刘晓成 小诚信驿站 28天写作 架构师成长笔记

60K*17薪的面试题是什么样的,需要具备什么技术?首发“Java面试考点大全”

Java架构之路

Java 程序员 架构 面试 编程语言

教你如何优雅的改写“if-else”

华为云开发者社区

代码

IAR故障解决:由于找不到mfc140u.dll,无法继续执行代码

不脱发的程序猿

28天写作 二月春节不断更 IAR 软件故障 DLL库

从架构设计的演进来看,我们真的需要DDD

三石

DDD 软件架构 话题讨论

读懂框架设计的灵魂—Java反射机制

云流

Java 编程 架构

智慧组工党务解决方案,智慧党建系统

13530558032

趣谈哈希表优化:从规避 Hash 冲突到利⽤ Hash 冲突

百度Geek说

前端 测试 哈希表 hash 研发工具

【LeetCode】爱生气的书店老板Java题解

HQ数字卡

算法 LeetCode 28天写作 2月春节不断更

1月干货总结:EasyDL上线时序预测模型,文档翻译全新发布

百度大脑

产业实践推动科技创新,京东科技集团3篇论文入选ICASSP 2021

京东科技开发者

人工智能 机器学习 信号 语音识别

「产品经理训练营」第五章作业

Sòrγy_じò ぴé

产品经理训练营

做一个很出色的程序员

四猿外

Java 架构师 职场成长 程序员· 跳槽面试

农产品区块链溯源平台,区块链溯源方案

13530558032

用例的流程图

李钊悌

互联网员工下班时间曝光:所有的光鲜,都有加班的味道

不脱发的程序猿

996 28天写作 二月春节不断更 加班文化 互联网企业

基于simhash的文本去重原理

行者AI

Python hash

通俗易懂——Java中各种锁及其Java实现

Crud的程序员

Java 架构

深入理解 Web 协议(三):HTTP 2

vivo互联网技术

Web HTTP HTTP2.0

一篇学会RSA JavaScript加密,涉及OpenSSL

梁龙先森

JavaScript 前端 28天写作 2月春节不断更

Study Go: From Zero to Hero

Study Go: From Zero to Hero

如何以可组合块的方式重构CI/CD管道-InfoQ