硬核干货——《中小企业 AI 实战指南》免费下载! 了解详情
写点什么

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

评论

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

学习总结

Anlumina

「架构实战营」

从实习到秋招成为一名安全工程师,我经历了什么

网络安全学海

面试 网络安全 信息安全 渗透测试 WEB安全

毕业总结

小智

架构训练营

TypeScript 之 Class(下)

冴羽

JavaScript typescript 翻译 大前端

透过全球首个知识增强千亿大模型,看到中国AI差异化发展之路

脑极体

日本公司诚招IT开发技术者

马农驾驾驾

Java c++ php Python 日语

「从0到1如何快速实现cli工具」

速冻鱼

大前端 cli JavaScrip 签约计划第二季 12月日更

第一模块作业

Anlumina

「架构实战营」

Git 报错:unable to update local ref

liuzhen007

28天写作 12月日更

架构实战 模块一作业

mj4ever

架构实战营

Rust 元宇宙 15 —— 细节和重构

Miracle

rust 元宇宙

第一周作业

lv

我所理解的微服务

gevin

微服务 微服务架构

彻底弄懂死锁

李子捌

Java、 28天写作 12月日更

基于云的技术架构设计实践-第5篇

hackstoic

数据分析 云原生 数据可视化 业务分析 签约计划第二季

架构实战营-模块1-作业

Pyel

「架构实战营」

我粗心,有救吗?

Justin

心理学 成长 28天写作

如何验证你的产品创意?

石云升

产品思维 28天写作 12月日更

Week1学习总结

guodongq

「架构实战营」

Hoo虎符研究院 | Arweave调研报告

区块链前沿News

Arweave Hoo虎符 虎符交易所 虎符研究院 去中心化存储

微信业务架构图&&“学生管理系统”毕业架构设计

guodongq

「架构实战营」

架构实战营模块1课后作业

墨宝

微信业务架构图&学生管理系统毕业架构设计

Spring

架构实战营

Spring AOP(一) AOP基本概念

程序员历小冰

spring aop 28天写作 12月日更

架构实战营三期--模块一作业

木几丶

架构实战营 #架构实战营

消费类电子线上问题定位,分析和解决落地

wood

硬件产品 28天写作 线上故障

记录-今年最骄傲的一件事(2)

将军-技术演讲力教练

模块一作业

whoami

「架构实战营」

Python Qt GUI设计:菜单栏、工具栏和状态栏的使用方法(拓展篇—2)

不脱发的程序猿

Python qt GUI设计 Qt Creator 菜单栏、工具栏、状态栏

GrowingIO Terraform 实践

GrowingIO技术专栏

运维 SRE Terraform 项目实践 资源编排

技术架构演进的思考

gevin

架构演进

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