教育房产时事环球科技商业
投稿投诉
商业财经
热点动态
科技数码
软件应用
国际环球
晨报科学
新闻时事
信息智能
汽车房产
办公手机
教育体育
生活生物

什么是ci(ci指的是什么)

  本文作者:成龙腾讯前端开发工程师,负责腾讯文档前端开发与研发效能提升,AlloyTeam成员。
  导语
  本篇文章将着重探讨 DevOps 在持续集成阶段需要提供的能力,将对工作流的设计及流水线的优化思路做一个简要讲解。
  DevOps 一词源于 Development 和 Operations 的组合,即将软件交付过程中开发与测试运维的环节通过工具链打通,并通过自动化的测试与监控,减少团队的时间损耗,更加高效稳定地交付制品。
  随着腾讯文档的项目规模越来越大,功能特性与维护人员越来越多,特性交付频率与软件质量之间的矛盾日渐尖锐,如何平衡两者成为了目前团队亟需的一个重点,于是,落地一个完善的 DevOps 工具链便被提上日程。
  当我们在谈论 CI 时,我们在谈论什么
  CI(Continuous Integration),即持续集成,指频繁地(一天多次)将代码集成到主干的行为。
  注意,这里既包含持续将代码集成到主干的含义,也包含持续将源码生成可供实际使用的制品的过程。因此,我们需要通过 CI,自动化地保证代码的质量,并对其构建产物转换生成可用制品供下一阶段调用。
  因此,在 CI 阶段,我们至少有如下阶段需要实现:
  1. 静态代码检查
  这其中包括,ESLINT/TSLINT 静态语法检查,验证 git commit message 是否符合规范,提交文件是否有对应 owner 可以 review 等等。这些静态检查不需要编译过程,直接扫描源代码就可以完成。
  2. 单元测试/集成测试/E2E 测试
  自动化测试这一环节是保障制品质量的关键。测试用例的覆盖率及用例质量直接决定了构建产物的质量,因此,全面且完善的测试用例也是实现持续交付的必备要素。
  3. 编译并整理产物
  在中小型项目中,这一步通常会被直接省略,直接将构建产物交由部署环节实现。但对于大型项目来说,多次频繁的提交构建会产生数量庞大的构建产物,需要得到妥善的管理。产物到制品的建立我们接下来会有详细讲解。
  利于集成的工作流设计
  在正式接入 CI 前,我们需要规划好一种新的工作流,以适应项目切换为高频集成后可能带来的问题与难点。这里涉及到的改造层面非常多,除了敦促开发人员习惯的转变以及进行新流程的培训外,我们主要关心的是源码仓库的更新触发持续集成步骤的方式。
  1. 流水线的组织形式
  我们需要一个合适的组织形式来管理一条 CI 流水线该在什么阶段执行什么任务。
  市面上有非常多的 CI 工具可以进行选择,仔细观察就会发现,无论是 Drone 这样的新兴轻量的工具,亦或是老牌的 Jenkins 等,都原生或通过插件方式支持了这样一个特性:Configuration as Code,即使用配置文件管理流水线。
  这样做的好处是相当大的。首先,它不再需要一个 web 页面专门用于流水线管理,这对于平台方来说无疑减少了维护成本。其次对于使用方来说,将流水线配置集成在源码仓库中,享受与源码同步升级的方式,使得 CI 流程也能使用 git 的版本管理进行规范与审计溯源。
  确立了流水线的组织形式后,我们还需要考虑版本的发布模式以及源码仓库的分支策略,这直接决定了我们该以什么样的方式规划流水线进行代码集成。
  2. 版本发布模式的取舍
  在《持续交付 2.0》一书中提到,版本发布模式有三要素:交付时间、特性数量以及交付质量。
  这三者是相互制衡的。在开发人力与资源相对固定的情况下,我们只能对其中的两个要素进行保证。
  传统的项目制发布模式是牺牲了交付时间,等待所有特性全部开发完成并经历完整人工测试后才发布一次新版本。但这样会使得交付周期变长,并且由于特性数量较多,在开发过程中的不可控风险变高,可能会导致版本无法按时交付。不符合一个成熟的大型项目对于持续交付的要求。
  对于持续集成的思想来说,当我们的集成频率足够高,自动化测试足够成熟且稳定时,完全可以不用一股脑地将特性全堆在一次发布中。每开发完成一个特性就自动进行测试,完成后合入等待发布。接下来只需要在特定的时间周期节点自动将已经稳定的等待中的特性发布出去即可。这对于发布频率越来越高,发布周期越来越短的现代大型项目中无疑是一个最优解。
  3. 分支策略
  与大部分团队一样,我们原有的开发模式也是分支开发,主干发布的思想,分支策略采用业界最成熟也是最完善的 Git-Flow 模式。
  可以看出,该模式在特性开发,bug 修复,版本发布,甚至是 hotfix 方面都已经考虑到位了,是一个能应用在生产环境中的工作流。但整体的结构也因此变得极为复杂,不便管理。例如进行一次 hotfix 的操作流程是:从最新发布前使用的主干分支拉出 hotfix 分支,修复后合入到 develop 分支中,等待下一次版本发布时拉出到 release 分支中,发布完成后才能合回主干。
  此外,对于 Git-Flow 的每一个特性分支来说,并没有一个严格的合入时间,因此对于较大需求来说可能合入时间间隔会很长,这样在合入主干时可能会有大量的冲突需要解决,导致项目工期无端延长。对此,做大型改造与重构的同学应该深有体会。
  针对这一点,我们决定大胆采用主干开发,主干发布的分支策略。
  我们要求,开发团队的成员尽量每天都将自己分支的代码提交到主干。在到达发布条件时,从主干直接拉出发布分支用于发布。若发现缺陷,直接在主干上修复,并根据需要 cherry pick 到对应版本的发布分支。
  这样一来,对于开发人员来说需要的分支就只有主干和自己 working 的分支两条,只需要 push 与 merge 两条 git 命令就能完成所有分支操作。同时,由于合入频率的提高,平均每人需要解决的冲突量大大减少,这无疑解决了很多开发人员的痛点。
  需要说明的是,分支策略与版本发布模式没有银弹。我们采用的策略可能并不适合所有团队的项目。提高合入频率尽快能让产品快速迭代,但无疑会让新开发的特性很难得到充分的手工测试及验证。
  为了解决这一矛盾点,这背后需要有强大的基础设施及长期的习惯培养做支持。这里将难点分为如下几个类型,大家可以针对这些难点做一些考量,来确定是否有必要采用主干开发的方式。
  1)完善且快速的自动化测试。只有在单元测试、集成测试、E2E 测试覆盖率极高,且通过变异测试得出的测试用例质量较高的情况下,才能对项目质量有一个整体的保证。但这需要团队内所有开发人员习惯 TDD(测试驱动开发)的开发方式,这是一个相当漫长的工程文化培养过程。
  2)Owner 责任制的 Code Review 机制。让开发人员具有 Owner 意识,对自己负责的模块进行逐行审查,可以在代码修改时规避许多设计架构上的破坏性修改与坑点。本质上难点其实还是开发人员的习惯培养。
  3)大量的基础设施投入。高频的自动化测试其实是一个相当消耗资源的操作,尤其是 E2E 测试,每一个测试用例都需要启动一个无头浏览器来支撑。另外,为了提升测试的效率,需要多核的机器来并行执行。这里的每一项都是较大的资源投入。
  4)快速稳定的回滚能力和精准的线上及灰度监控等等。只有在高度自动化的全链路监控下,才能保证该机制下发布的新版本能够稳定运行。这里的建设我会在之后的文章里详细介绍。
  大型项目中产物-

