fastlane spaceship 源码浅析

提到 iOS 持续集成,fastlane 应该是绕不过的一个工具,翻阅了一下网上大部分的资料,基本上是用了都说好,然后详谈如何调用。用到的功能,常见是 gymmatchdeliver。在我看来,fastlane 最强大的地方,不在于怎么方便了打包,毕竟不依赖 gym,直接用 xcodebuild 问题也不大,关键在于它所提供的思路。

环境信息

fastlane: 2.72.0


非常亮眼的地方主要有三个:

  • match,提供了一种全新的证书管理的方式,这个流程在之前 fastlane match 源码浅析与最佳实践 中介绍过。
  • spaceship,封装并且优化了访问苹果账号的各个步骤。
  • workflow,如果写过 Fastfile,那么一定知道流程的封装是用的 lane。所以 Fastfile 也提供了一种工作流的模式。

除此之外,fastlane 还打通了各个社交平台,比如 twitter、slack,由于国内(Emmm…),再加上每个公司所用的管理平台不一样,所以,这个功能倒显得比较鸡肋。关于 workflow,这个虾神有文章介绍到,我就不再造次了。

Spaceship 是什么

也许你会好奇,难道 fastlane 在你眼里亮点就这几个?gym 不是,那 deliver 总是吧,那 pilot 总是吧。当然,这些 action 也很好用,但是他们都有一个必不可少的步骤,就是访问苹果账号,除此之外,match 也要用到。只要和苹果账号相关,就绕不开 spaceship。扯了这么多,spaceship 到底是什么?

来看看官方介绍

Spaceship is a Ruby library that exposes the Apple Developer Center and iTunes Connect API. It’s super fast, well tested and supports all of the operations you can do via the browser. Scripting your Developer Center workflow has never been easier!

也就是说,Spaceship 封装了你要访问苹果的所有 API。在换句话说,你想做,但是 fastlane 没做的事情,都可以通过单独调用 spaceship,自己实现,这也是我读 spaceship 源码的初衷。


2018.06.09 更新。这篇文章刚开头,可能就要凉。WWDC2018 苹果官方推出了 AppStore API,爸爸你是不是见不得别人做得好。

2018.06.10 更新。认真看完 Session 303,发现 spaceship 凉不了,反而会更加强大。苹果 API 给 spaceship 提供了更快的访问支持,用于替代现有的 web scraping。而对于用户来说,直接访问苹果 API 还是很麻烦的,毕竟要管理 token 什么的,所以 spaceship 成为最强非官方 App Store Connect API in Ruby 应该是指日可待了。