FIT2CLOUD发布Jenkins代码部署插件,帮助用户实现持续集成和部署

发布于 2015年10月05日

作者:张博瀚

如何更简便、更快捷地将代码转化为服务,这是一直困扰着每一个开发和运维人员的问题,FIT2CLOUD也一直努力为开发和运维人员提供更好的解决办法。经过一轮紧张的开发,FIT2CLOUD发布并开源了Jenkins代码部署插件。结合该插件FIT2CLOUD用户可以更加高效地完成代码提交后的一系列构建和部署工作,以极高的效率实现项目的持续集成和部署。

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

在开始使用FIT2CLOUD进行持续集成和部署前,我们先通过一张图来简单介绍一下FIT2CLOUD持续集成和部署框架体系:

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

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

2. 持续集成服务器构建代码。我们使用Jenkins作为持续集成服务器,Jenkins向版本控制服务器获取到代码后完成构建工作。

3. 上传构建结果到Artifacts仓库。目前FIT2CLOUD支持Nexus阿里云OSS作为Artifacts仓库,用户可以使用FIT2CLOUD发布的Jenkins插件,在构建后自动把构建结果上传到OSS中,或者使用Jenkins提供的Nexus插件上传到Nexus仓库。整个上传过程完全自动化,并与Jenkins的构建过程整合在一起。

4. 触发FIT2CLOUD代码部署。这部分正是FIT2CLOUD发布的Jenkins代码部署插件进行的工作,也是本文着重介绍的部分。在构建结果上传到Artifacts仓库后,代码部署插件会自动向FIT2CLOUD注册新的应用版本信息并触发代码部署。后续我们会一步步详细的介绍如何安装和使用代码部署插件。FIT2CLOUD这款插件在帮助用户提高持续集成效率上有两方面的意义:

  • 打通构建工具和部署工具之间的阻隔,使Jenkins和FIT2CLOUD无缝地结合在一起,从构建到部署不再是两个割裂的体系。
  • 消除构建完成后到开始部署这个过程中的人工干预。如何能够降低人工干预,把工作交由自动化程序来执行,这一直DevOps所追求的,FIT2CLOUD也一直在努力的做到这一点。

5. 结合FIT2CLOUD强大的混合云管理能力,用户可以自动创建集群、配置基础环境,并通过代码部署功能,快速把代码部署到指定集群和虚机组上,实现不同环境的无缝切换。

通过FIT2CLOUD及相关配套插件,可以在提交代码后无需任何人工操作即自动完成全部部署工作,做到一键式持续集成和部署。

二、安装说明

用户在安装好本地Jenkins服务器后即可以按照如下方式开始安装FIT2CLOUD代码部署Jenkins插件。

  • 下载插件:地址
  • 安装插件: 请到【系统管理】->【插件管理】->【高级】->【上传插件】页面,上传hpi文件 安装完毕后需要重新启动Jenkins。安装成功后,在已经安装插件列表中会显示,如下图:

在成功安装完FIT2CLOUD代码部署插件后,用户还需要做一项配置,让其能够访问FIT2CLOUD。具体如下:

  • 用户使用自己的账号登陆FIT2CLOUD,点击页面右上角用户账号信息以展开用户菜单列表,选择【账号信息】菜单项,即可获取当前用户使用API访问FIT2CLOUD的配置信息。如下图:
  • 打开Jenkins首页,进入【系统管理】->【系统设置】->【FIT2CLOUD账号设置】页面,配置上一步获取的Consumer KeySecret Key 和 API EndPoint。如下图:

如前所述,整个代码部署流程需要让Jenkins在构建完成后自动把当前构建产生的Artifacts上传到部署包仓库中去。目前,FIT2CLOUD支持Nexus和阿里云OSS这两种类型代码仓库。在本示例中选择Nexus做作为部署包仓库,具体请参考【自动打包上传到Nexus】。如果用户希望使用阿里云OSS作为部署包仓库,则需安装并配置我们的另外一个Jenkins插件Aliyun-OSS plugin for Jenkins。具体请参考【在Jenkins持续集成方案中使用阿里云OSS作为Artifacts仓库】。

三、使用示例

下面我们以f2c-codedeploy-demo项目为例,为大家讲解如何在Jenkins中进行配置。f2c-codedeploy-demo是一个简单的FIT2CLOUD代码部署示例项目(详情见GitHub地址),用户可以参考它来部署自己的项目。

1. 准备运行环境

