这三个词的区别是什么?我所在的学校提供了以下定义:

持续集成基本上意味着开发人员的工作副本每天多次与共享主线同步。

持续交付被描述为持续集成的逻辑演进:始终能够将产品投入生产!

持续部署被描述为持续交付之后的逻辑下一步:只要产品通过QA,就自动将其部署到生产环境!

它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。

所有这些都让我感到困惑。任何更详细的解释(或附带一个例子)都是非常感谢的!


当前回答

让我们长话短说:

置信区间: 一种软件开发实践,团队成员至少每天集成他们的工作。每个集成都通过自动构建(包括测试)进行验证,以尽可能快地检测错误。 CD: CD构建在CI之上,在CI中构建软件时,软件可以在任何时候发布到生产环境。

其他回答

Atlassian发布了一个关于持续集成、持续交付和持续部署的很好的解释。

简而言之:

持续集成——是 每当新提交被推入分支时,自动构建和测试应用程序。

持续交付——即持续集成+通过“点击一个按钮”将应用程序部署到生产环境(通常是发布给客户,但按需发布)。

持续部署-是 持续交付,但没有人为干预(向客户发布正在进行中)。

来源:https://thenucleargeeks.com/2020/01/21/continuous-integration-vs-continuous-delivery-vs-continuous-deployment/

什么是持续集成 持续集成是一个自动构建和自动测试的过程或开发实践,即开发人员需要多次将他的代码提交到一个共享存储库中,其中每次集成都通过自动构建和测试进行验证。

如果构建失败/成功,它会通知开发人员,然后他可以采取相关行动。

什么是持续交付 持续交付是一种实践,在这种实践中,我们保持我们的代码在任何通过所有测试并具有将代码推入生产环境所需的所有配置的地方都是可部署的,但还没有部署。

什么是持续部署 在CI的帮助下,我们已经为我们的应用程序创建了构建,并准备将其推向生产环境。在这一步中,我们的构建已经准备好了,通过CD,我们可以直接将应用部署到QA环境中,如果一切顺利,我们可以将相同的构建部署到生产环境中。

所以基本上,持续部署比持续交付更进一步。通过这种实践,通过您的生产管道的所有阶段的每个变更都被发布给您的客户。

持续部署是配置管理和容器化的结合。

配置管理:CM主要是维护与应用程序需求兼容的服务器配置。

容器化:容器化是一组将在整个环境中保持一致性的费用。

Img来源:https://www.atlassian.com/

持续集成、持续交付和持续部署之间的区别

我认为亚马逊的定义是直接和简单的理解。

持续交付是一种软件开发方法,其中发布过程是自动化的。每个软件变更都会自动构建、测试并部署到生产环境中。在最终发布到生产环境之前,由一个人、一个自动化测试或一个业务规则决定何时进行最后的发布。尽管每个成功的软件变更都可以立即发布到持续交付的生产环境中,但并不是所有的变更都需要立即发布。

Continuous integration is a software development practice where members of a team use a version control system and integrate their work frequently to the same location, such as a master branch. Each change is built and verified by tests and other verifications in order to detect any integration errors as quickly as possible. Continuous integration is focused on automatically building and testing code, as compared to continuous delivery, which automates the entire software release process up to production."

请访问http://docs.aws.amazon.com/codepipeline/latest/userguide/concepts.html

持续集成:是开发人员尽可能频繁地将对代码库的更改合并到主分支的实践。通过创建构建,然后对构建运行自动化测试来验证这些更改。如果这些测试没有通过,更改就不会合并,开发人员就会避免可能发生的集成挑战。

Continuous Delivery : is an extension of CI since it enables automation to deploy all the code changes to an environment (dev, qa, stage, prod, etc) after the changes have been merged. The artifact may be built as part of CI or as part of this process since the source of truth (your repository) is reliable given your CI process. In simple terms, this means that there is an automated release process on top of the automated testing process and that developers can deploy their changes at any time by simply clicking a button or at the completion of CI.

持续部署:比持续交付更进一步。在这里,在管道的每个阶段通过验证步骤的所有更改都将发布到生产环境中。这个过程是完全自动化的,只有一个失败的验证步骤才能阻止将更改推到生产环境中。