持续集成的图标

尽早测试,轻松协作,经常部署

当今最复杂、最吸引人的应用程序都是使用现代开发实践来构建和部署的. 这包括提高开发人员生产力的优化流程和工作流, 效率, 和速度, 以及提高应用质量. 敏捷开发实践和分布式版本控制系统的采用现在已经很普遍了. 补充这些, 一种新的实践方式出现了——持续交付(CD),它使团队能够简化应用发布过程.

持续交付的特点是短的发布周期, 自动化, 和一个直接连接到源代码库. 它的设计目的是让团队能够快速且安全地获得增量的应用更新. 一个成功的CD流程与组织的技术保持一致, 流程, 人, 和文化,使部署变得流线型, 自动化活动. 企业和终端用户受益于新功能的更快交付和应用质量的提高.

Heroku流

Heroku平台旨在最大限度地提高开发人员的工作效率,并提供良好的开发体验, 从一款应用的第一个版本到产品版本. 作为重点的一部分, Heroku用一系列支持现代开发实践的工具扩展了平台, 例如连续交付.

Heroku流 是一个结构化的部署工作流,与Git中心紧密集成, 作为视觉管道, 一次性“评论应用”和Heroku CI. Heroku流旨在简化应用发布体验,使持续发布变得简单, 视觉, 和高效的.

Heroku管道

Heroku管道

共享相同代码库的Heroku应用可以组织成部署管道, 很容易从一个阶段晋升到下一个阶段, 通过可视化界面进行管理. Heroku管道文档→

Heroku CI

Heroku CI

Heroku CI 是一个low-setup, 集成了Heroku管道的可视化测试运行器,在每次推送到Git中心时自动运行你的测试, 使用具有强大开发刺激平价的一次性应用. Heroku CI docs→

Heroku审查程序

Heroku审查程序

开发人员可以启动一个临时测试应用程序,供团队评审, 讨论, 并决定是否在开发期间将更改合并到代码库中. Heroku审查程序 docs→

Heroku Git中心集成

Git中心集成

Heroku应用和Git中心 repo之间的紧密集成可以自动或手动部署合并的分支, Git中心和Heroku都有通知. Git中心集成文档→

Heroku ChatOps

Heroku ChatOps

Heroku ChatOps通过将Heroku管道与Slack连接起来,使团队协作更加容易. 有了Heroku, ChatOps开发者可以部署到Slack的登台或推广生产中, 或者看pull requests, 合并, 和CI在他们的Slack渠道中建立结果. Heroku ChatOps文档→

Heroku发布阶段

发布阶段

发布阶段允许您自动运行任务, 例如数据库迁移, 在发布部署到生产环境之前. 发布阶段消除了危险的手动部署步骤. 发布阶段文档→

持续交付是如何工作的

持续交付的核心是一个基本的分支和合并工作流. 多个开发人员各自在自己的代码分支上工作, 分享变化以供同行评审, 反馈和批准, 并且无缝地将更新后的代码合并到主分支中. 这个过程是直接和有效的,很容易跟上团队的速度.

持续交付的好处

在持续交付的情况下,应用发行更像是一种鼓点而不是一场大爆炸. 实践为工程组织提供了稳定的利益流, 最终用户, 以及业务涉众——而不会破坏传统的发布过程.

高质量的应用

在重复过程上的时间更少意味着开发人员可以花BG集团时间和精力来创建高质量的代码, 从本质上减少bug和问题. 有规律的发布节奏可以让产品团队在整个发布过程中获得用户反馈. 这有助于进一步完善应用程序的功能集和用户体验, 提高客户满意度.

更快的上市时间

通过将新应用功能和更新更快地传递到客户手中,持续交付能够让企业保持竞争力. 工程团队可以更好地响应不断变化的业务需求和市场趋势, 更好地管理他们积压的特性, 而且更有能力在需要时立即发布应用程序修复程序.

提高团队的工作效率

自动化的过程和环境减少了传统手工测试的时间和费用. 这使得应用开发者可以专注于他们最擅长的事情:开发. 团队以更快的速度工作, 为企业提供BG集团价值, 更有效地合作解决问题. 项目的所有成员, 从设计到产品再到营销, 能否更快地看到变化,并在过程的每个步骤中参与决策.

低风险释放

频繁的发布允许团队在开发过程中更早地发现和修复问题, 这意味着代码缺陷不太可能出现在产品中. 代码库始终保持干净并处于可发布状态. 以及持续的交付, 对部署流程和脚本的重复测试也会在更早的时候进行, 在它投入生产之前.

