这三个词的区别是什么?我所在的学校提供了以下定义:
持续集成基本上意味着开发人员的工作副本每天多次与共享主线同步。
持续交付被描述为持续集成的逻辑演进:始终能够将产品投入生产!
持续部署被描述为持续交付之后的逻辑下一步:只要产品通过QA,就自动将其部署到生产环境!
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。
所有这些都让我感到困惑。任何更详细的解释(或附带一个例子)都是非常感谢的!
这三个词的区别是什么?我所在的学校提供了以下定义:
持续集成基本上意味着开发人员的工作副本每天多次与共享主线同步。
持续交付被描述为持续集成的逻辑演进:始终能够将产品投入生产!
持续部署被描述为持续交付之后的逻辑下一步:只要产品通过QA,就自动将其部署到生产环境!
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。
所有这些都让我感到困惑。任何更详细的解释(或附带一个例子)都是非常感谢的!
当前回答
一个图表可以代替很多单词:
享受吧!:-)
#我已经更新了正确的图片…
其他回答
来源:https://thenucleargeeks.com/2020/01/21/continuous-integration-vs-continuous-delivery-vs-continuous-deployment/
什么是持续集成 持续集成是一个自动构建和自动测试的过程或开发实践,即开发人员需要多次将他的代码提交到一个共享存储库中,其中每次集成都通过自动构建和测试进行验证。
如果构建失败/成功,它会通知开发人员,然后他可以采取相关行动。
什么是持续交付 持续交付是一种实践,在这种实践中,我们保持我们的代码在任何通过所有测试并具有将代码推入生产环境所需的所有配置的地方都是可部署的,但还没有部署。
什么是持续部署 在CI的帮助下,我们已经为我们的应用程序创建了构建,并准备将其推向生产环境。在这一步中,我们的构建已经准备好了,通过CD,我们可以直接将应用部署到QA环境中,如果一切顺利,我们可以将相同的构建部署到生产环境中。
所以基本上,持续部署比持续交付更进一步。通过这种实践,通过您的生产管道的所有阶段的每个变更都被发布给您的客户。
持续部署是配置管理和容器化的结合。
配置管理:CM主要是维护与应用程序需求兼容的服务器配置。
容器化:容器化是一组将在整个环境中保持一致性的费用。
Img来源:https://www.atlassian.com/
一个图表可以代替很多单词:
享受吧!:-)
#我已经更新了正确的图片…
问题和答案都不符合我简单的思考方式。我是一名顾问,并与许多开发团队和DevOps人员同步了这些定义,但我很好奇它如何与整个行业相匹配:
基本上,我认为持续交付的敏捷实践就像一个连续体:
非连续(一切手工)0% ----> 100%持续交付价值(一切自动化)
实现持续交付的步骤:
零。当开发人员签入代码时,没有什么是自动的……如果他们在签入之前已经编译、运行或执行了任何测试,那么您就很幸运了。
Continuous Build: automated build on every check-in, which is the first step, but does nothing to prove functional integration of new code. Continuous Integration (CI): automated build and execution of at least unit tests to prove integration of new code with existing code, but preferably integration tests (end-to-end). Continuous Deployment (CD): automated deployment when code passes CI at least into a test environment, preferably into higher environments when quality is proven either via CI or by marking a lower environment as PASSED after manual testing. I.E., testing may be manual in some cases, but promoting to next environment is automatic. Continuous Delivery: automated publication and release of the system into production. This is CD into production plus any other configuration changes like setup for A/B testing, notification to users of new features, notifying support of new version and change notes, etc.
EDIT: I would like to point out that there's a difference between the concept of "continuous delivery" as referenced in the first principle of the Agile Manifesto (http://agilemanifesto.org/principles.html) and the practice of Continuous Delivery, as seems to be referenced by the context of the question. The principle of continuous delivery is that of striving to reduce the Inventory waste as described in Lean thinking (http://www.miconleansixsigma.com/8-wastes.html). The practice of Continuous Delivery (CD) by agile teams has emerged in the many years since the Agile Manifesto was written in 2001. This agile practice directly addresses the principle, although they are different things and apparently easily confused.
持续集成:是开发人员尽可能频繁地将对代码库的更改合并到主分支的实践。通过创建构建,然后对构建运行自动化测试来验证这些更改。如果这些测试没有通过,更改就不会合并,开发人员就会避免可能发生的集成挑战。
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.
持续部署:比持续交付更进一步。在这里,在管道的每个阶段通过验证步骤的所有更改都将发布到生产环境中。这个过程是完全自动化的,只有一个失败的验证步骤才能阻止将更改推到生产环境中。
持续集成
自动化(签入+单元测试的构建)
持续交付
持续集成 自动化(部署到测试环境+负载测试+集成测试) 手动(从部署到生产)
持续部署
持续交付但自动化(部署到生产)
CI/CD是一段旅程。不是目的地。
These stages are suggestions. You can adapt the stages based on your business need. Some stages can be repeated for multiple types of testing, security, and performance. Depending on the complexity of your project and the structure of your teams, some stages can be repeated several times at different levels. For example, the end product of one team can become a dependency in the project of the next team. This means that the first team’s end product is subsequently staged as an artifact in the next team’s project.
补充说明:
连续练习 集成与持续 AWS交付