持续交付:概念和工具简介

这是“连续交付”系列中的第一篇文章。 我们将以持续交付的简要说明开始旅程。 在简短浏览了当今使用的一些工具之后,我们将朝着流程发展(从设置全新的环境,从存储库获取代码,到创建经过全面测试和验证的发行版)。 每个部分将介绍不同的方法,比较不同的工具,最后提供一些动手实例。 完成流程之后,我们将探讨开发生命周期中所需的更改。 最后,我们将深入探讨从持续集成过渡到持续交付和部署所需的最后步骤。

“传统代码是没有测试的代码” – Michael Feathers

根据马丁·福勒的说法:

持续交付是一种软件开发学科,您可以在其中构建软件,以便可以随时将其发布到生产环境中。

在以下情况下,您正在连续交付:

  • 您的软件可在其整个生命周期内进行部署
  • 您的团队优先考虑使软件可部署而不是使用新功能
  • 每当有人对其进行更改时,任何人都可以获取有关其系统生产准备情况的快速,自动化的反馈
  • 您可以按需将任何版本的软件执行按钮式​​部署到任何环境

关于持续部署,持续交付和持续集成之间的区别有一定的困惑,因此让我们从定义开始。

  • 持续部署意味着每项变更都将贯穿整个流程并自动投入生产,从而导致每天进行许多生产部署。
  • 连续交付只是意味着您能够进行频繁的部署,但可能会选择不这样做,这通常是由于企业更喜欢较慢的部署速度。 为了进行持续部署,您必须进行持续交付。
  • 持续集成通常是指在开发环境中集成,构建和测试代码。 持续交付以此为基础,处理生产部署所需的最后阶段。

以上各点取决于以下内容。 为了进行持续部署,必须能够持续集成和交付。

工具类

为了成功有效地实施持续交付,需要采用新工具。 在采用该技术之后,应更改开发程序和工作流程。

一些常用的CI工具是Jenkins,Hudson,Travis和Bamboo。 所有这些背后的基本原理是检测代码存储库中的更改并触发一组作业或任务。

jenkins_logo 两者共享相同的代码库和非常相似(如果不相同)的功能集。 两者都易于扩展,功能强大且免费。 他们的主要优势在于插件和社区支持的数量。 人们几乎无法想象一个或多个插件尚未满足的需求。 Jenkins / Hudson可以轻松扩展。 不利的一面是,这种基于插件的体系结构以稳定性为代价。 插件具有不同的质量,并且更新会中断现有工作或引起系统的异常行为,这种情况并不罕见。 如果您正在寻找功能强大且灵活的解决方案,而又不花任何钱,那么詹金斯/哈德森便是最佳选择。

两者有什么区别? 在2011年,詹金斯(Jenkins)从哈德森(Hudson)分叉,并继续作为OSS(开源项目)进行开发。 Hudson的创建者川口浩辅(Kohsuke Kawaguchi)决定做出分叉。 哈德森,继续被甲骨文领导。 2012年,Oracle正式将Hudson移交给Eclipse Foundation。

哈德森更侧重于企业组织。 需要付出额外的努力来清理代码,稳定性和性能。 另一方面,詹金斯(Jenkins)更为社区所接受,更具活力和活力。 在数量(提交,新代码行,插件…)方面,詹金斯击败了哈德森。

Jenkins可能是最受欢迎的CI工具。 因此,查找帮助和其他用户很容易。

Bamboo_logo_landing 竹子Atlassian的产品。 与詹金斯相比,竹子很性感。 它更易于使用,并且看起来更好。 可用性是人们会注意到的第一个差异之一。 此外,它与Atlassian的其他产品( JIRAConfluenceBitBucket等)集成良好。

主要缺点是其价格和可扩展性。 它是本文列出的唯一不免费的工具。 如果需要执行一些非常规任务,则该插件更有可能仅适用于Jenkins。 同样适用于帮助。 即使Atlassian提供了很好的支持,要找到其他用户交谈或寻求帮助也不是那么容易。

如果优先考虑易于使用或与Atlassian产品集成,并且许可价格不是障碍,那么Bamboo是一个不错的选择。

travis徽标 Travis的主要优点是操作简单。 与Jenkins允许几乎无限的插件,创建无数的工作,复杂的流程等不同,Travis基于驻留在代码根目录中的单个文件.travis.ylm。 尽管该文件的内容可能变得复杂,但在大多数情况下,Travis假定我们遵循某些标准。 使用标准和简单性通常可以带来更好,更高效的设计。

特拉维斯大多数时候都知道应该做什么,而无需明确定义流程。 例如,如果有build.gradle文件,Travis将理解应该使用Gradle对其进行编译,测试等。 它检查您的代码并采取相应措施。 无需对Travis或配置文件进行任何更改,就可以从Ant切换到Maven到Gradle。

Travis对GIT有很强的依赖性。 如果使用其他版本控制系统,Travis不是一个好的选择。 另一方面,如果您正在使用GIT,则与Travis一起工作就像忘记了CI一样。 每当将代码推送到仓库时,Travis都会检测到该代码并根据代码中的更改(包括.travis.ylm)采取行动。 如果有问题,将通过电子邮件通知您。 所有CI工具在正确设置后都应该那样工作。 出现问题时请亲切提醒,没有问题时请忽略。 在大多数情况下,Travis消除了处理作业,配置和其他细微差别的需要,从而将其带入了一个新的高度。

将CI配置(.travis.ylm)保留为代码的组成部分将带来很多好处。 通过该配置,您可以告诉它该做什么,而他可以做到。

简单是有代价的。 当需要复杂的,非标准的,以前没有听说过的东西时,Travis往往很难与之抗争。

工具汇总

本文介绍的所有四个工具都值得作为CI解决方案。 它们绝不是人们应该考虑的所有工具。 还有许多其他的探索。

我对詹金斯(Jenkins)和特拉维斯(Travis)的偏好比对哈德逊(Hudson)和竹子(Bamboo)的偏好更多是基于细节而不是差异。 一个人不能说其中任何一个明显比另一个更好。 通常这取决于个人选择,项目类型或我们的习惯。

对于新项目,Travis是我的最爱,我已广泛使用它。 这是个新手(至少与詹金斯,哈德森和竹子相比)。 它要求切换CI设置方法。 乍一看,它的简单性可能会令人困惑。 然而,在最初的震惊之后不久,Travis被证明是有价值,出色,易于使用且有趣的。

另一方面,詹金斯(Jenkins)满足了我的“公司”需求,这些需求经常需要我不希望这种东西不存在,但我必须维护它。 它本身就是一头野兽。 尽管确实需要额外的设置,维护和管理工作,但几乎可以无限地弥补这种开销。

翻译自: https://www.javacodegeeks.com/2014/05/continuous-delivery-introduction-to-concepts-and-tools.html

  • 0
    点赞
  • 0
    收藏
    觉得还不错? 一键收藏
  • 0
    评论
评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包
实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值