iOS的持续集成-艰难的道路
我们的iOS团队注意到,我们的大部分时间都浪费在了构建和分发项目上。 构建和分发的任务非常适合于自动化,因此我们决定对此做一些事情。 这就是故事。
我们的更大项目之一是着重于旅行的社交媒体应用,其中新功能和错误修复正在不断实施。 它的代码库总共包含约350.000行代码:
- 55%是斯威夫特
- 其中40%是Objective-C
- 剩下的5%使用C,C ++,Ruby或Shell脚本
在具有8 GB RAM的Macbook Pro Retina 2016上,该应用程序的构建和分发时间平均约为30分钟,而在较旧的Mac Mini上,则约为40分钟。 如果它不在我们用于开发的机器上运行,或者如果我们想在Macbook上煮一个煎蛋,那将是可以接受的。
关于持续集成和持续交付(CI / CD),存在许多选择。 这些是我们考虑过的:
1.詹金斯
优点:
- 我们的后端和质量检查团队已经在使用它
- 文档内容丰富
- 很多社区的支持
- 经过“实战测试”
缺点:
- 用户界面相当……令人困惑
- 有很多术语
- 它对开发人员不友好
- 某些问题很难调试
2.特拉维斯
优点:
- 易于使用
- 免费提供开源软件
缺点:
- 仅支持Github(在我们使用Bitbucket时不适合使用入门工具)
3.比特币:
优点:
- 面向移动
- 有据可查
- 易于配置和使用
缺点:
- 有价位
还包括Nevercode,CircleCI,Github Actions和Bitbucket工作流。
最后,我们已经选择了Jenkins,因为我们已经让开发人员非常熟悉它。
至于测试设备,事实证明,旧的Mac Mini和Macbook Air非常适合(后来用于生产)。