DevOps 101:持续集成/持续交付
当你刚进入一个新行业时,你会遇到很多新概念。这可能会让你很难在一个陌生的环境中站稳脚跟,尤其对于初级工程师来说更是如此。在本系列文章中,我将介绍DevOps 领域常用的工具和术语,偶尔也会提供一些面向新手的、针对新兴或成熟技术的教程。如果您有任何要求或建议,请告诉我!
今天,我将详细讲解 CI/CD。
那到底是什么意思?
CI 代表持续集成 (Continuous Integration ),而 CD 可以代表持续交付 (Continuous Delivery)或持续部署 (Continuous Deployment)。是的,它们的含义并不相同。我知道,我知道,这听起来好像有点复杂,但我保证其实没那么难。
持续集成是什么意思?
持续集成意味着每天多次将所有开发人员的工作代码库与源代码合并。这样做需要一系列自动化构建和单元测试,以确保所有提出的更改都不会导致问题,但其结果是,可以在开发过程的早期就发现错误和集成问题。它还迫使工程师编写更模块化的代码,从而使后续维护更加容易。
持续集成早在 20 世纪 90 年代初就已出现。虽然它并非一直被称为持续集成,而且一些实现方式也发生了变化,但其核心精神始终如一:以更小但更频繁的增量将变更合并到源代码中,测试项目在变更后是否仍然能够构建和运行,并确保所有工程师都在使用最新版本的源代码。这样做,在构建时就不会遇到大量的合并冲突或意外问题。
好的,持续交付和持续部署有什么区别?
持续交付顾名思义:软件更新会持续不断地交付。结合持续集成,这意味着您可以快速部署新版本,因为您已经自动化了一些原本需要手动执行的质量控制环节,例如构建和测试。手动工作的减少意味着您可以发布一系列小的变更,而不是每隔几个月发布一次大型更新。由于您现在进行的变更更小、更渐进,因此您可以更加确信,在部署给用户时不会出现问题。
持续部署与之类似,但它更进一步——部署过程也是自动化的。在持续交付中,更新正式发布前仍然需要人工质量把关。这对于某些人来说是一个颇具争议的做法,需要对系统抱有很大的信任,但我个人非常支持这种做法。为了使现代DevOps 流水线(以及你)尽可能高效,必须尽可能减少人为干预。我经常强调这一点,但我们真的非常不擅长重复性工作——我们会感到厌倦,容易分心,而且速度很慢。编写完善全面的测试,尽可能地自动化所有流程,然后接受这样一个事实:无论是否有人点击“发布”按钮,你最终都肯定会部署一个有问题的更新。
等等,CI/CD是什么?它能给我带来什么?简单概括一下。
CI/CD 正是这些概念融合的体现。它是 DevOps 的重要组成部分,因为自动化和效率是我们一切工作的核心,而这两者在 DevOps 的语境下缺一不可。
实施 CI/CD 实践可以带来更快、更可靠的发布周期。您可以更快地添加新功能或修复 bug,因为您知道所有工程师都在使用最新源代码,并且有单元测试和集成测试,构建也完全没问题。工程师、QA 或其他负责质量把关的人员无需手动执行大量步骤;只需有人提交代码或发起拉取请求,这些步骤就由 CI/CD 工具自动完成。
这究竟是如何运作的?
首先,你需要一个 CI/CD 工具。它可以帮你自动化很多手动流程。虽然在新项目启动之初需要花些时间进行设置,但我个人比较懒,愿意在初期多花点时间,确保以后每次推送代码时都不必重复执行大量繁琐的手动操作。不同工具的配置细节各不相同,所以请查阅你所选工具的文档,但总的来说,它们的工作原理都差不多:
你可以设置一个触发器,比如让它监视你的源代码仓库,等待提交或合并。然后,你可以配置一系列步骤,每个步骤都有通过/失败条件,比如告诉它如何运行单元测试、构建、扫描漏洞或部署应用程序。有了足够详细的 CI/CD 流水线,你只需要编写代码并推送即可——系统会为你处理其他一切。这真是太棒了。
没错,听起来棒极了,我报名。
如果您已经在使用 Artifactory 或 Xray 等 JFrog 工具,那么留在同一个生态系统中并试用 Pipelines 就很有意义。这样,所有功能都可以通过一个统一的用户界面访问。Pipelines 可以与大多数其他 DevOps 工具集成,并原生处理大量操作,因此可以最大限度地降低构建出“弗兰肯斯坦怪物”式基础设施的风险。配置仅需 YAML 文件。如果您想同时试用 Pipelines、Artifactory 和 Xray,可以点击此处获取云托管试用版。
对于免费增值解决方案(免费版功能有限,但通常足以满足个人项目或小型项目的需求),我非常喜欢 CircleCI 和 TravisCI。它们都是云端解决方案,内置丰富的集成功能,配置都非常简单,并且都支持多种流行的编程语言。它们在版本控制和构建环境的选择上各有不同。
请像写高中作文一样总结一下。
总之,CI/CD 是一套方法论和工具的结合,旨在通过自动化构建、测试和部署等任务,提高开发人员的速度和效率,从而让您能够更频繁地执行这些操作。这样做的好处是:软件发布频率更高,缺陷发现得更早,并且不良版本上线的概率更低。市面上有很多工具可以帮助您实现这一目标,从 Travis CI 或 CircleCI 等免费增值工具,到 JFrog Pipelines 等具有附加功能的企业级工具,应有尽有。
我希望这篇文章能帮助你理解 CI/CD 的概念及其作用。如果你还有疑问,也没关系——这的确是一个比较复杂的问题,而且有些方面仍在不断变化。如果你还有其他问题,欢迎在评论区留言或在 Twitter 上联系我(@Dixie3Flatline)。敬请期待本系列的下一篇文章,如果你有任何建议或要求,也请告诉我!
文章来源:https://dev.to/jfrog/devops-101-ci-cd-49il