为完成整个示例程序的代码部署流程,首先需要准备运行程序的主机并在FIT2CLOUD中对它们进行管理。具体如下:

  • 在FIT2CLOUD控制台创建用于示例的集群(如“ecommerce-demo”)以及运行如上示例程序的虚机组(如“web”)

  • 在创建的虚机组中启动(或者导入)用于运行示例程序的一组主机。为了演示FIT2CLOUD代码部署的不同部署策略,请选择至少两台主机来独立运行上面的示例程序。如下图:

2. 配置代码部署

为使用FIT2CLOUD代码部署功能部署示例程序,需要提前完成代码部署相关的配置工作。具体如下:

  • 进入FIT2CLOUD控制台,选择【代码部署】->【应用管理】,进入应用管理界面。为本示例新建一个需要部署的应用程序(例如,ecommerce-web),如下图所示。
  • 进入FIT2CLOUD控制台,选择【代码部署】->【仓库管理】,进入仓库管理界面。为本示例程序新建一个部署仓库(例如,ci-demo-nexus-repo),用来获取对应的部署包。具体配置如下图

如前所述,本示例使用Nexus作为部署包仓库,并在其中配置如何把Jenkins构建产生的Artifacts上传到该仓库中。这里的仓库管理配置就是指定相应安装包下载的地址,所以仓库管理的配置和Artifacts上传配置想匹配。

3.配置Jenkins Job

在完成基本环境准备和代码部署相关配置之后,就可以对于Jenkins Job进行配置,以触发从代码构建到代码部署整个流程。

  • 增加构建后操作步骤下面选择【FIT2CLOUD代码部署】。如下图:
  • 配置FIT2CLOUD代码部署。目前,FIT2CLOUD代码部署插件提供如下配置项:
配置项名称配置项说明
仓库名称FIT2CLOUD中对应的仓库名称
应用名称FIT2CLOUD中对应的应用名称
应用版本名称将会注册到FIT2CLOUD中的应用版本的名称,应用版本名称需要动态变化,以防出现版本名重复的问题。我们推荐的应用版本名为:V${POM_VERSION}-Build_${BUILD_NUMBER}
应用版本存放路径应用版本安装包在仓库中的下载地址,支持使用Jenkins内部变量,如:${BUILD_NUMBER} ${POM_VERSION}
备注版本描述信息,该信息会用于在FIT2CLOUD内描述自动注册的应用版本
目标集群名称FIT2CLOUD中将要进行部署的集群名称
目标虚机组名称FIT2CLOUD中将要进行部署的虚机组名称
目标虚机IdFIT2CLOUD中将要进行部署的虚机Id
部署策略FIT2CLOUD中对应的部署策略,可以选择“单台依次部署”、“半数分批部署”和“全部同时部署”三种策略

"应用版本存放路径"配置项注意事项:

  • 如果为OSS仓库,不需要填写OSS下载地址的Endpoint部分,例如:http://f2c.oss-cn-hangzhou.aliyuncs.com/ci-demo-app/1.0/ci-demo-app.zip,则填写内容为:${POM_ARTIFACTID}/${POM_VERSION}/${POM_ARTIFACTID}.zip
  • 如果为nexus仓库,下载地址为全路径。例如:http://some-location/ci-demo-app/1.0/ci-demo-app-1.0-13.zip,则填写内容为:http://some-location/${POM_ARTIFACTID}/${POM_VERSION}/${POM_ARTIFACTID}-${POM_VERSION}-${BUILD_NUMBER}.zip

结合之前的环境准备和配置参数,本示例配置如下图:

执行结果

完成配置后,我们就可以使用Jenkins来构建代码。代码构建完成后会自动将新的应用版本信息注册到FIT2CLOUD并自动开始部署。其中,Jenkins中的执行结果输出,如下图:

触发代码部署成功后,可以登录FIT2CLOUD控制台查看整个部署结果。

  1. 首先,进入应用管理界面(【代码部署】->【应用管理】),点击“ecommerce-web”应用最右边的应用版本信息进入版本列表,可以看到新构建产生的Artifacts已经成功注册成为一个新版本,如下图:
  1. 其次,进入部署记录页面(【代码部署】->【部署记录】),可以看到新版本已经成功部署到之前配置的机器组上。

点击 [详细信息] 可以查看每台虚机的部署事件,如下图:

总结

随着FIT2CLOUD代码部署Jenkins插件的发布,利用FIT2CLOUD及其周边工具已经可以全自动化地完成从代码到最终服务的整个交付流程,真正帮助工程人员实现快速部署和应用交付。一如既往,我们非常期待您的试用。如果在使用过程中遇到任何问题都可以联系我们(support@fit2cloud.com),也欢迎提供任何反馈和建议。