对DevOps流水线设计的优化和改进实践( 四 )
即我们常说的自动化编译构建 , 自动化部署 , 自动化测试 。 而在转到和容器技术结合后可以看到在编译构建完成后自动化部署进行了拆分 , 即部署动作变化为了首先是自动化的打包即制作容器镜像 , 然后才是自动化部署 , 部署部署基于部署包的 , 而是基于制品库中的容器镜像的 。
可以看到 , 在DevOps中的流水线设计更多的是解决开发人员的自动化问题 , 即开发只需要check in自测通过的代码到配置管理库 , 那么后续的所有事情都自动化完成 , 最终部署到测试环境供测试人员测试 。
开发人员不用关心编译构建过程 , 不用关心测试服务器包括测试环境数据库 , 中间件的安装部署等一系列的问题 。 同时由于一系列的自动化操作 , 也让代码从检入到交付测试的周期缩短了 , 在周期缩短后交付频度也可以进一步提升以加快迭代速度 。
对于DevOps支撑平台我们一直在谈流水线自动化设计 , 但是更应该反过来谈持续集成方法论和最佳实践 , 因为流水线设计仅仅是为持续集成和持续交付服务的工具链而已 。 其次 , 对于当前流水线设计 , 更多是从技术层面开发人员自动化在谈 , 但是却少考虑研发管理开发和测试过程协同问题 。
在DevOps最佳实践里面分为了研发管理 , 持续交付和技术运营几个关键的过程域 。 但是在实践的过程中 , 最容易出现问题的不是单个技术点 , 而是跨域的协同问题 , 或者说研发过程管理和持续集成交付本身就是密不可分的两个部分 , 我们只是为了容易理解和学习将其划分为了不同的过程域而已 。
研发过程管理和持续集成间的协同关系
文章插图
要明白任何一次新的编译构建部署完成后都涉及到测试人员测试 , 测试人员测试出问题后又会提交Bug , 开发人员修改Bug后check in代码 , 等待下一次打包部署以形成多次迭代 。
整个过程最好方式就是要尽量减少大量的人工沟通协同 , 而是应该通过工具链协同来完成 。
对于传统的持续集成 , 一般最佳实践为每天晚上进行自动化构建和冒烟测试 , 而对于当期的DevOps过程 , 在设计完流水线后 , 可以手工去启动流水线作业 , 也可以自动去执行流水线 , 或者代码库变更后实时触发流水线执行 。 流水线执行时间频度也可以进一步缩短 , 假设我们每2个小时自动化的执行一次流水线作业 , 我们以此场景来做进一步梳理 。
流水线增加启动检查节点
虽然2小时执行一次流水线 , 但是在执行前先进行启动前检查 , 如果在最近2个小时内没有新代码check in , 那么不执行流水线 。 其次 , 如果上一次流水线执行实例还处于待处理或未关闭状态的时候 , 同样也不执行流水线作业而直接跳过 。
是否需要人工验证节点
- 新款iPad mini或于3月亮相,小米11 Pro摄像模组设计曝光
- vivo追求的本原设计是什么?X60 Pro给出了答案
- realme真我V15国潮锦鲤手机发布《国家宝藏》联名设计
- 传世名画《洛神赋图》赋予设计灵感!realme V15上架预约
- 苹果M1、A14内核设计对比:差别很大
- 外媒赞赏戴尔笔记本的摄像头隐私挡板设计 希望其它厂商能够跟进
- 从OriginOS看手机设计进化,单手不是最终的便捷
- iPhone折叠屏要来?两种设计通过初步测试
- 联想Yoga AIO 7发布 一款设计巧妙的27英寸旋转式一体电脑
- realme推 V15 5G手机,主打国潮设计起售1399元