热门标签 | HotTags
当前位置:  开发笔记 > 编程语言 > 正文

持续集成持续部署持续交付_您不进行持续集成!

持续集成持续部署持续交付今天,我将谈论开发人员的一个误解:持续集成是关于运行自动化集成管道的…什么是持续集成(CI)

持续集成持续部署持续交付

今天,我将谈论开发人员的一个误解:持续集成是关于运行自动化集成管道的…

什么是持续集成(CI)?

持续集成是一种以连续方式集成更改的过程。 这是什么意思?

想象一个团队,有6个人-3个开发人员和3个测试人员。 他们在每个季度发布的项目上工作。 他们使用2-3周冲刺的“准” scrum。 产品负责人将故事分解成一个单一的冲刺。 该团队遵循Github分支架构:

  • 开发分支-所有故事完成后将合并,并为故事(拉请求)单独分支。
  • 每个开发人员都有自己的故事。 在将拉取请求合并到开发分支之前,他们要求其他开发人员进行代码审查,并要求测试人员进行测试。 它们具有在每次提交时运行的自动集成管道。 管道包括短绒棉布,测试和捆绑(创建可运输的包装)。

在他们的情况下,2-3周的冲刺导致以下模式:

  • 开发人员“ A”有6-7天的实施时间,
  • 开发人员“ B”有一天的代码审查时间,
  • 开发人员“ A”有一天可以在代码检查后应用更改,
  • 测试人员大约需要3-7天的测试时间。

对?

让我们专注于以下分支树:

管道正在为每个提交运行,这意味着它们正在将其更改不断集成到代码库中,对吗?

没有! 开发分支的最新状态分布在3个不同的分支(拉请求)中。 这意味着管道分别确认了每个拉取请求的集成,并且开发分支有点“陈旧”……

没有人使用最新版本!

那么……我们如何进行持续集成?

让我们假设这个团队了解他们做错了什么。 他们希望以持续集成的方式开发软件。 开发过程必须如何改变?

每个开发人员每天至少需要合并一次更改。 当他们经常合并内容时,他们会使用最新的代码库。

但是我们不能跳过代码审查和测试!?

是的,您不能,也不应。 每个请求请求都应由其他开发人员进行审查。 如果所有反馈均已解决,功能的完整性检查已完成,并且集成管道为绿色,则表示您可以继续进行...

...是的,在将故事移交给测试之前,您应该合并提取请求。

为什么?

  1. 通过了Linters,通过了测试,并且已经构建了软件包。 自动化集成管道的重点在于以自动化方式运行测试。 如果您仍然需要测试人员,那么自动化是毫无意义的……
  2. 手动测试会使分支陈旧! 开发分支不包含您的拉取请求中的更改,因此该分支是陈旧的。 您的拉取请求没有在一天之内合并下来,因此拉取请求已过时。

如果我的拉取请求破坏了代码库怎么办?

好吧……您的更改阻止了其他人的合并,您必须尽快修复它。 但是不用担心...。 您的好友可能会帮助您找到问题并解决。

但这带来了很大的压力! 最后,事实并非如此。 每次事件都使您成为更好的程序员,并给其他团队成员带来情感上的约束。 您将在代码审查期间学习更多的注意,在实际合并之前先进行尝试。 这些情况会教您关心他人,并表明您可以信任自己的团队。

如果我没有按时完成故事怎么办?

别担心。 在一天之内完成所有工作非常困难。 如果该软件尚未交付生产,并且您的故事还没有100%完成。 没事。 要求审查。

一条规则:合并之前,管道必须为绿色!

理想情况下,永远不要合并未经测试的代码,因为以后很难更改它。 我鼓励您在进行持续集成的同时进行测试驱动开发(TDD)。

如果您的公司将软件交付生产,则可能需要功能切换。 功能切换开关是允许在生产环境中禁用功能的开关。

听起来很难? 根据您的需求,您可以将其简化为简单的if语句:

if (process.env.NODE_ENV !== 'production' ) {// your unfinished code.
}

您可能想 在Martin Fowler的博客 上内容

那现代的测试人员呢

Airbnb和Netflix不雇用他们。 他们的开发人员编写所有自动化测试。 如果某些东西太昂贵而无法自动化,他们会跳过它。 他们如何确认某些东西坏了? 他们有负责站点监视的站点可靠性工程师(SRE)。 当SRE识别出系统中的异常时,他们正在调查引入了哪些更改。 之后,他们决定如何处理它-恢复或修复它。

监控是新的测试

请记住:Airbnb运行着世界上最好的软件公司之一。 实施他们的流程将很昂贵,并且很难反映到您所在的公司。

在这里了解 更多 Airbnb如何开发产品的信息 :

我想,您的公司已经聘用了测试人员,并且不想摆脱他们。 在这种情况下,测试人员可以专注于难以自动化的事情-执行手动探索性测试,并验证视觉元素。

如果您的测试人员渴望学习编码,他们可能会参与编写自动化测试。 怎么做? 每个拉取请求均由两个人(测试人员和开发人员)开发。 开发人员公开接口(类,函数,方法),以便测试人员可以开始编写测试。

结果是:对类固醇编程。

免责声明 :最后一段是经验性的。 在为我的一位前雇主工作时。 两位,我和我的同事正在编写自动化测试套件。 我们正在提供标记为已跳过的测试用例,而开发人员正在其拉取请求中对其进行修复。 结果,我们提供了更好的质量,没有错误,并且我们改善了团队内部的沟通。 每个人都了解此功能的含义以及代码的工作方式。

