写点什么

基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统

  • 2017-02-23
  • 本文字数:2096 字

    阅读完需:约 7 分钟

前言

在上一篇文章中讨论了容器服务提供的交付能力,在本文中我们将讨论如何从零搭建一个持续交付系统。

对于大多数公司而言,选择一个合适自己的持续交付系统是尤为重要的一件事情,不同的公司、不同的业务使用的场景也各不相同,因此要根据自己的业务场景与发展方向来选择合适的方案。根据不同的业务场景与交付方式,阿里云容器服务提供了三种不同的持续交付方案。

基于 Jenkins 的持续交付方案

(点击放大图像)

基于Jenkins 的持续集成和持续交付方案是所有方案中最灵活、能力最强的方式,但也是需要客户自主运维的方案。对于现有提供持续交付的SaaS 服务而言,很难既覆盖简单性与可扩展性。而对于定制化需求明显的开发者而言,开源的Jenkins 一直是持续交付系统的第一选择。容器服务为了让开发者可以更简单的使用Jenkins 进行容器交付,我们提供了容器服务的Jenkins 部署插件,可以直接在构建任务中推送Docker Compose 模板到容器集群;提供了Java、C++、Python、Nodejs、Golang 等语言的Jenkins Slave,开发者可以直接使用这些Slave 快速实现一个分布式集成的持续交付系统。在Slave 中内置了简单的容器集成流程,开发者可以通过配置的方式将一个完整的持续集成流程在Slave 中运行起来。

Jenkins 的方案是所有方案中,功能最强大的。之所以选择 Jenkins 作为容器服务支持的开源方案的原因在于:

  1. Jenkins 在国内的开发者中认可度较高,很多创业公司的自建持续交付系统的选择大部分都是 Jenkins,便于开发者可以在老的系统上直接进行容器化的持续交付。
  2. Jenkins 的能力远不止我们上文中提到的这些,良好的开源社区给 Jenkins 带来的反哺,让 Jenkins 可以通过插件的方式满足很多系统无法满足的场景,比如对于刚刚使用容器的客户可能会倾向于使用 Jenkins 的混合发布的方式,即将应用交付到容器服务的同时也交付到远程的虚机上,进行应用的灰度测试,逐步的迁移。
  3. Jenkins 拥有良好的扩展性,在开发 Jenkins 插件的时候,可以发现 Jenkins 内部实现机制几乎可以通过插件的方式让开发者扩展所需的任何一个位置,对于很多定制化场景而言,这会是选择 Jenkins 的决定性因素。
  4. Jenkins 拥有持续交付系统中最重要的也是最棒的流水线(pipeline)系统,在 Jenkins2.0 以上的版本中,内置了流水线(pipeline)的支持,这表示了未来 Jenkins 在持续集成与持续交付领域的发展趋势与能力。

基于 CRP 的持续交付方案

(点击放大图像)

CRP 是阿里云推出的一款提供持续集成与持续交付功能的 SaaS 服务。同常见的持续交付系统类似,CRP 也提供了一个可扩展的流水线。开发者可以将自己的持续集成与持续交付流程转换为一条 DAG 图的流水线(pipeline)。比如在本文中提供了一个简单的容器化的持续交付的流水线定义。分为五个阶段:代码检出、集成测试、镜像构建、推送镜像、部署应用。每次提交代码,代码仓库都会触发 CRP 进行持续集成,运行用户预定义的流水线(pipeline),测试不通过则重新集成,测试通过则开始应用部署。

这种集成方式的覆盖了高质量和可扩展两个方面,但是 CRP 作为一个通用的持续交付平台,提供的可扩展性有限、而且测试的基础环境种类有限。对于复杂的多技术栈的微服务系统而言,灵活度不足。但是对于系统技术栈统一、持续交付需求简单的客户而言,CRP 是一个值得推荐的方式。

基于 Hub 的持续交付方案

(点击放大图像)

基于Hub 的持续交付方案是最简单的持续交付方案,开发者无需搭建任何服务,可以直接通过在镜像仓库与容器服务中配置触发器的方式完成应用的自动更新。持续交付的本质是如何可扩展、高质量、快速的进行交付。高扩展就要求持续交付系统有良好的流水线(pipeline)的设计,高质量则要求开发者有覆盖充分的测试脚本以及持续交付系统可以标准化的组织这些脚本并运行,而快速则是这三个要素中最简单的,而基于Hub 的方案对于很多场景来讲功能上是有缺欠的,但是在速度上是有优势的。用户提交代码后会自动触发容器hub 的镜像自动构建,构建完毕后会触发容器服务的自动重新部署实现应用的更新。

这种方案特别适合在测试环境中快速迭代联调的应用场景,虽然在标准的持续集成中测试是必不可少的一环,但是在实际的开发联调的过程中,全量的自动化测试也会给迭代速度带来一些阻碍,因此如果追求快速迭代并且测试的需求不是很强烈的场中,可以考虑直接使用基于Hub 的持续集成方案,简单、高效。

