2018年1月15日,阿里云开发者应用产品CodePipeline(商业化)正式发布。它是一款提供持续集成/持续交付能力,并完全兼容Jenkins的能力和使用习惯的SAAS化产品。通过使用阿里云CodePipeline,您可以方便的在云端实现从代码到应用的持续集成和交付,方便您快速的对您的产品进行功能迭代和演进。
产品功能及优势
1. 与多套源代码管理平台集成:可以与GitHub、Bitbucket、阿里云Code等平台无缝集成获取源码。
2. 代码编译&单元测试:目前提供Java,Nodejs,PHP,Python,Python2/3,Go开发语言的编译&UT能力。
3. 部署到ECS环境: 提供通过开源Slat协议的通道,部署代码编译构建产物到ECS,或VM环境之中;并支持使用Packer创建ECS镜像场景。
4. 提供容器化集成解决方案:可以独立支持Docker镜像编译,同时支持通过阿里云容器镜像服务进行编译和安全检查,并与阿里云容器服务打通,能够通过CodePipeline自动发布到容器服务的Kubernetes集群中,目前支持蓝绿/灰度发布等多种发布方式。
5. DevOps 实践: 能够通过自动化构建、测试和发布流程,通过运行一整套一致的质量检查提高软件更新的速度和质量。让我们的理念教育有产品基础。
产品架构
CodePipeline产品的系统架构和业务关系如下图所示,您配置执行的任务大致分为两类,编译/测试类任务和部署类任务,PipelineService如同调度器,将分别将您的任务下发到不同的任务集群工作。
· 编译/测试类任务通过沙箱式运行时环境资源池进行,每次任务执行的数据均在容器环境中,环境不会存储数据,任务的结果(比如编译构建的产物)会上传到您的OSS中管理。
· 部署类任务目前支持ECS类环境和容器类环境,同样会通过Deploy Service向您的运行环境下发指令,拉取存储在您拥有的OSS上的部署产物进行发布。
场景拼装介绍:
如下图所示,容器化持续交付解决方案。 在开发人员提交代码到源代码管理平台之后,持续集成服务会拉取代码进行构建,可以通过编译服务进行docker build,或通过容器镜像服务进行,在Build后可以对Docker镜像进行测试,在测试通过后通过使用容器服务的插件进行部署。
在这个过程中,CodePipeline扮演了CI和CD Service,同样您的运行环境也可以是ECS环境,VM等。
应用场景
· 通过CodePipeline,可以帮助您完成从代码提交到应用部署的DevOps完整流程,确保只有通过自动测试的代码才能交付和部署,高效替代业内部署复杂、迭代缓慢的传统方式。
· 与阿里云容器服务深度集成,不仅能够提供Docker Image的构建,和阿里云镜像服务打通支持安全扫描,并能够和容器服务打通做到Docker容器化应用的自动化持续交付,更多场景和实践文章参考
· 基于开源自动化运维软件Salt,能够将应用轻松部署发布到ECS环境及独立可访问到的操作系统环境中。