摘要

如果您的代码库仅由少量贡献者修改,则进行持续集成可能不会带来很多好处。 随着团队的成长,流程开始使您放慢脚步。 您进行的代码审查多于编程,然后您解决了合并冲突……可爱……运送到生产环境需要很长时间—所有东西都需要一起测试,而且始终需要快速修复错误……如果此时,请与您的团队讨论关于过渡。

如果您有任何问题或建议,请写评论。

您可以在Medium和Twitter上与我联系或关注我。

资料来源:未来世界

翻译自: https://hackernoon.com/you-dont-do-continuous-integration-vz47534ux

持续集成持续部署持续交付



推荐阅读
  • 兆芯X86 CPU架构的演进与现状(国产CPU系列)
    本文详细介绍了兆芯X86 CPU架构的发展历程,从公司成立背景到关键技术授权,再到具体芯片架构的演进,全面解析了兆芯在国产CPU领域的贡献与挑战。 ... [详细]
  • 在Cisco IOS XR系统中,存在提供服务的服务器和使用这些服务的客户端。本文深入探讨了进程与线程状态转换机制,分析了其在系统性能优化中的关键作用,并提出了改进措施,以提高系统的响应速度和资源利用率。通过详细研究状态转换的各个环节,本文为开发人员和系统管理员提供了实用的指导,旨在提升整体系统效率和稳定性。 ... [详细]
  • 为什么多数程序员难以成为架构师?
    探讨80%的程序员为何难以晋升为架构师,涉及技术深度、经验积累和综合能力等方面。本文将详细解析Tomcat的配置和服务组件,帮助读者理解其内部机制。 ... [详细]
  • C语言中全部可用的数学函数有哪些?2.longlabs(longn);求长整型数的绝对值。3.doublefabs(doublex);求实数的绝对值。4.doublefloor(d ... [详细]
  • DAO(Data Access Object)模式是一种用于抽象和封装所有对数据库或其他持久化机制访问的方法,它通过提供一个统一的接口来隐藏底层数据访问的复杂性。 ... [详细]
  • IOS Run loop详解
    为什么80%的码农都做不了架构师?转自http:blog.csdn.netztp800201articledetails9240913感谢作者分享Objecti ... [详细]
  • com.sun.javadoc.PackageDoc.exceptions()方法的使用及代码示例 ... [详细]
  • Ihavetwomethodsofgeneratingmdistinctrandomnumbersintherange[0..n-1]我有两种方法在范围[0.n-1]中生 ... [详细]
  • 单片微机原理P3:80C51外部拓展系统
      外部拓展其实是个相对来说很好玩的章节,可以真正开始用单片机写程序了,比较重要的是外部存储器拓展,81C55拓展,矩阵键盘,动态显示,DAC和ADC。0.IO接口电路概念与存 ... [详细]
  • 最详尽的4K技术科普
    什么是4K?4K是一个分辨率的范畴,即40962160的像素分辨率,一般用于专业设备居多,目前家庭用的设备,如 ... [详细]
  • 一篇关于五个编程问题的 Reddit 帖子引发了广泛讨论,特别是关于这些题目是否适合所有软件工程师。 ... [详细]
  • 如何在Java中使用DButils类
    这期内容当中小编将会给大家带来有关如何在Java中使用DButils类,文章内容丰富且以专业的角度为大家分析和叙述,阅读完这篇文章希望大家可以有所收获。D ... [详细]
  • 第二十五天接口、多态
    1.java是面向对象的语言。设计模式:接口接口类是从java里衍生出来的,不是python原生支持的主要用于继承里多继承抽象类是python原生支持的主要用于继承里的单继承但是接 ... [详细]
  • 如何将TS文件转换为M3U8直播流:HLS与M3U8格式详解
    在视频传输领域,MP4虽然常见,但在直播场景中直接使用MP4格式存在诸多问题。例如,MP4文件的头部信息(如ftyp、moov)较大,导致初始加载时间较长,影响用户体验。相比之下,HLS(HTTP Live Streaming)协议及其M3U8格式更具优势。HLS通过将视频切分成多个小片段,并生成一个M3U8播放列表文件,实现低延迟和高稳定性。本文详细介绍了如何将TS文件转换为M3U8直播流,包括技术原理和具体操作步骤,帮助读者更好地理解和应用这一技术。 ... [详细]
  • 作为140字符的开创者,Twitter看似简单却异常复杂。其简洁之处在于仅用140个字符就能实现信息的高效传播,甚至在多次全球性事件中超越传统媒体的速度。然而,为了支持2亿用户的高效使用,其背后的技术架构和系统设计则极为复杂,涉及高并发处理、数据存储和实时传输等多个技术挑战。 ... [详细]
author-avatar
懒训毛毛_770
这个家伙很懒,什么也没留下!
PHP1.CN | 中国最专业的PHP中文社区 | DevBox开发工具箱 | json解析格式化 |PHP资讯 | PHP教程 | 数据库技术 | 服务器技术 | 前端开发技术 | PHP框架 | 开发工具 | 在线工具
Copyright © 1998 - 2020 PHP1.CN. All Rights Reserved | 京公网安备 11010802041100号 | 京ICP备19059560号-4 | PHP1.CN 第一PHP社区 版权所有