尽可能保证开发,预发布,线上环境相同

在 Github 上编辑

从以往经验来看,开发环境(即开发人员的本地部署)和生产环境(外部用户通过苹果应用商店访问的真实部署)之间存在着很多差异。这些差异表现在以下三个方面:

  • 时间差异:开发人员正在编写的代码可能需要几天,几周,甚至几个月才会上线;
  • 个人差异:所有 iOS 开发人员都会编写代码,但只有一个人知道如何部署应用;
  • 工具差异:开发环境服务器和生产环境服务器的代码版本可能不同;开发使用的 Xcode 版本和部署使用的 Xcode 版本可能不同。

一个 ios-factor 应用想要做到持续部署,就必须缩小本地与线上差异。再回头看上面描述的三个差异:

  • 缩小时间差异:开发人员应在几天内完成部署;
  • 缩小人员差异:开发人员不只要编写代码,更应该密切参与部署过程以及关注代码在线上的表现。这一点最有可能通过自动化部署实现,并使用代码声明实现方式,而无需使用文档;
  • 缩小工具差异:尽量保证开发环境以及生产环境一致。请参考 iOS-factor 的依赖原则,利用 .xcode-version 文件,并且显式声明所有依赖。

将上述总结为如下表格:

  传统 iOS 应用 iOS-factor 应用
每次部署间隔
开发人员 vs. 部署人员 仅一人知道如何部署 自动化部署,最好在服务器上进行
开发环境 vs. 生产环境 不一致 尽量保持一致