FIT2CLOUD持续集成和部署流程概述


一、流程概述

FIT2CLOUD有一套高效、稳定的持续集成和部署体系,包括版本控制服务,Jenkins,Artifacts仓库和FIT2CLOUD等组件,通过下图可以从整体上了解FIT2CLOUD持续集成和部署的体系和流程。

FIT2CLOUD持续集成和部署框架体系

FIT2CLOUD持续集成和部署整体上由5步组成:

  1. 提交代码到版本控制服务器。这里我们以 Git 为例,实际上我们同样支持 CVS,SVN 等。

  2. 持续集成服务器构建代码。我们推荐用户使用 Jenkins 作为持续集成服务器,Jenkins向版本控制服务器获取到代码后完成构建工作。我们会在安装和配置 Jenkins中,为大家详细介绍配置方法。

  3. 上传构建结果到 Artifacts 仓库。目前 FIT2CLOUD 支持 Nexus(一个开源Maven Repo) 和阿里云 OSS 作为 Artifacts 仓库,你可以使用 FIT2CLOUD 发布的 Jenkins 插件,在构建后自动把构建結果上传到 OSS 中,或者使用 Jenkins 提供的 Maven 插件上传到 Nexus 仓库。整个上传过程完全自动化,并与 Jenkins 的构建过程整合在一起,非常快捷,高效。 我们会在 自动打包上传到Nexus中详细介绍如何上传到Nexus仓库,在自动打包上传到阿里云OSS中详细介绍如何使用OSS插件或命令行工具上传到阿里云OSS。
    注:目前 FIT2CLOUD 为方便用户自动打包上传到 OSS,已经发布并开源了阿里云 OSS Jenkins 插件,具体内容请查看 OSS Jenkins 插件

  4. 触发 FIT2CLOUD 代码部署。在构建结果上传到 Artifacts 仓库后,你可以选择使用FIT2CLOUD的代码部署插件自动注册应用版本并触发部署代码,或者手动到FIT2CLOUD控制台进行版本注册和代码部署。我们会在 通过FIT2CLOUD触发代码部署中详细介绍如何在FIT2CLOUD控制台进行版本注册和代码部署,在通过Jenkins触发代码部署中详细介绍如何使用CodeDeply插件自动触发代码部署。

  5. FIT2CLOUD 主要承担环境创建、代码部署引擎和服务监控的职责。通过FIT2CLOUD,用户可以导入已有主机,或者创建主机,以应用为角度对主机进行分组管理并完成基础环境配置等。FIT2CLOUD部署引擎将执行代码部署,按照用户预先定义的事件脚本来实现自动化部署。部署完成后, 通过 FIT2CLOUD 全面并可定制的监控功能,对服务的运行情况进行监控,实现快速反馈。

基于这个流程,用户可以做到提交代码后无需任何人工操作,即可完成全部部署工作,做到一键式持续集成和部署。如需要进一步了解我们的流程,请查看我们发表在InfoQ上面的文章:<<持续交付:当前普遍存在的三个问题与解决方案>>

二、FIT2CLOUD代码部署规范

FIT2CLOUD代码部署和AWS CodeDeploy类似,我们兼容AWS CodeDeploy所定义的应用部署包格式。 和传统部署方式相比,FIT2CLOUD和AWS代码部署的特点是:

1. 应用代码和部署脚本是一体的

如下图所示,应用artifact zip包中除了包括WordPress应用代码外,还包括appspec.yml和scripts目录。appspec.yml文件定义了这个应用是如何进行部署的,部署中要执行的脚本则放在scripts目录下面。

alt

2. 采用SOA/微服务架构,支持各个应用的局部独立部署

关于CodeDeploy更深入的原理,请参考我们发表在InfoQ的文章<<剖析CodeDeploy>>

或者,可以参考AWS 官方提供的 CodeDeploy 介绍视频: 视频地址

这里, 我们通过一个简单的Web应用为例介绍FIT2CLOUD代码部署规范的要求。(请参考我们在GitHub上面的示例工程: Demo

这个工程中关键文件包括:

  • pom.xml 和 assembly.xml: 我们使用maven来打包应用artifact。
  • appspec.yml: 这个文件定义了应用部署中各个事件hooks所绑定的脚本。
  • scripts/*.sh等: 这个目录中包括应用部署过程中各个时间发生时所需要执行的脚本。

我们提供了一些其他平台的简单的代码部署示例应用,具体信息如下: