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非常适合(后来用于生产)。