Continuous integration 持续集成、持续交付和DevOps之间的区别是什么?

Continuous integration 持续集成、持续交付和DevOps之间的区别是什么?,continuous-integration,devops,continuous-delivery,Continuous Integration,Devops,Continuous Delivery,我一起听到这些术语,不知道有什么区别?它们与连续构建和连续部署有什么关系?不同的人如何使用连续xxx短语可能有些模糊,但我认为这篇博文总结得很好 DevOps与其说是一个具体的实践,不如说是一个总体的想法,有点像敏捷是一个想法,而单元测试是一种实践。/continuous builds就是让开发人员将代码提交到源代码存储库中,很少且经常提交(并从存储库获取最新版本,因此任何进一步的更改都基于其他开发人员最近的更改)。这减少了在合并解析上浪费的时间,因为在这种情况下合并更容易 该过程最好使用构建

我一起听到这些术语,不知道有什么区别?它们与连续构建和连续部署有什么关系?

不同的人如何使用连续xxx短语可能有些模糊,但我认为这篇博文总结得很好

DevOps与其说是一个具体的实践,不如说是一个总体的想法,有点像敏捷是一个想法,而单元测试是一种实践。

/continuous builds就是让开发人员将代码提交到源代码存储库中,很少且经常提交(并从存储库获取最新版本,因此任何进一步的更改都基于其他开发人员最近的更改)。这减少了在合并解析上浪费的时间,因为在这种情况下合并更容易

该过程最好使用构建服务器实现自动化,构建服务器也可以运行任何单元测试。然后在构建/测试失败的情况下向开发人员提供反馈,以便快速修复任何问题

持续部署涉及将构建过程中的构建构件自动部署到测试和生产环境中。为了降低与此相关的风险,人们通常使用将发布(以受控方式)与部署分离

持续交付与技术无关,而与组织的软件交付方法有关(尽管IT确实大量使用自动化)

DevOps是一个更大的领域,它通常强调打破开发人员和运营团队之间的障碍,让他们以一种能够从综合技能中获益的方式进行协作。环境资源调配、构建部署、监控(以及对问题和可伸缩性的自动反应)更加自动化在一些组织中,专门的DevOps团队已经成立。

连续交付(CD)是一个概念,在2010年由ThoughtWorks的Jez Humble和David Farley合著的书中首次描述

持续集成和持续交付经常相互混淆,但有一些关键区别:

  • CI可以由一个开发人员完成,其中CD需要团队协作
  • 没有CI,CD无法完成
  • CD是一个线性过程,CI是一个持续的反馈(构建)循环,推动CD前进
  • 有了CD,您随时可以推送到prod
  • CI允许您多次将代码签入repo,以便您可以及早发现问题
以下是一段引自:

“持续集成是一种软件开发实践 团队成员经常整合他们的工作,通常是每个人 每天至少进行一次集成-每天可进行多次集成。 每个集成都通过一个自动构建(包括测试)来验证 尽快检测集成错误。许多团队发现 这种方法大大减少了集成问题和 允许团队更快地开发具有凝聚力的软件。”

连续交付和连续部署之间的主要区别在于自动化。您可以自动化部署方面的工作。如果您一天要推动多次生产或出于各种其他原因,这一点非常有效

至于DevOps,那是另一个蜡球。人们通常认为DevOps是一个角色或工具,但它实际上是一种文化。你不“做”DevOps。我非常喜欢Mike Kavis的一句话:

“DevOps是一种文化转变或是一种鼓励伟大变革的运动 沟通与合作(又名团队合作)促进建设 更高质量的软件更快更可靠。”


FWIW,这看起来是一个很好的候选问题,适用于关于Area51的
DevOps
SE提案,以防您有兴趣加入:参见