当前位置: 首页 > 科技观察

ThoughtWorks高级质量顾问秦五一:持续集成的腐败与涅槃的重生

时间:2023-03-12 10:40:26 科技观察

【.com原稿】2018年5月18-19日,由中国主办的全球软件与运维技术峰会召开在北京。峰会围绕人工智能、大数据、物联网、区块链等12个核心热点,汇聚了60位海内外一线专家。错过平台。  在“DevOps转型之路”分会场,ThoughtWorks高级质量顾问秦五一带来了《持续集成腐化与涅槃重生》的主题分享。会后,记者梳理了秦武义在WOT2018全球软件与运维技术峰会上的演讲内容。  持续集成就是每天都要集成  持续集成是在1991年IBM院士GradyBooch在他的Booch方法中提出ContinuousIntegration这个词后,XP才采用并广泛推广的持续集成。大家平时听到或者说的持续集成提一下,也就是CI这个词,其实指的是持续集成工具,比如CITools、Jenkins、TeamCity、GoCD等,都是比较狭义的概念。  ThoughtWorks资深科学家MartinFowler指出,持续集成就是让团队成员尽早、尽可能频繁地集成手头的工作,至少每天一次或更多,以便及早发现集成问题,使团队更快更好地开发出高质量的软件。  秦无意认为,持续集成的本质是一套软件开发实践。虽然持续集成的含义在这些年的发展过程中不断演变,从早期的只是代码集成开发,到现在包含单元测试、集成测试甚至端到端测试,其最终目标是能够发现系统之间的差异。集成问题,加快软件启动时间,缩短开发周期。因此,持续集成的核心理念是每天至少集成一次,尽早发现问题,尽快解决问题。  秦无意在演讲中提到,虽然团队中每个人每天至少集成一次,而且大部分都是通过自动化构建和测试,但看起来非常安全。但是,即便如此,还是可以发现一些问题。  DevOps与CI/CD的区别  相对于持续集成,DevOps来的晚很多,但是近几年非常流行。秦武义表示,DevOps之所以大行其道,是因为它从根本上指出了团队从需求到软件上线的痛点,形成了Dev、QA、Ops紧密结合的团队文化。融合的。DevOps所蕴含的实践已经得到国内外著名互联网技术巨头的证实,能够有效提高企业对瞬息万变的市场的响应速度。比如10年前,我们的软件上线,给客户带来价值,需要几个月的时间。今天,很多公司可以轻松地每两周上线一次。在互联网公司中,Web应用甚至可以每天随时上线。  秦武义表示,很多人仍然认为DevOps是一个狭义的DevOps工具链,比如持续集成工具(如Jenkins)、测试工具、监控工具等,因为它们类似于持续集成/持续交付目标,期望缩短从需求到实际交付的周期,从而实现更快、更可靠的软件发布。事实上,DevOps更注重从人的角度进行软件交付,通常侧重于组织文化的转变,以提高不同团队之间的协作效率,例如演讲中的团队文化改革和持续改进意识。CI/CD从技术角度更加关注软件交付,通过自动化构建、测试、部署流程等技术手段提高交付效率。虽然目标相同,但不是一个级别的概念。一般来说,我们认为CI/CD是实现DevOps的重要技术手段之一,但是CI/CD的实现并不代表DevOps的实现,就像演讲中提到的案例,虽然团队有完善的CI/CD工具链,但最终并没有提高交付速度和质量。  持续集成的构建步骤和原则  秦武义认为,在DevOps过程中,持续集成是非常重要的实践,为DevOps提供了技术支持。因此,在DevOps工具链中,持续集成工具几乎是标配。  秦无意强调,一个正确的搭建流程至少包括源码控制服务器、CI服务器和本地开发软件,必须经过以下七个步骤:  1)将集成源代码复制到本地;  2)修改产品代码,增加修改自动化测试;  3)在本地启动自动化构建;  4)构建成功后,将别人的修改更新到我的工作副本;  5)重建;  6)提交修改到源码仓库;  7)基于主线代码在集成计算机上再次构建。  除了以上七个步骤,持续集成还必须遵守以下七个原则:  1)经常提交代码;  2)不提交无法构建的代码;  4)编写自动化测试;  5)必须通过所有测试和审核;  6)执行私人构建;  7)避免签出无法构建的代码。  你应该经常学习持续集成工具背后的思想  现在,如果你在网上搜索DevOps工具,你会发现几乎所有与软件开发和部署相关的工具,其名称后面都标有一个大大的DevOps.标签。甚至,很多公司专门成立了DevOpsTeams,使用Jenkins、ansible、Dynatrace等DevOps工具来维护CI、云、监控系统等。  秦武义说背后有一套思路任何工具都要支持工具的价值,DevOps也不例外。如果你不能经常学习工具背后的思想,在线监测和用户行为分析形成反馈循环,你仍然无法用好持续集成工具。  ThoughtWorks的持续集成工具叫做GoCD,开源在github上,官网叫做持续交付工具。由于GoCD在开发之初就考虑到了部署到线上环境的便利性,完全从pipelineascode的角度进行设计,所以它有两大特点:  一是复杂工作流的编排。例如,在某知名通信设备厂商的项目中,客户的工作流程非常复杂。大量并行任务成功后,触发新的阶段。在这个过程中,GoCD是完全可见的,给用户带来了非常友好的体验。  二是所有的作业都原生支持pipelineascodewriting,这为更好的实现高度自动化的交付提供了很好的保障。  秦武义在演讲中分享到,虽然工具的使用只是解决了当下暂时的问题,但我们在软件交付中遇到的问题总是持续不断的。因此,为了更好地使用工具,你应该经常学习工具背后的思想。只有深入了解和学习工具背后的思想,才能真正用好持续集成工具。【原创稿件,合作网站转载请注明原作者和出处为.com】