基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统-阿里云开发者社区

开发者社区> 小旋风柴进> 正文

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

简介: 前言 在上一篇文章中讨论了容器服务提供的交付能力,在本文中我们将讨论如何从零搭建一个持续交付系统。 对于大多数公司而言,选择一个合适自己的持续交付系统是尤为重要的一件事情,不同的公司、不同的业务使用的场景也各不相同,因此要根据自己的业务场景与发展方向来选择合适的方案。
+关注继续查看

前言

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

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

基于Jenkins的持续交付方案



20.png

基于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的持续交付方案


21.png

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

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

基于Hub的持续交付方案


22.png

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

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

尾声

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

版权声明:本文内容由阿里云实名注册用户自发贡献,版权归原作者所有,阿里云开发者社区不拥有其著作权,亦不承担相应法律责任。具体规则请查看《阿里云开发者社区用户服务协议》和《阿里云开发者社区知识产权保护指引》。如果您发现本社区中有涉嫌抄袭的内容,填写侵权投诉表单进行举报,一经查实,本社区将立刻删除涉嫌侵权内容。

相关文章
netty系列之:搭建客户端使用http1.1的方式连接http2服务器
对于http2协议来说,它的底层跟http1.1是完全不同的,但是为了兼容http1.1协议,http2提供了一个从http1.1升级到http2的方式,这个方式叫做cleartext upgrade,也可以简称为h2c。 在netty中,http2的数据对应的是各种http2Frame对象,而http1的数据对应的是HttpRequest和HttpHeaders。一般来说要想从客户端发送http2消息给支持http2的服务器,那么需要发送这些http2Frame的对象,那么可不可以像http1.1这样发送HttpRequest对象呢? 今天的文章将会给大家揭秘。
52 0
超大型系统的持续集成与持续交付解决方案与阿里宙斯盾
敏捷研发模式在小型团队中能够帮助开发人员进行快速迭代开发,但是对于大型团队而言,敏捷研发模式却并不能发挥应有的效果。那么如何实现超大型系统的持续集成与持续交付呢?本文就为你揭晓答案。
8461 0
基于容器服务的持续集成与云端交付(三)- 从零搭建持续交付系统
前言 在上一篇文章中讨论了容器服务提供的交付能力,在本文中我们将讨论如何从零搭建一个持续交付系统。 对于大多数公司而言,选择一个合适自己的持续交付系统是尤为重要的一件事情,不同的公司、不同的业务使用的场景也各不相同,因此要根据自己的业务场景与发展方向来选择合适的方案。
8298 0
基于容器服务的持续集成与云端交付(二)- 多维度打磨交付能力
前言 在上一篇中,和大家一起讨论了传统软件交付的问题、持续交付的难点、以及为什么云端的容器交付可以协助大家快速的持续交付。 但是当真正的将一个系统通过云端容器交付的时候会发现不能单纯的将Docker作为一种交付工具来对待,更多的时候是作为一个交付平台的基础设施来看待,还需要关心的是使用Docker后网络、存储、安全、性能、监控等等不同方面带来的变革。
2394 0
基于容器服务的持续集成与云端交付(四)- 多种发布方式
前言 哲学有各种各样的流派,百家争鸣,但是只有一个哲学问题是严肃的,那就是生与死。而云端交付过程中也只有三个问题是严肃的。 如何重建你的系统 How to recreate your system? 如何安全地部署你的系统 How to safely change your system? 部署后的问题监控与解决 When something has gone wrong? 在前面的文章中,我们讲述了什么是云端交付,如何搭建从零搭建一个持续交付系统,而今天我们要谈的是如何安全的部署你的系统,部署这个名词包含了很多的含义,最简单的解释就是如何让你的程序运行在最终的环境上。
8152 0
SIP协议&开源SIP服务器搭建和客户端安装
1. SIP SIP 是一个应用层的控制协议,可以用来建立,修改,和终止多媒体会话,例如Internet电话 SIP在建立和维持终止多媒体会话协议上,支持五个方面: 1)   用户定位: 检查终端用户的位置,用于通讯。
10643 0
Docker容器可视化监控中心搭建
一个宿主机上可以运行多个容器化应用,容器化应用运行于宿主机上,我们需要知道该容器的运行情况,包括 CPU使用率、内存占用、网络状况以及磁盘空间等等一系列信息,而且这些信息随时间变化,我们称其为时序数据
1815 0
2736
文章
6591
问答
文章排行榜
最热
最新
相关电子书
更多
《2021云上架构与运维峰会演讲合集》
立即下载
《零基础CSS入门教程》
立即下载
《零基础HTML入门教程》
立即下载