这三个词的区别是什么?我所在的学校提供了以下定义:
持续集成基本上意味着开发人员的工作副本每天多次与共享主线同步。
持续交付被描述为持续集成的逻辑演进:始终能够将产品投入生产!
持续部署被描述为持续交付之后的逻辑下一步:只要产品通过QA,就自动将其部署到生产环境!
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。
所有这些都让我感到困惑。任何更详细的解释(或附带一个例子)都是非常感谢的!
这三个词的区别是什么?我所在的学校提供了以下定义:
持续集成基本上意味着开发人员的工作副本每天多次与共享主线同步。
持续交付被描述为持续集成的逻辑演进:始终能够将产品投入生产!
持续部署被描述为持续交付之后的逻辑下一步:只要产品通过QA,就自动将其部署到生产环境!
它们还提供了一个警告:如果您能够持续部署到测试系统,有时也会使用术语“持续部署”。
所有这些都让我感到困惑。任何更详细的解释(或附带一个例子)都是非常感谢的!
当前回答
根据我和Alex Cowan在持续交付和开发运维课程中所学到的,CI和CD是产品管道的一部分,包括从观察到发布产品的时间。
从观察到设计的目标是得到高质量的可测试的想法。这部分过程被认为是持续设计。
之后发生的事情,当我们从代码开始,它被认为是一种持续交付能力,其目标是非常快速地执行想法并发布给客户(你可以阅读Jez Humble的书《持续交付:通过构建、测试和部署自动化的可靠软件发布》了解更多细节)。下面的管道说明持续集成(CI)和持续交付(CD)由哪些步骤组成。
持续集成,正如Mattias Petter Johansson解释的那样,
当一个软件团队有每天进行多次合并的习惯时 他们有一个自动验证系统来检查这些 合并问题。
(您可以观看以下两个视频,以获得使用CircleCI -开始使用CircleCI -持续集成P2和在拉请求上运行CircleCI的更实际的概述)。
可以像下面这样指定CI/CD管道,从新代码到发布的产品。
前三个步骤与测试有关,扩展被测试对象的边界。
另一方面,持续部署是自动处理部署。因此,任何通过自动化测试阶段的代码提交都会自动发布到生产环境中。
注意:这并不一定是您的管道应该是什么样的,但它们可以作为参考。
其他回答
持续集成、持续交付和持续部署之间的区别
我认为我们过度分析了“连续”一组词,可能把它复杂化了一点。在这种情况下,连续意味着自动化。对于“continuous”后面附加的其他单词,请使用英语作为翻译指南,不要试图把事情复杂化!
在“持续构建”中,我们自动构建(写入/编译/链接/等)我们的应用程序为特定平台/容器/运行时/等可执行的内容。
"Continuous integration" means that your new functionality tests and performs as intended when interacting with another entity. Obviously, before integration takes place, the build must happen and thorough testing would also be used to validate the integration. So, in "continuous integration" one uses automation to add value to an existing bucket of functionality in a way that doesn't negatively disrupt the existing functionality but rather integrates nicely with it, adding a perceived value to the whole.
从简单的英语定义来看,集成意味着事物和谐地运行,在代码对话中,我的add在整体中编译、链接、测试和运行完美无缺。如果一个东西不能得到最终产品你就不能称之为集成,对吧!
In our context "Continuous deployment" is synonymous with "continuos delivery" since at the end of the day we've provided functionality to our customers. However, by overanalyzing this, I could argue that deploy is a subset of delivery because deploying something doesn't necessarily mean that we delivered. We deployed the code but because we haven't effectively communicated to our stakeholders, we failed to deliver from a business perspective! We deployed the troops but we haven't delivered the promised water and food to the nearby town.
如果我加上“连续过渡”一词,它会有自己的优点吗?毕竟,也许它更适合描述代码在环境中的移动,因为它具有“从/到”的内涵,而不是部署或交付,后者可能只意味着永久地在一个位置!如果我们不运用常识,这就是我们得到的结果。
总之,这是很简单的描述(做起来有点…复杂!),只要使用常识,英语,你就会好起来的。
根据我和Alex Cowan在持续交付和开发运维课程中所学到的,CI和CD是产品管道的一部分,包括从观察到发布产品的时间。
从观察到设计的目标是得到高质量的可测试的想法。这部分过程被认为是持续设计。
之后发生的事情,当我们从代码开始,它被认为是一种持续交付能力,其目标是非常快速地执行想法并发布给客户(你可以阅读Jez Humble的书《持续交付:通过构建、测试和部署自动化的可靠软件发布》了解更多细节)。下面的管道说明持续集成(CI)和持续交付(CD)由哪些步骤组成。
持续集成,正如Mattias Petter Johansson解释的那样,
当一个软件团队有每天进行多次合并的习惯时 他们有一个自动验证系统来检查这些 合并问题。
(您可以观看以下两个视频,以获得使用CircleCI -开始使用CircleCI -持续集成P2和在拉请求上运行CircleCI的更实际的概述)。
可以像下面这样指定CI/CD管道,从新代码到发布的产品。
前三个步骤与测试有关,扩展被测试对象的边界。
另一方面,持续部署是自动处理部署。因此,任何通过自动化测试阶段的代码提交都会自动发布到生产环境中。
注意:这并不一定是您的管道应该是什么样的,但它们可以作为参考。
持续集成
自动化(签入+单元测试的构建)
持续交付
持续集成 自动化(部署到测试环境+负载测试+集成测试) 手动(从部署到生产)
持续部署
持续交付但自动化(部署到生产)
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交付
我认为亚马逊的定义是直接和简单的理解。
持续交付是一种软件开发方法,其中发布过程是自动化的。每个软件变更都会自动构建、测试并部署到生产环境中。在最终发布到生产环境之前,由一个人、一个自动化测试或一个业务规则决定何时进行最后的发布。尽管每个成功的软件变更都可以立即发布到持续交付的生产环境中,但并不是所有的变更都需要立即发布。
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