【.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】
