author:郁燕飞
createTime:2022
# 自动部署测试方案
- 自动部署流程与简介
在原先自动编译打包的基础上添加自动部署流程。流程大致如下:研发工程师提交代码至svn-》研发工程师在禅道创建版本-》Python爬虫脚本获取禅道上版本发布的信息-》触发Jenkins开始编译、打包、上传ftp、部署、自动化接口测试流程-》Jenkins根据具体的编译结果邮件通知研发工程师、测试工程师,并附带编译日志和测试结果。
- 自动化部署环境要求
一台编译服务器,具有Jenkins服务、k8s master节点、python3环境、docker环境、配备各种编译环境。
一台部署服务器,具有k8s node节点,docker环境。
一台私有仓库服务器,docker环境。
# 创建Jenkins项目进行自动编译、部署
- Jenkins安装配置完成时,访问页面
点击新建任务
- 任务名称填项目编号,选择流水线,最后点击确定
- 构建触发器选择触发远程构建,在身份验证令牌里填写在用户-》设置中配置的API Token
- 选择Pipline script from SCM,配置jenkinsfile的svn路径,配置svn账户,选择Use 'svn update' as mush as possible
此处脚本名称应与脚本路径文本框中内容一致
这样便完成了一个项目的创建
# Jenkins流水线脚本解析
Jenkins 2.0具有pipeline as code的特点,可以从代码库读取脚本然后直接建立项目,由于目前使用爬虫获取更新信息从而远程触发构建,暂时无法完全实现该功能。目前的方案是为每个项目配置一个Jenkinsfile,每次创建项目时配置svn路径,则会在每次触发构建是拉取Jenkinsfile进行构建。
目前项目的流水线脚本包括如下三个流程:
- 编译流程
主要执行编译脚本。根据编译脚本的返回结果判断是否编译成功,编译成功进行下一个阶段;编译失败,发送邮件通知相关人员并发送编译日志。
- 部署流程
用于部署程序。使用k8s 运行一个隔离的环境。包含docker镜像拉取、启动等操作。然后对程序的监听端口进行检测,检测成功则进行下一步流程;若在10分钟内,始终检测不到该端口,则判断部署失败,发送邮件通知相关人员并发送编译日志。该步骤可初步测试配置文件以及数据库脚本的完整性和正确性。
- 接口测试流程
用于接口测试。执行接口测试脚本,执行成功则邮件发送通知相关人员并发送编译日志、测试结果;执行失败发送邮件通知相关人员并发送编译日志。
# P028测试结果
编译邮件:
# Jenkins优点
目前的编译脚本,一旦编译失败只能通过邮件给出简略的信息。使用Jenkins,在编译失败时,能发送完整的编译日志,不再需要研发通过运维人员查看日志确认失败详情,而能直接获取失败详情,提高版本发布速率。
使用Jenkins的特性,所有配置可用grovy完成配置并在svn进行版本管理。
目前自动化测试的方案是在当前自动编译脚本的基础上进行改造。后续可以考虑持续集成(CI)的原理,对每次研发人员commit的代码进行代码审核、单元测试并发送报告,及早发现可能存在的问题并解决,而不仅仅在每次发布版本时进行审查修正。
当前编译脚本无法根据具体的项目发送邮件至具体人员,使用Jenkins可以为每个项目独立分配邮件抄送人员
# 6、后续优化
统一各个服务的编译脚本、部署和测试脚本,减少脚本维护工作
进一步考虑持续集成,完善代码审查、单元测试、编译打包、接口测试等流水线工程。