自动化持续集成和部署,以进行编码

  • A+
所属分类:问答

 

开发软件最好的部分是什么?写惊人的代码。

最糟糕的是什么?其他的一切。

开发软件是一项了不起的工作。你可以用新的方式解决问题,让用户高兴,看到你创造的东西,让生活更美好。但是,尽管我们花了很多时间来编写代码,但是管理代码所带来的开销也同样多--这都是对时间的浪费。下面是一些最大的生产力漏洞,以及我们在微软如何努力为您节省一些时间。

1.建筑

让你的令人敬畏的应用程序掌握在快乐用户手中的第一步是什么?让它存在。有些人可能认为从源代码到二进制代码的迁移不会是一件很痛苦的事情,但事实确实如此。根据项目的不同,您可能每天在不同的平台上编译几次,所有等待的时间都是您可能花在编码上的时间。另外,如果你正在构建iOS应用程序,你需要一个Mac构建代理--不一定是你的主要开发工具,尤其是如果你是在跨平台框架中构建应用程序的话。

你想要收回那段时间,最好的方法就是(这不是我最后一次这么说)。自动化...您需要自动化配置和硬件管理,以便应用程序只是在他们应该构建。

我们试图解决这一需求的尝试是VisualStudioAppCenter构建,这是一种服务,它自动执行所有不希望手动复制的步骤,因此您可以在每次签入代码时,或者在任何时候,您、QA团队或发布管理人员希望这样做时,都可以构建这些步骤。只需将构建指向Gizub、Bitbucket或VSTS回购,选择一个分支,配置几个参数,您就可以在云中构建Android、UWP甚至iOS和MacOS应用程序,而无需管理任何硬件。如果您需要做一些特殊的事情,您可以添加后克隆、预构建和后构建脚本进行自定义。

2.测试

我花了很多年对软件进行测试,在我的整个职业生涯中,我一直讨厌听到三个问题:

“你说完了吗?”

“你能复制吗?”

“真的有那么糟吗?”

在过去,很少有足够的时间或资源进行彻底、适当的测试,但是移动开发加剧了这个问题。我们现在提供了更多的代码,更频繁地提供给更多的设备。我们不能浪费时间试图重现这个难以捉摸的关键故障,我们也没有时间去争论一个bug是否是一个“秀挡”。同时,我们是最终对高能见度的失败或劣质产品负责的看门人,作为团队的一员,我们想在问题发生之前增加质量,而不仅仅是阻碍航运。

那么答案是什么?“自动化”当然但是自动化合乎道理...如果你不能把所有的数据和文件夹放在一起的话,数据电子表格和截图文件夹就没什么意义了。当你面临最后期限,不得不说服产品所有者打电话的时候,你需要传递他们能理解的信息,同时给开发者他们需要的细节来解决问题。

为了解决这个问题,我们创建了AppCenter Test,这是一项服务,可以在数千个实际设备上对数百个配置执行自动UI测试。由于测试是自动化的,所以每次都运行完全相同的测试,因此您可以在每次构建时立即识别性能和UX偏差。测试与性能数据一起生成屏幕截图或视频,这样任何人都可以发现问题,开发人员可以点击详细的日志并立即开始修复。您可以通过每次提交在几个设备上进行测试来检查您的代码,然后在数百个设备上运行回归以验证所有的用户都能正常工作。

3.分配

所以,你已经建立了一个应用程序,它的表现,它应该。太棒了!但是现在迭代真的开始了。在你把它推给最终用户之前,你想知道人们对它的看法。但怎么做?编写一个测试版程序已经够困难了,但要确保每个人都有你的应用程序的最新版本(如果是移动应用程序,那么确保用户可以安装该应用程序)是一项全职工作--这是你团队中没有人想要的工作。

再一次,自动化...当您准备推进构建时,您需要自动化通知过程应用程序分发过程,您需要能够在每次构建(或者每次发布管理器这么说)时都触发。

我们的答案是AppCenter的分发服务。如果你有一个电子邮件地址列表,你有你需要的东西,让你的构建掌握在内部或测试版测试人员手中。创建一个通讯组,上传一个构建(或构建一个从回购),分发处理其余。如果你觉得这听起来像是HockeyApp你是对的。APPCenter分发是HockeyApp的下一代,它将其分发自动化与我们的其他CI/CD服务集成在一起。一旦你完成了测试版测试,发布也可以让你的应用程序落入你的用户手中,部署到Google Play,Apple的AppStore,或者--对于企业用户来说--MicrosoftInTuning。

4.关闭环路

人们经常谈论部署管道,但我们不仅仅是在单向推进之后。如果你能知道发生了什么你的应用程序已经发布了,你可以把这些反馈反馈给开发者,并创建一个闭环,让你的产品更好、更快。这些信息有两种形式--分析用户如何与应用程序交互,以及批判性地报告这些应用程序是如何以及何时失效的。

让我们从第二个开始,因为崩溃几乎是最坏的。当应用程序失败时,你想要快速了解它,但你也需要知道它到底有多重要。对每个人都有影响的模糊功能的崩溃通常比iPhone 4的完全启动失败更糟糕。APP Center Crash组织类似的崩溃报告,并向您展示受影响最严重的平台,这样您就可以做出智能的分级决策。当您准备开始修复这些问题时,崩溃是完全具有象征意义的,因此您可以获得开始时所需的信息。您可以在您的bug跟踪器中自动创建条目,这样开发人员就可以在不离开他们的工作流的情况下开始修复问题。同样,更多的自动化意味着更多的时间编写更好的代码。

对于分析来说,你想要一些有用的东西。APPCenterAnalytics提供了一种以用户和设备为中心的用户和设备级度量应用程序,用户希望看到这些应用程序,比如谁在使用哪种设备、使用频率、地点和停留时间等。但是你的应用和其他人的不一样,所以我们允许你创建和跟踪定制的指标,比如“预订一次车”或者“订购回家送货”。如果您想要进行更深入的分析,我们将允许继续输出到Azure应用洞察.

5.利用你所拥有的

你可以整天从理论上设计出完美的CI/CD解决方案,但是如果你不能付诸行动的话,它就毫无用处了。重要的是现在可以使用一些东西,无论这意味着与您真正喜欢的现有系统集成(或无法摆脱),还是只需要自动化手工过程的各个部分,直到您能够完成剩下的部分。只要朝着正确的方向走一小步,总是更好。

显然,我有偏见,认为您应该尝试一下整个系统,但是开发人员需要不同的东西。如果您只想采用应用程序中心的部分,我们已经建立了它是完全模块化的。我们为每个AppCenter服务都提供了RESTAPI,我们已经预先构建了与VSTS这样的服务的集成。这是应该的,因为你在建造你的应用程序,所以你应该构建它你的道路。

avatar

发表评论

:?: :razz: :sad: :evil: :!: :smile: :oops: :grin: :eek: :shock: :???: :cool: :lol: :mad: :twisted: :roll: :wink: :idea: :arrow: :neutral: :cry: :mrgreen: