CI/CD流程在CMDB模型中的设计与应用
共 2596字,需浏览 6分钟
·
2021-09-28 07:59
原文链接:https://www.jianshu.com/p/67ff73372db9
前言
Jenkins Pipeline方案
流程分析
首先我们来梳理一下这个过程:
模型设计
根据上面的梳理和分析,应将一个版本从构建到部署当做一次完整的流程,即同一版本的代码只构建一次,就能根据实际结果决定部署到测试或生产环境。
首先,每次提交代码都会产生一个版本,用Version(版本)模型来描述。
其次,将持续集成和部署过程抽象为一个广义的Deploy(部署)模型。Deploy模型继承自Version模型,与Version模型是一对一的系。Deploy模型用于管理Version的整个生命周期。
Version模型主要包含以下字段:
项目
版本号,指定的版本标识
包路径,该版本构建出来的制品的路径
版本修改说明
状态,描述该版本所处的环境/名字空间
其中状态有以下值:开发,版本处于开发状态,默认值
测试,版本处于测试状态
挂起,版本发布到测试环境后,又有新版本发布到测试环境,那么该版本就处于挂起状态
中止,当有版本部署到生产环境时,处于挂起状态的老版本会变成中止状态。
上线,版本部署到生产环境后就处于上线状态
下线,上线的版本被新的版本上线代替后,变成下线状态
开发作为Version模型生命周期的开始,中止、上线及下线三个状态作为Version模型生命周期的结束。
Deploy模型主要包含以下字段:
步骤/阶段,当前版本的部署流程处哪个阶段
各阶段的时间戳
步骤/阶段有以下取值:提测
构建
部署测试
测试
部署生产
验收
模型应用
有了上述模型,我们可以很容易获知:
某个项目/应用的所有版本状态
所有部署的当前进度
根据该模型的设计,实现的某个项目/应用实例的版本信息展示:
部署实例展示:
进一步,可以对研发工作效率和质量进行评估:
评估某个版本的需求效果。比如某个版本部署到测试环境后很久都不上线,那我们有理由怀疑这个新版本的需求是无用的。
通过分析Deploy每个阶段的时间戳,可以评估开发/测试人员的工作效率
对可能影响重大的步骤进行人工审批,比如部署生产环境的步骤。
分析所有未结束生命周期的Deploy实例(处于中止和挂起状态的实例)的数量,来评估开发人员的工作质量。
对持续集成和持续部署进行可视化,多少处于测试状态、多少处于挂起状态,一目了然。
总结
- END -
推荐阅读 31天拿下K8S含金量最高的CKA+CKS证书! 神器 Nginx 的学习手册 ( 建议收藏 ) 运维必备的DevOps工具链大盘点 大规模微服务利器:eBPF 与 Kubernetes 互联网公司使用 Redis 的16个应用场景 Nginx配置中一个不起眼字符"/"的巨大作用,失之毫厘谬以千里 企业级日志系统 ELK 原理与实践详细介绍 编写 Dockerfile 最佳实践 运维工程师不得不看的经验教训和注意事项 终于搞懂了服务器为啥产生大量的TIME_WAIT! Kubernetes 网络方案之炫酷的 Cilium 12年资深运维老司机的成长感悟 搭建一套完整的企业级 K8s 集群(v1.20,kubeadm方式)
点亮,服务器三年不宕机