首页 > 其他分享 >05-CI,CD领域实践

05-CI,CD领域实践

时间:2022-11-14 21:35:20浏览次数:107  
标签:集成 CI 05 数据库 管理 持续 CD 发布 变更

持续集成

持续集成意味着频繁地提交代码改动到集成分支,并进行测试
持续集成使得集成问题变少并且更容易被解决
引入构建流水线,并且保证其中的各个步骤可以迅速完成
及时修复集成过程中发现的问题
持续集成的实施不应教条化,而是要因地制宜

持续交付

持续交付让各类变更以安全、快速、可持续的方式交付到生产环境或用户手上
持续交付是持续集成的延伸,实现持续交付也需要做好版本控制、自动化、快速执行、及时修复等实践
围绕持续交付的核心目标来行动:从开发完毕到发布所需的时间更短、让发布更可靠
遂特性发布的集成发布方式,是对一个特性从完成到发布所需时间的极致追求的例子

变更管理

变更管理是指软件开发中所有的变更均可以被记录及追溯
变更风险管控的三大原则:可灰度,可监控,可回滚
常见的变更类型:基础设施变更、代码基线变更、配置项变更、依赖项变更、数据库变更、生产发布变更
最佳实践:变更过程尽量自动化、变更评审机制、变更过程可追溯、生产变更过程可灰度、变更操作可回滚

部署自动化

部署自动化使用户能够“一键式”将软件部署到测试和生产环境,理想状态下的所有的操作全部自动化,无需手工干预
对每个环境(包括生产环境)使用相同的部署流程
允许具有必要权限的人以完全自动化的方式,根据需要将任意版本的组件部署到任何环境
对每个环境使用相同的软件包

制品管理

制品一般存放在制品库中,以防损坏或丢失,并且便于查找
除了存放制品本身,还要考虑存放制品的元数据,比如质量等级以及制品与源代码等对象的关联关系
制品是企业核心软件资产,制品仓库是企业软件资产管理平台,是企业的单一可信源
制品管理属于企业基础设施
做好企业管理可以帮助企业合规、安全的使用地方放开源组织及软件

发布策略

理解部署和发布的差异是了解和制定发布策略的前提
没有最好的发布策略,只有最适合场景的发布策略
发布策略的抉择不仅是一个技术举措、还需要纳入业务考量
常见的发布策略包括停机部署、滚动更新、蓝绿部署、灰度发布、A/B测试、影子部署等

数据库变更

数据开发人员应该像应用开发人员一样管理自己的数据资产
数据库架构必须具备演进能力
为应对频繁地数据库重构工作,需要重视数据库 Schema 脚本的变更管理
数据库变更也应该像变更应用程序代码一样,拥有版本控制管理和发布流程
生产数据库的变更既要保证升级或迁移过程是安全可靠的,也要保证生产数据的安全,保护客户隐私

配置参数管理

系统配置参数和业务配置参数都需要被妥善管理
管理配置参数有多重方法,分别有其优缺点,有其适用场景
如果配置参数随着源代码的演进而演进,最好是跟源代码一起走集成发布流程
如果配置参数的值随着不同环境而变化,则无须跟源代码一起走集成发布流程

解读

简单来说,持续集成以及持续交付的主要行为标准就是尽一切可能将软件开发完成后的过程自动化,从自动部署到测试环境,到自动进行单元测试、压力测试,甚至根据对不同分支的对待策略,定量客户进行灰度发布、蓝绿发布等

举个灰度发布的例子(蓝绿发布成本太高,一般情况下只有云原生环境用蓝绿发布才能保证成本)
某个系统有一个需求需要根据某些定制客户进行发布(实际上就是试试业务反馈,好就全公司推广,不行就过后把这个活动变更的需求扯下来),在这种背景下,我们通过代码分支“feature/01”作为该需求变更的分支代码。发布时可根据负载均衡定制为某个应用服务器上引导这部分客户的业务过程,特性分支(feature/01)也同时发布到这个应用服务器而做到灰度发布。有负载均衡和特性分支管理的时候很容易对吧?!

有关于数据库脚本变更的可参考使用 flywaydb liquibase 或在 scm 专门创建一个从建库开始到现在 以变更为维度作为文件夹的方式来管理数据库变更,注意如果时候后者完成管理,请一定要将从建库开始(完成安装后的一切步骤开始作为数据库积累,而不是从数据库导出的脚本作为版本管理。

有关于持续集成 持续部署的工具 jekins 是首选,原因有很多:插件多,文档多,经历过大量项目使用考研,开源且安全。

标签:集成,CI,05,数据库,管理,持续,CD,发布,变更
From: https://www.cnblogs.com/codeG7/p/16890465.html

相关文章

  • 2021年12月04日-2021年12月05日 桐城
    这次回去因为宝宝行里要换宿舍,回去帮宝宝搬家,3号你在行里加班到很晚,因为抽到个不好的宿舍在加上加班你心情很不好就没让我去行里见面了,我想着不行我就帮你租个好点的房子省......
  • 2022年06月04日-2021年06月05日 太湖县
    回宝宝家,这是第一次去宝宝太湖县的家,还是挺温馨的,阿姨去了还给我炖了个老母鸡汤,确实不错什么都不放原始的鸡肉香味,周日中午去汉庭酒店旁边买了一点龙虾带到酒店吃,还可以,路......
  • 2022年05月28日-2021年05月29日 安庆
    这次去安庆是参加宝宝同事婚礼,婚礼现场看一对新人有情人圆满幸福,但我不羡慕因为我有宝宝。还去安庆的一个老店面买了端午节礼物,一些是给宝宝那边的亲戚的一些是给我父母的......
  • 2022年05月09日 南京
    这一段时间来因为疫情原因都不能回去了,这次宝宝来南京是因为紧急面试,我特地请了下午假,直接去宝宝面试的地方等她,中午带宝宝在面试附近吃了老乡鸡,我们大安徽的特色,下午宝宝......
  • etcd分布式键-值对存储系统
    什么是分布式系统:  业务量的迅速增大,普通的单机系统无法满足要求,要么垂直扩展升级机器硬件,要么水平扩展堆廉价服务器。目前互联网领域选择了后者 水平扩展etcd介绍:1......
  • Loj 6053 简单的函数 min25筛
    #6053.简单的函数先求g(n,j)目的是为了在求S(n,j)的时候可以快速获取一些质数上的点的值。所以我们只要求g(n,j)的质数处的值正确即可其他值则不需要所以我们可以让g......
  • 数组循环移动mci
    #include<stdio.h>intmain(){ inta[10]={1,2,3,4,5,6,7,8,9,10}; intm=3; intn=sizeof(a)/4; inti; int*p; for(i=0;i<m;i++){ p=......
  • 拓端数据tecdat|R语言基于温度对城市层次聚类、kmean聚类、主成分分析和Voronoi图可视
     为了说明层次聚类技术和k-均值,我使用了了城市温度数据集,其中包括几个城市的月平均气温。我们有15个城市,每月进行一次观测boxplot(temp[,1:12],main="月平均温度") 由于方......
  • ZCU102 HDMI Demo工程修改【PCIE视频传输】
    转自:https://blog.csdn.net/vacajk/article/details/78975590 为了更快速的开发我需要的带缓存的hdmi收发通路,将上一节的demo进行修改来实现。当然,可以从头开始自己进行......
  • CDQ分治
    CDQ分治常用于解决多维偏序关系问题,以三维为例,第一维可以排序解决,第二维进行分治,第三位常用数据结构(树状数组)维护,于是也可以将动态带修改问题,离线处理,常默认时间为第一维。......