天天看点

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

阿里云持续交付平台crp(continuous release platform)作为一款开发人员手里的居家旅行,杀人越货的利器,必然有其广泛的应用场景。本文将会演示如何在如何使用阿里云持续交付平台部署一个python应用。python作为一种脚本语言,经常与多种语言一起配合完成某些复杂的功能,与此同时,其强大的第三方库又进一步拓展了python的应用领域。

首先,需要在crp中创建新项目,点击创建新项目的按钮,输入新项目的名称,即可完成crp新项目的创建。项目创建完成后如图所示:

配置crp的工作流的第一步为创建工作流,在本文中,笔者采用的默认模板工作流。在工作流中,设置第一个节点的名称为python代码检出。在crp中,我们只需要在新建节点中配置代码更新的任务,即可完成代码更新的配置。该节点的配置如图所示:

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

完成了python代码检出,需要进行依赖文件的安装并且执行测试。在这一步中,笔者将第二个节点的名称设置为python测试,因为在crp中,编译、测试可以在一个任务中同时完成。具体做法如下:在第二个节点中新建一个“编译/测试”任务,根据项目的开发语言选择编译环境,再填写具体的依赖安装脚本以及测试执行指令,同时打开产出物上传的开关,将刚才运行的结果同时打包。该在线爬虫是使用python3.5开发的,同时依赖了爬虫框架scrapy,使用的是pip install安装依赖。因此该节点的配置如图所示:

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

紧接着,需要将python爬虫部署至服务器上,具体的做法是,从python测试节点拉出一个新的节点,并且添加任务为“部署”,然后输入部署目标主机的ip地址、部署路径、部署脚本以及进行机器授权。这里需要特别注意的是机器授权的流程,由于crp是通过ssh的方式对目标主机进行操作,因此需要在目标主机上添加authorized_keys的条目。具体的部署脚本如下:

笔者采用的是阿里云ecs主机,以该主机为例,python部署节点的配置如图所示:

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

至此,本项目的python部分的部署完毕,在线爬虫系统的数据部分已经成功部署至服务器,后续的工作是部署一个web展示模块,方便使用浏览器查看数据分析的结果。

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

页面展示模块采用的是node.js的express作为http服务器,配置的第一步也同样为拉出一个节点,命名为node代码检出,并且配置完node.js项目的git地址。该节点的配置如图所示:

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

完成node代码检出后,需要进行依赖文件的安装并且执行测试。在这一步中,笔者拉出一个新节点的名称设置为node安装依赖,并且新建一个“编译/测试”任务,根据项目的开发语言选择编译环境,再填写具体的依赖安装脚本指令,同时打开产出物上传的开关,将环境依赖同时打包。该服务器是使用node0.12开发的,同时依赖了express,使用的是npm install安装依赖。因此该节点的配置如图所示:

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

最后一个步骤为将node.js项目部署至服务器上,由于之前已经配置过部署任务,因此本次部署任务不需要重新添加公钥,只需要配置ip地址,部署路径以及部署脚本即可。具体的部署脚本如下:

该节点的配置如图所示:

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

至此,node工作流部署完毕,完整的工作流如图所示。

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇

分别触发刚才配置的两条工作流,等待其执行完毕。在执行完毕后,在浏览器中访问项目的url可以看到返回页面,证明crp的发布成功。只需要一次配置,以后均可以在提交代码后直接运行该工作流进行部署,真正实现,一键测试,一键发布。stop coding, start amazing!

云上持续交付实践系列3 --- Python 篇云上持续交付实践系列3 --- Python 篇