写点什么

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

评论

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

资本之外,区块链破圈正当时

CECBC

区块链

十四五期间我国区块链技术趋势特征分析

CECBC

区块链 大数据

百度Hydra工具在移动端UI兼容性测试上的高效应用

百度Geek说

测试 UI

5.state更新流程(setState里到底发生了什么)

全栈潇晨

React React Hooks react源码

6.render阶段(厉害了,我有创建Fiber的技能)

全栈潇晨

React React Hooks react源码

元旦立下的Flag,春节后该如何实现?

脑极体

如何读懂CNN、BBC、经济学人、卫报、纽约时报?看完这本经典即可事半功倍!

wbliu85

学习 英语

腾讯云大神用这份“redis深度笔记”把Redis入门到精通全部精髓全部展现出来了

redis 架构 计算机

最新Hadoop的面试题总结

大数据老哥

使用 Tye 辅助开发 k8s 应用竟如此简单(三)

newbe36524

Docker 微服务 k8s dotnet

linux内核协议栈 邻居协议之ARP协议处理初始化

赖猫

Linux 协议栈 Linux内核

TCP 协议灵魂问题,巩固你的网路底层基础

技术需求文档,应当这么写!

穿甲兵

需求 文档

翻译:《实用的Python编程》01_06_Files

codists

人工智能 后端 python 爬虫 数据结构与算法 文件操作

DPDK大页内存原理

赖猫

Linux DPDK

GitHub上爆火的Java性能优化100+小技巧!(干货建议收藏)

Java架构师迁哥

电信的标准化组织

Geek_古藤模根

标准化 电信

让虞书欣、李诞拍到停不下来!AR+AI双引擎的互动小游戏,如何打开IP新玩法?

爱奇艺技术产品团队

地表建筑物识别Dayo1

IT蜗壳-Tango

七日更 2月春节不断更

Elasticsearch Search API 基础语法

escray

elastic 七日更 死磕Elasticsearch 60天通过Elastic认证考试 2月春节不断更

前端学习总结,经验分享,项目经验分享过程

我是哪吒

学习 程序员 Vue 大前端 2月春节不断更

01 | Mysql基础架构

zach

MySQL

区块链难在落地,亟需补人才缺口迎爬升期

CECBC

区块链

诊所数字化:诊所医护人员绩效指标评估方式

boshi

绩效 数字化转型 医疗 七日更

真牛皮!2021最新Android大厂面试真题大全,BAT大厂面试总结

欢喜学安卓

android 程序员 面试 移动开发

温故而知新!腾讯Android开发面试记录,薪资翻倍

欢喜学安卓

android 程序员 面试 移动开发

如何提升网页核心指标

Vincent

15. Python 程序运行速度如何提高十倍?第一遍滚雪球学 Python 收工

梦想橡皮擦

Python 2月春节不断更

探究Python源码,终于弄懂了字符串驻留技术

华为云开发者联盟

Python 字符串 Python解释器 字符串驻留 字符

一、MongoDB简介

Kylin

数据库 mongodb 学习 七日更 二月春节不断更

【LeetCode】K 连续位的最小翻转次数Java题解

Albert

算法 LeetCode 2月春节不断更

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