持续集成与持续交付与持续部署

lambdarookie:

这三个术语有什么区别?我的大学提供以下定义:

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

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

连续交付被描述为连续交付后的逻辑下一步:只要产品通过质量检查,就自动将其部署到生产中!

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

这一切让我感到困惑。任何更详细(或附带示例)的解释都将受到赞赏!

Lakuzz:

持续集成

我同意你大学的定义。持续集成是开发人员如何将代码连续(而不是频繁)集成到主线的一种策略。

您可能会声称这只是版本控制系统中的分支策略。

它与您分配给开发人员的任务大小有关;如果估计一项任务需要4-5个工日,那么开发人员将没有任何动机在接下来的4-5天之内交付任何东西,因为他还没有做任何事情-到目前为止。

因此大小很重要:

small task = continuous integration
big task   = frequent integration

理想的任务大小不超过一天的工作。这样,开发人员自然会每天至少进行一次集成。

持续交付

连续交付中基本上有三所学校

持续交付是持续集成的自然延伸

这所学校着眼于Addison-Wesley的“ Martin Fowler”签名系列,并假设自2007年发行以来被称为“ Continuous Integration”,而2011年发行的被称为“ Continuous Delivery”,它们可能是1 + 2卷与连续事物有关的同一概念的想法

持续交付与敏捷软件开发有关

这所学校偏离了以下观点:“持续交付”就是要能够支持敏捷运动中的原理,这不仅是概念上的想法意向书,而且是现实生活中的现实。

沿用《敏捷宣言中的第一个原则,其中首次首次使用“连续交付”一词:

我们的首要任务是通过尽早并持续交付有价值的软件来满足客户。

这所学校声称“连续交付”是一个范式,它包含了对“完成的定义”进行自动验证所需的一切

这所学校接受“持续交付”和流行语或大趋势“ DevOps”是同一枚硬币的反面,从某种意义上说,他们都试图拥抱或封装这种新的范式或方法,而不仅仅是一种技术。

持续交付是持续部署的同义词

第三所学校主张“ 持续部署”和“ 持续交付”可以互换使用,指的是同一件事。

当开发人员准备好某些东西时,它会立即交付给最终用户,这在大多数情况下意味着应该将其部署到生产环境中。因此,“部署”和“交付”的含义相同。

参加哪所学校

您的大学显然加入了第一所学校,并声称我们指的是同一出版物系列的第1 + 2卷。我认为这是对“持续交付”一词的误用。

我本人主张理解“ 持续交付”与为敏捷运动所陈述的思想和概念提供现实支持有关。因此,我加入了这所学校的行列,该术语涵盖了整个范式-例如“ DevOps”。

使用交付作为部署同义词的学校主要是由创建部署控制台的工具供应商提倡的,他们试图从持续交付一词的更广泛使用中获得一点炒作

持续部署

在最终用户对软件更新的访问依赖于此信息的某些集中式源的更新并且该集中式源由于其整体性或一致性太强而并不总是易于更新的领域中,对持续部署的关注最为相关。本质上(网络,SOA,数据库等)。

对于很多生产软件的域,其中没有集中的信息源(设备,消费产品,客户端安装等),或者集中的信息源易于更新(应用程序存储工件管理系统,开放源代码存储库等)。 ),关于“持续部署”一词几乎没有大肆宣传。他们只是部署;这不是一件大事-这不是需要特别关注的痛苦。

持续部署并不是每个人都普遍感兴趣的事实,这也证明了认为“交付”和“部署”是同义词的学校的理解是错误的。因为“连续交付”实际上对每个人都非常有意义-即使您正在设备中进行嵌入式软件开发或为框架发布开放源代码插件也是如此。

您大学对“持续部署是持续交付的自然下一步”的定义隐含地假设,经过质量检查的每个交付都应立即提供给最终用户,这更接近于我的部落用来描述“持续交付”的定义。释放”,这又是另一个对所有人都没有意义的概念。

发布可能是一项具有战略意义或政治意义的事情,没有理由假设每个人都希望一直这样做(除非他们是一家在线书店,是一家流媒体服务公司)。但是,不会一直盲目发布所有内容的公司可能出于多种原因而仍然希望成为部署大师,因此他们也进行了持续部署不是发布到生产环境,而是发布类似生产环境的候选版本

我再次相信你的大学做错了。他们误以为“连续发布”的“连续部署”。

连续部署只是不断地将开发过程的结果转移到可以全面执行功能测试的生产环境中的原则。

持续交付故事情节

在图片中,一切都变得生动起来:

在此处输入图片说明

持续集成过程是状态转换图中的前两个动作。如果成功,这将启动实现完成定义的持续交付管道部署只是在此管道中必须连续执行的许多操作之一。理想情况下,该过程是自动的,从开发人员提交到VCS到管道确认我们有有效的候选版本为止。

本文收集自互联网,转载请注明来源。

如有侵权,请联系 [email protected] 删除。

编辑于
0

我来说两句

0 条评论
登录 后参与评论

相关文章