用aws亚马逊codepipeline快速执行测试用例,定时执行

发布于:2023-01-14 ⋅ 阅读:(663) ⋅ 点赞:(0)

背景:公司用亚马逊云,接上文背景用亚马逊aws codebuild创建支持多环境运行的接口脚本_weixin_44043467的博客-CSDN博客_亚马逊脚本

1. 对于上文的执行,一次执行8个地区时间有点长,而且我们分国内国外,国外服务是美国、英国、新加坡三个主要地区,其他区域由对应的主服务区转发服务,海外流水线建了三条,以防止一次性执行时间过长,减少执行时间;其次,存在部分地区镜像更新成功,部分地区更新不成功的情况,如果一个流水线执行浪费时间。

2.针对以上情况,将国外流水线分成三个地区,美国、英国、新加坡,国内整两套,区分线上和dev环境的。国内可以提交到一个code commit仓库,国外需提交到国外的一个code commit仓库,国外也只需选定一个区域建流水线就行,不需要去分三个地方建。

3. 国内线上环境和测试环境执行时,依然用shell脚本去执行替换命令,如下所示:

change_env.sh如下: 

 

构建的yaml文件定义如下:

 国内安装包建议用清华源镜像,比较快,用国外的偶尔会报错,安装不上

如果用例比较多,执行时间比较长,codebuild默认超时是一个小时,如果超时没有执行完会报错,这时可以考虑加入多线程去执行,前提是用例之间没有相互依赖关系,我用了一个进程4个线程去执行,时间大大缩短。

没用多线程之前超时报错

 

启用多线程之后

4. 国外将之前的脚本分成三个,对应的写三个脚本,建三个codebuild project,分别挂在对应的流水线下执行就行;如果不想写shell脚本的话,就直接在Buildspec文件中直接写命令,我是写脚本替换的

test_eu.sh文件内容如下,我的用例中有中国区专有的用例,用@pytest.mark.China进行标注了,所以国外区执行需排除标注为中国区的用例,添加参数-m "not China" 

 执行的最多区的,新加坡的执行时间也就20分钟左右

 如果想执行的更快,可以修改参数workers, 多加进程,或者 --test-per-workers 多加线程,这样执行速度会更快。

5. 如果codebuild用亚马逊服务器标准4.0,有可能python版本需要3.9以上,将Buildspec文件中python的版本由3.8改为3.9即可。

6. 如果用例中包含很多大文件,可能执行环境就需要改大一点,点击codebuild project——编辑——环境,将内存改大

7. 流水线只有部署的时候会执行,线上接口需要持续监控,以便出错了能及时修改,将codebuild project构建一个触发器,点进你的codebuild project,点击构建触发器——添加触发器,如下图,我的触发器是每周一到周六晚上十点执行(东八区),这里的时间设置是伦敦标准时间,如果要换算需要+8个小时

这样用例就可以定时执行了,出错了会发邮箱告诉我哪个用例有问题,这样可以对应去寻找问题解决,就很方便了。

 

 

 

 

 

 

 

 


网站公告

今日签到

点亮在社区的每一天
去签到