尾声

在上文中,我们介绍了三种不同的持续交付方案,开发者可以根据自己的需求选择其中任意一种从零开始进行容器化的交付之路。但是无论哪种方案,都需要进行取舍,选择最符合业务形态的持续交付系统才是最重要的。

个人简介

莫源,阿里云高级研发工程师。在加入阿里巴巴之前,先后在北京天方地圆科技有限公司、微软亚洲研究院任职。现主要负责阿里云容器服务产品的底层服务发现系统、集群管理系统的研发,从事容器的持续交付、持续集成的方案的设计与实现。在云计算、分布式系统、图像识别与虚拟现实方向有多年的开发经验。


感谢木环对本文的审校。

给InfoQ 中文站投稿或者参与内容翻译工作,请邮件至 editors@cn.infoq.com 。也欢迎大家通过新浪微博( @InfoQ @丁晓昀),微信(微信号: InfoQChina )关注我们。

2017-02-23 16:157814

评论

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

Soul 云原生网关最佳实践

阿里巴巴中间件

阿里云 云原生 实践 云原生网关

新思科技为三星SDS公司开源使用和风险管理提供自动治理解决方案

InfoQ_434670063458

开源 软件开发 新思科技 软件安全

小程序容器作为软件中间件技术不可忽视的价值

FinFish

小程序容器 小程序技术 软件中间件

下一站,冠军|走进2022 OceanBase数据库大赛12强

OceanBase 数据库

数据库 oceanbase

2022 IoTDB Summit:阿里白渐《迈向物联网时代大数据计算平台——MaxCompute 基于IoTDB构建解决方案》

Apache IoTDB

大数据 时序数据库 IoTDB

软件测试/测试开发 | 测试平台开发-前端开发之Vue.js 框架的使用

测试人

BaseAdapter优化

芯动大师

ConversionService baseadapter viewholder

Apache IoTDB v1.0.1 发布|修复分区计算,优化集群启停流程

Apache IoTDB

IoTDB

使用metrics-server监控k8s的资源指标

tiandizhiguai

DevOps 微服务 云原生 k8s

ChatGPT潜能很大,问题也是

引迈信息

人工智能 低代码开发 应用开发 ChatGPT JNPF

Tuxera NTFS2023版读写NTFS磁盘功能工具

茶色酒

Tuxera NTFS2023

微服务引擎 MSE 企业版全新升级

阿里巴巴中间件

阿里云 微服务 云原生

为企业全方位解决进销存管理难题的ERP套件

力软低代码开发平台

重磅通知!OpenAI又放大招:官宣开放API接口-3.5版本 需求大涨,机遇与挑战并存,谁能拔得头筹?

加入高科技仿生人

人工智能 开源 openai ChatGPT

数据库革新拐点已来——MatrixOne Beta Program Recap

MatrixOrigin

云原生 分布式数据库 MatrixOrigin MatrixOne

软件测试/测试开发 | 测试平台开发-前端开发之Vue router路由设计

测试人

软件测试 测试开发 测试平台

纵存科技加入龙蜥社区,共建高性能存储软件栈

OpenAnolis小助手

开源 合作伙伴 龙蜥社区 CLA 纵存科技

首批!阿里云容器服务 ACK 顺利通过信通院云原生混部项目评估

阿里巴巴中间件

阿里云 容器 云原生

ChatGPT辅助编程

鲸品堂

ChatGPT 企业号 3 月 PK 榜

使用 Pulumi 打造自己的多云管理平台

亚马逊云科技 (Amazon Web Services)

Amazon S3

新思科技发布《2023年开源安全和风险分析》报告

InfoQ_434670063458

开源 新思科技 软件安全

软件测试/测试开发 | 一步一步学测试平台开发-Vue restful请求

测试人

软件测试 自动化测试 测试开发 测试平台

隐私计算技术路线介绍及对比

隐语SecretFlow

隐私计算

更高效、更实用的跨端开发选择

FinFish

flutter finclip 小程序容器 跨端框架

基于Python+UIautomation的WindowsGUI自动化测试实战(一)-记事本

自动化测试 GUI UIaotumation

基于Python+UIautomation的WindowsGUI自动化测试实战(二)-计算器

Python 自动化测试 GUI UIaotumation

what量化合约系统开发&源码丨clear合约量化系统开发技术(Demo案例)

I8O28578624

ICLR 2023 | 网易伏羲3篇论文入选,含强化学习、自然语言处理等领域

网易伏羲

OpenKruise 开发者不容错过的带薪实习机会!马上加入 LFX Mentorship 计划

阿里巴巴中间件

阿里云 开源 云原生 OpenKruise

BI工具数据看板对比:瓴羊Quick BI与Smart BI

流量猫猫头

基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统_DevOps & 平台工程_莫源_InfoQ精选文章