持续集成
我同意你们大学的定义。持续集成是一种开发人员如何持续(而不是频繁)将代码集成到主线的策略。
您可能会声称这只是版本控制系统中的一个分支策略。
这与您分配给开发人员的任务大小有关;如果一项任务预计需要 4-5 个工作日,那么开发人员将不会在接下来的 4-5 天内交付任何东西,因为他还没有完成任何事情。
所以尺寸很重要:
small task = continuous integration
big task = frequent integration
理想的任务规模不超过一天的工作量。这样一来,开发人员自然会每天至少进行一次集成。
持续交付
基本上有三种schools在持续交付中:
持续交付是持续集成的自然延伸
这所学校,着眼于艾迪生·韦斯利“马丁·福勒”签名系列 http://www.pearsonhighered.com/educator/series/AddisonWesley-Signature-Series-Fowler/11761.page并假设自 2007 年发布以来被称为“持续集成”2011 年推出的一款名为“持续交付”它们可能是与连续性有关的相同概念思想的第 1+2 卷某物.
持续交付与敏捷软件开发有关
这所学校的理念是,持续交付就是能够支持敏捷运动中的原则,而不仅仅是作为概念想法 or a 意向书但对于真实的——在现实生活中。
抵消第一原则敏捷宣言 http://agilemanifesto.org/principles.html其中“持续交付”一词实际上是第一次使用:
我们的首要任务是通过尽早持续交付有价值的软件来满足客户的需求。
这所学校声称“持续交付”是一种范式,它包含了对您的信息进行自动验证所需的一切。“完成的定义” http://guide.agilealliance.org/guide/definition-of-done.html.
这所学校接受“持续交付”和流行词或大趋势"DevOps" http://www.google.com/trends/explore#q=DevOps是同一枚硬币的两面,从某种意义上说,它们都试图接受或封装这种新的范式或方法,而不仅仅是一种技术。
持续交付是持续部署的同义词
第三流派主张持续部署 and 持续交付可以互换使用来表示同一件事。
当开发人员手中的东西准备就绪时,它会立即交付给最终用户,这在大多数情况下意味着它应该部署到生产环境中。因此,“部署”和“交付”的含义相同。
加入哪所学校
你们大学显然加入了第一所学校,并声称我们指的是同一出版物系列的第 1+2 卷。我的观点是,这是对“持续交付”一词的误用。
我个人主张这样的理解持续交付与对敏捷运动所阐述的想法和概念实施现实生活支持有关。所以我加入了一个学校,该学校说这个术语包含了一个完整的范式——比如“DevOps”。
使用的学校delivery作为同义词deploy主要由创建部署控制台的工具供应商提倡,试图从该术语的更广泛使用中获得一些炒作持续交付.
持续部署
对持续部署的关注主要与以下领域相关:最终用户对软件更新的访问依赖于该信息的某些集中式源的更新,并且该集中式源并不总是易于更新,因为它是单一的或具有(太)高的一致性本质上(Web、SOA、数据库等)。
对于许多生产软件的领域来说,这些领域没有集中的信息源(设备、消费产品、客户端安装等),或者集中的信息源很容易更新(应用程序商店工件管理系统、开源存储库等)。 ),关于持续部署这个术语几乎没有任何炒作。他们只是部署;这不是什么大事——也不是需要特别关注的痛苦。
事实上,持续部署并不是每个人都感兴趣的事情,这也说明那些声称“交付”和“部署”是同义词的学派完全错了。因为持续交付实际上对每个人都非常有意义 - 即使您正在设备中开发嵌入式软件或为框架发布开源插件。
你们大学对持续部署是持续交付的自然下一步的定义隐含地假设经过质量检查的每个交付都应立即可供最终用户使用,这更接近我的部落用来描述术语“持续”的定义发布”,这又是另一个通常对每个人都没有意义的概念。
发布可能是一件非常具有战略性或政治性的事情,没有理由假设每个人都想一直这样做(除非他们是一家在线书店,一种流媒体服务类型的公司)。尽管如此,那些不会一直盲目地发布所有内容的公司可能有很多理由希望成为部署大师,所以他们也这么做了持续部署。不是发布到生产,而是候选版本 to 类似生产的环境。
我再次相信你们大学搞错了。他们将“持续部署”误认为“持续发布”。
持续部署只是不断能够将开发过程的结果转移到可以全面执行功能测试的类似生产环境的学科。
持续交付的故事情节
在图片中,一切都变得生动起来:
持续集成过程是状态转换图中的前两个操作。如果成功的话,将启动持续交付管道,以实现完成的定义。部署只是此管道中必须持续执行的众多操作之一。理想情况下,从开发人员提交到 VCS 到管道确认我们拥有有效的候选版本,整个过程都是自动化的。