持续交付协作流程-提升产品,开发,测试协作效率
1)首先介绍为什么要实行自动化持续集成和交付。1.1)但凡经历过早期草创研发阶段的老鸟都知道:如果没有自动化持续集成交付,什么都要人肉去操作,不但容易出错,导致怨声载道,团队之间相互等待的问题,还会出现相关同学总是频繁的被打扰,经常去做一些机器能自动化的事情,导致人的效率大为下降。质量和效率都极为低下,人员的满意程度非常低。
1.2) 持续集成和持续交付的优势
更快的交付速度:通过频繁地集成和交付软件,团队能够更快地将新功能、修复和改进推送到用户手中,缩短软件开发周期。
更高的软件质量:自动化的测试流程可以提前发现和解决潜在的问题,减少bug的产生,并确保代码质量和稳定性。
减少冲突和错误:频繁地集成代码可以减少分支合并时的冲突,避免大规模的代码冲突和错误的出现。
提高团队协作:持续集成和持续交付鼓励团队成员频繁地集成和交付代码,促进团队协作和沟通,减少开发和部署过程中的摩擦。
2) 上述图示的详细解释。2.1) 需求和计划:
老板,产品经理(小公司里面可能老板兼产品)调研需求,编写用户故事(user story)到
jira(或者同类研发管理或需求管理平台)。
2.2)开发:
开发团队领取需求,并做好方案设计,并完成代码开发,提交到代码仓库(由git或者svn等代码版本工具管理,git这块可能是私有化部署的gitlab,私有github仓库等)。
2.3)构建/打包:
通过Jenkins等工具实现自动化构建,打包流程,以便完成自动化集成&交付CICD (流水线)。构建打包完成后自动开始部署操作,将打包文件提交到k8s等,以构建docker镜像并发布。
2.4)测试:
QA在测试环境完成对最新测试版本的 UAT (用户验收测试),实际操作中大部分也会完成性能测试,安全测试等。如果有问题,当然是反馈给开发,如此循环几次。
2.5)发布
当测试环境都测试没问题的时候,就可以把代码合并到Production版本,这个过程也是可以在合并代码后自动化构建,打包,部署到Production环境的k8s里面。
一般这个时候正规公司还会进行冒烟测试,live验收测试。以便在用户使用之前,提前发现可能存在的问题。
之后就是用户正式使用了。当然有些公司为了降低风险,还会使用灰度发布,A/B版本等方式实现部分用户使用最新版本,以便收集问题,等确认没有问题后才全部开启最新版本。