部署流水线
出现原因
在软件的发布过程中,很多浪费来自于测试和运维环节。解决方案就是采取一种更完善的端到端的方法来交付软件。因为部署流程是自动化的,所以可以频繁且有规律地运行并被测试,从而降低发布风险,也降低了向开发团队传递有关部署地知识时地风险。
定义
部署流水线是指软件从版本控制库中到用户手中这一过程的自动化变线形式。这一过程流程包括构建软件按,以及后续一系列不同阶段的测试与部署,部署流水线是对这一过程的建模,在持续集成和发布管理工具上,它体现为支持查看并控制整个过程,包括每次变更从被提交到版本控制可开始,直到通过各类测试和部署,再到用户发布的过陈。
优点
- 首先,它可以有效地阻止那些没有经过充分测试或不满足功能需求地版本进入生产环境,也能避免回归缺陷。
- 其次,当部署和产品发布都被自动化之后,这些活动就变成快速、可重复且可靠的了。
部署流水线的相关实践
1.只生成一次二进制包
将所有可执行代码的集合称作二进制包。
二进制包应该只在构建流水线的提交阶段生成一次。
2.对不同环境采取同一部署方式
如果使用同一个脚本在所有的环境上进行部署,那么当在某个环境上部署失败时,就可以确定其失败的原因。
3.对部署进行冒烟测试
当做应用程序部署时,用一个自动化脚本进行冒烟测试,用来确保应用程序已经正常启动并运行了。
4.向生产环境的副本中部署
5.每次变更都要立即在流水线中传递
6.只要有环节失败,就停止整个流水线
提交阶段
提交阶段的步骤:
- 编译代码
- 运行一套提交测试
- 为后续阶段创建二进制包
- 执行代码分析来检查代码的健康状况
- 为后续阶段做准备工作,比如准备以下后续测试所用的数据库
我的收获&疑问
收获
- 部署流水线是一个自动化的软件交付流程
- 二进制包应该具有环境无关性
疑问
- 圈复杂度是指什么?
是代码复杂度的衡量标准,用来衡量一个模块判定结构的复杂程度。圈复杂度大说明程序代码的判断逻辑复杂。