为什么来民生银行(民生银行校招转正太慢了)欢迎并下载职题库APP,你的求职刷题神器!前几天,民生银行的暑期管培生笔试测试已经结束,几家欢喜几家愁,有小伙伴通过了笔试测评,也有的遗憾与offer擦肩。不过这都没关系,民生银行private是什么意思(private是什么意思中文)private是什么意思(private是什么意思中文)的区别在哪里世嘉永诚20210511133830新加坡私人有限公司和新加坡公众担保公司的区别在哪里新加坡私人有限公司(prishirt是什么意思中文(skate是什么意思中文)小学四年级英语下册单词表Unit1学校的场所1。firstfloor一楼2。secondfloor二楼3。teachersoffice教师办公室4。library图书馆5。play农村医疗保险报销范围(2021年农村医疗保险报销范围)农村医疗保险报销范围(2021年农村医疗保险报销范围)农村医疗保险是指农村合作医疗,是由我国农民自己创造的互助共济的医疗保障制度,在保障农民获得基本卫生服务缓解农民因病致贫和因病返农村养老保险怎么交(新型农村社会养老保险怎么交)最近有很多的粉丝问我关于2021年农民的养老金究竟怎么增加?从2021年开始,一些退休职工的养老金将会进行审核与重新核算,每月发放一笔基本养老金,主要惠及65岁以上老人。很多网友见五险是哪些(上海社保最低缴费)五险一金是伴随我们职业生涯的重要福利待遇,有了这些保障我们在养老医疗生育等方面才有更多的保障那么五险一金自己交划算吗?交多少合适?一起来看看吧!一五险一金自己交划算吗?五险个人缴费社保报销需要哪些(社保医疗保险报销范围)人们生病住院一般使用医保报销,它在我们居民生活中有着保障的作用,起码解决了看病贵的难题,可是,很多人都不知道医保报销的流程,还有须要准备哪些资料,医保报销具体看每个地区,下面有医保男职工的生育保险有什么用(生育保险男职工要交吗)说起生育保险很多人认为这是女职工的专属福利男职工就有些纳闷了男性又不会生孩子为什么也要参加生育险呢?即使参加,又能享受什么待遇呢?男职工缴纳的生育险也是有很多好处快来看看吧!一男职社保怎么算的(一次性八万养老保险)社保知识分享官招募一是一次性缴纳的养老保险是属于职工养老保险,还是居民养老保险二是60岁以后领取的养老保险能不能达到1000元,这是无法估算的。至于养老金能领取多少,这在不同的地方生育险多久能报下来(产检费用报销多久到账)生育保险属于五险之一,是专门给予女性的一种福利待遇,当我们缴纳够一定的时间女性生育后就可以进行费用报销,那么报销生育保险多久可以批下来?我们来看看吧。首先要满足三大条件,才能领取生生育金多久到账(工资4500生育津贴能领多少)今年4月,杭州的孙女士生了二胎。她说,产假9月15号到期,准备离职在家照顾孩子。现在还有件事情没处理完,她有些担心。孙女士说,她在永和大王餐饮有限公司工作了8年,2014年的时候生
宜贷网在四川哪里(四川宜汉邮编)近期,关于网贷行业的动态持续引发。随着网贷平台最后大限的日益临近,网贷行业的出清也在加速进行。为此,网贷天眼根据公开信息及媒体相关报道,汇总了团贷网宜贷网新新贷玖富的最新进展情况。医学起源(医学启源白话文)医学起源(医学启源白话文)中国古代医术,也可以说是中国古代医学,简称为中医,也叫做汉医。众所周知,现如今国内盛行的是西方医学,诸如西药打针打点滴等都是近代从西方传播过来的医术。那么冬至节气祝福语(冬至简短祝福语八个字)2020冬至祝福语简短10字冬至祝福语朋友圈!12月21日,又是一年冬至来临,北方的小伙伴,你们吃水饺了吗?南方的小伙伴要如何度过这个节日呢?有给自己身边的朋友发送祝福吗?今天的朋手机投屏到电视上怎么操作(苹果同一wifi下无法投屏)使用苹果手机的朋友都知道,在iPhone的控制中心有一个屏幕镜像功能,但多数朋友尝试后都表示它搜不到自家的电视,这是为什么呢?其实很简单,导致这种问题出现的因素多与网络和应用的关系鱼儿嘴巴一张一合是干什么呢(鱼的嘴巴可以吃吗)之前,我们分享过鱼是怎么睡觉的好奇的小朋友们提出了新的问题鱼要喝水吗?大家有没有发现,鱼儿的嘴巴总是在水下一张一闭,这是鱼儿在喝水吗?的确鱼会不停地用嘴巴将水吸进去,然后用腮把水排怎么查老婆和别人的微信聊天记录(怎么查对方微信聊天记录)广告时间另一半总是不回信息对你态度冷漠?你是否担心另一半出轨?只需提供QQ号就能轻松获取她的聊天记录。你是否时刻牵挂着心爱的她想要知道她的动向?只需提供手机号码就能帮你定位另一半的手机卡怎么定位追踪(手机丢了怎么定位)首先在这里郑重的提醒广大网友,不要相信网络上所谓的知道手机号就可以定位的,这类基本都是骗钱的。目前只有运营商才能做到通过手机号进行定位,网友们肯定看过一些影视剧,警方通过手机号就能清一色什么意思(说一个人清一色是什么意思)如何做一色牌一色有几种从形态上看来,应分为清一色与混一色两种。清一色即全副牌俱是一色,如是万子一色,就不但没有筒子及索子,而且没有东南西北中发白。这样,可使全副牌的身价,和出后加上怎么查两个人的微信聊天记录(怎么查两个人有没有联系)大家好,我是老鱼(财眼观天下),新一期的内容又来和大家见面了。今天我们来聊一聊查询别人聊天记录的坑。相信有很多情侣夫妻都有过这样的经历。一方对另一方的一些举止行为突然发生变化,由此怎么查五个月前微信聊天记录(怎样查一年前的微信聊天记录)如何找回删除的聊天记录?作为我们平时必备的聊天工具,工作和生活都是经常用到。随着时间的推移,使用得越多,自然会存下大量的聊天记录和图片文件等。因此,很容易导致在清理这些聊天记录时很发展党员工作总结(发展党员年度工作总结2020)全篇1900字,由于发文受限,现将部分内容分享如下一基本情况二存在的问题和原因1。两新组织入党的积极性较高,但入党动机比较复杂,对党认识不深。2。基层党务工作者在党员发展的认识上存