III. 开发环境和生产环境等价
尽可能保证开发,预发布,线上环境相同
在 Github 上编辑从以往经验来看,开发环境(即开发人员的本地部署)和生产环境(外部用户通过苹果应用商店访问的真实部署)之间存在着很多差异。这些差异表现在以下三个方面:
- 时间差异:开发人员正在编写的代码可能需要几天,几周,甚至几个月才会上线;
- 个人差异:所有 iOS 开发人员都会编写代码,但只有一个人知道如何部署应用;
- 工具差异:开发环境服务器和生产环境服务器的代码版本可能不同;开发使用的 Xcode 版本和部署使用的 Xcode 版本可能不同。
一个 ios-factor 应用想要做到持续部署,就必须缩小本地与线上差异。再回头看上面描述的三个差异:
- 缩小时间差异:开发人员应在几天内完成部署;
- 缩小人员差异:开发人员不只要编写代码,更应该密切参与部署过程以及关注代码在线上的表现。这一点最有可能通过自动化部署实现,并使用代码声明实现方式,而无需使用文档;
- 缩小工具差异:尽量保证开发环境以及生产环境一致。请参考 iOS-factor 的依赖原则,利用
.xcode-version
文件,并且显式声明所有依赖。
将上述总结为如下表格:
传统 iOS 应用 | iOS-factor 应用 | |
---|---|---|
每次部署间隔 | 月 | 天 |
开发人员 vs. 部署人员 | 仅一人知道如何部署 | 自动化部署,最好在服务器上进行 |
开发环境 vs. 生产环境 | 不一致 | 尽量保持一致 |