持续交付的基础

一个成功的持续交付实践是建立在三个核心部分之上的,这三个核心部分将帮助团队产生最好的结果:

配置管理

在练习连续分娩时, 开发团队必须建立一个流程,并商定一套通用工具,以确保应用性能的一致性, 函数, 和用户体验. 配置管理允许对CD进程的所有部分进行版本控制, 例如源代码, 数据库, 文档, 测试和部署脚本, 以及应用程序配置信息. 开发人员可以在需要时重现环境, 并跟踪用于重新创建环境的所有依赖项. 拥有一个真实的来源——一个可靠的来源——为构建一个平稳的部署管道提供了一个稳定的基础.

如何在Heroku→中管理多个环境

持续集成

在复杂的应用程序, 看似简单和独立的更改实际上可能产生意想不到的后果. 在独立的环境中,多个开发人员可以在多个代码分支上并行工作. 当变更合并到公共主分支时,可能会出现不可预知的结果. 这通常意味着多轮回归测试和bug修复. 持续集成(CI)是持续交付过程的一个组件,它使开发人员能够定期地将他们的更新集成到main中. 使用CI,合并之前和之后的自动化测试验证没有引入bug.

所有Heroku插件的CI→

自动化测试

传统上, 在代码“开发完成”后手动进行测试,以确保任何更改都不会破坏应用或其系统. 然而,手动回归测试是耗时的、昂贵的,并且容易出现人为错误. 此外,QA团队必须花费大量的时间和精力保持测试文档的更新. 对于持续交付,在整个过程中运行许多不同的测试. 有些是自动化的,例如单元测试. 其他测试,如可用性/验收测试,仍然是手工执行的. BG集团的目标是从交付生命周期的开始就将所有的测试引入到CD过程中, 尽可能将重复性的任务自动化. 这使得开发人员可以专注于编码和改进应用程序.

所有Heroku插件测试→

持续交付成功因素

持续交付实践才能茁壮成长, 每个参与应用开发的人都必须分享有助于顺利开发过程的思维和习惯. 团队中的每一个成员——从产品经理到设计师再到开发者——都要对他们所负责的部分的成功负责. 一些CD最佳实践将帮助团队从一开始就确定方向.

对质量的关注

花时间定义和投资于质量度量, 从单元测试覆盖, 产品毛羽, 代码的同行评审, 代码样式化到违反规则和复杂性度量. 创建简短的反馈循环,以便在问题和bug出现时快速解决它们. 这将帮助开发人员在整个过程中生成更高质量的代码, 当以后的问题变得更加困难和昂贵时,就会发现更少的问题.

保持生产就绪

一个功能只有在投入生产时才算“完成”. 这意味着项目的所有权一直到它在用户手中并正常工作为止. 将代码检查回版本控制系统并不意味着它就完成了! 即使产品还没有准备好发布,也要将代码保持在可发布的、生产就绪的状态.

自动化在可能的情况下

通过投资于可重复的测试和任务的自动化,软件发布过程应该是可重复和可靠的. 手动过程很难被贴上可靠的标签,无论它们是如何小心地建立和完成的. 具有不同类型测试的一个或一组构建,每天运行多次, 在不同的环境中,是一个自动化的工作流,手工完成可能需要很多个小时, 甚至没有自动化的CI流程是不可能做到的.

通过持续反馈进行改进

确保获得持续的反馈并监控技术指标, 用户体验, 以及应用程序生命周期的所有关键阶段, 从开发到生产. 这有助于改善流程的早期阶段,需要更少的时间、精力和成本. 智能的监控和已建立的持续改进过程可以帮助团队在更短的周期内,以更少的风险和更好的质量发布产品.

“在Heroku上建立BG集团的CI/CD工作流程非常快速和容易. 平台的工具节省了BG集团的时间,作为一个创业公司,BG集团需要优化时间.”

MARC VANDERSTIGEL
联合创始人,RocketChart
RocketChart的故事→

“部署在Heroku上是BG集团敏捷实践的自然延伸. 不需要配置传统基础设施的开销, BG集团可以专注于频繁的和迭代的高价值的交付, 与客户紧密合作,提供功能解决方案.”

阿KESWANI
首席技术官,Trineo
Trineo的故事→

通过Git中心上的新回购,Heroku上的一款新应用只用了不到5分钟的时间就启动了, 并有一个沙盒来工作.”

丹BYLER
产品经理,积极向上
积极为Good的故事