开工福利|免费学 2200+ 精品线上课,企业成员人人可得! 了解详情
写点什么

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

  • 2020-04-18
  • 本文字数:1065 字

    阅读完需:约 3 分钟

如何以可组合块的方式重构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-04-18 09:001832

评论

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

数据结构学习,串篇(顺序串及算法)

IC00

学习 数据结构 算法 学习笔记 10月月更

喜迎华诞,openEuler 22.09 正式发布,与1265名开发者共建面向数字基础设施的开源操作系统

openEuler

开源 开源操作系统 open Euler

Qt | 本地存储配置信息 QSettings

YOLO.

qt 10月月更 C++

中软鸿联:集聚智能化能量势场,点燃小家电创新星火

中软国际AIoT开发者社区

智慧家电

行业大咖秀,第二期开播!

云计算

从零开始实现一个Promise

helloworld1024fd

JavaScript

都说复盘能力很重要,如何复盘更有效?Superset你值得拥有

王中阳Go

Code Review BI 分析工具 项目复盘 Superset 10月月更

重磅 ! Redis+Nginx+JVM+设计模式+Spring全家桶+Dubbo

程序知音

Java 数据库 spring JVM 后端技术

NFT 数据基础设施 NFTScan 的产品介绍【科普】

NFT Research

区块链 NFT 数据基础设施

【Go微服务】开发gRPC总共分三步

王中阳Go

微服务 gRPC RPC #go 10月月更

一条 SQL 语句是如何执行的

说故事的五公子

MySQL 数据库 sql

2022互联网母婴行业用户洞察

易观分析

互联网 母婴

ctk流程

留白的艺术

Qt示例 | 模拟时钟示例 Analog Clock Example

YOLO.

qt 10月月更 C++

云原生时代的DevOps平台设计之道

北京好雨科技有限公司

springboot + redis多数据源 + jedis集群模式

try catch

redis springboot spring Boot Starter redis cluster redis多数据源

synchronized 和 ReentrantLock 的区别

zarmnosaj

10月月更

全息投影正在威胁LED显示屏在舞台的地位

Dylan

LED显示屏 led显示屏厂家

堡垒机推荐厂商当属哪家?为什么?咨询电话多少?

行云管家

网络安全 信息安全 数据安全 堡垒机

STM32L051测试 (五、串口测试 — 与Enocean模块通讯问题)

矜辰所致

stm32 串口通信 STM32L051 10月月更

手撕常见JS面试题

helloworld1024fd

JavaScript

大学毕业后转行软件测试我后悔了

测吧(北京)科技有限公司

测试

电子表格也能做购物车?简单三步就能实现

葡萄城技术团队

前端 在线excel 应用系统 控件

真机调试设备不够?荣耀云调试帮你忙

荣耀开发者服务平台

开发者 手机 云服务 荣耀 honor

直播预告|Apache APISIX x KubeSphere 在线 Meetup 来袭

API7.ai 技术团队

APISIX KubeSphere

MASA Framework的异常处理

MASA技术团队

.net MASA Framewrok MASA

C# ref用法,实现引用传递(地址传递)

IC00

C# 学习 程序员 上位机 10月月更

写个JS深拷贝,面试备用

helloworld1024fd

JavaScript

开奖啦!看看 9 月月更获奖名单有没有你?

InfoQ写作社区官方

热门活动

基于纯前端类Excel表格控件实现在线损益表应用

葡萄城技术团队

前端 Excel 报表

公网对讲SDK| 快速搭建公网对讲应用

anyRTC开发者

音视频 监听 快对讲 AI降噪 录音

如何以可组合块的方式重构CI/CD管道_软件工程_Christian Melendez_InfoQ精选文章