Fastlane為iOS帶來持續部署
原文 http://www.infoq.com/cn/news/2015/01/fastlane-ios-continuous-deploy
Fastlane 是一組工具套件,旨在實現iOS應用發布流程的自動化,并且提供一個運行良好的持續部署流程,只需要運行一個簡單的命令就可以觸發這個流程。
Fastlane是一個ruby腳本集合,其中囊括了向蘋果商店提交新應用或更新已有應用所需要的最常用任務。
- deliver 用于上傳應用的二進制代碼,應用截屏和原數據到應用商店
- snapshot 可以自動化iOS應用在每個設備上的本地化截屏過程
- frameit 用于在應用截屏外添加設備框架
- PEM 可以自動化地生成和更新應用推送通知描述文件
- sigh 可以生成并下載開發者的應用商店配置文件
這個套件支持與 Jenkins 和 CocoaPods , xctools 等其他第三方工具的集成,并且能夠定義多個 通道( lanes ) 以支持不同的部署目標,如應用商店,Beta測試和測試。
fastlane典型的工作流程如下:
lane :appstore do increment_build_number cocoapods xctool snapshot sigh deliver frameit sh "./customScript.sh" slack end
為了了解到更多關于這個項目的信息,InfoQ采訪了Fastlane的發明者 Felix Krause 。
持續交付/部署能夠給iOS應用部署流程帶來的最大收益是什么?在蘋果的審核流程框架之下,這個工具能夠多大程度地發揮作用?
最主要的收益就是能夠在每次發布一個更新或全新應用的時候可以為你節省大量的時間。這是iOS開發者必須親自完成的工作。
在剛剛啟動這個項目的時候,我并不確定是否能夠將iOS應用發布流程的各個方面完全自動化,因為并沒有公開的API來實現它。令人高興的是,它的確能夠正常運轉,而且我已經為多家公司制定了完整的持續部署解決方案。
可否為我們簡單描述一下使用fastlane的典型的工作流程?其中最相關的定制化選項有哪些?
我主要在如下場景下使用fastlane:
- 在每次提交時執行測試(這包括單元測試和集成測試)
- 只創建新的屏幕截圖將其發送給客戶
- 構建并分發Beta版本
- 構建并分發至應用商店(這包括更新配置文件,創建新的屏幕截圖,上傳應用至應用商店并提交應用)
在http://fastlane.tools網站上可以找到一些簡單的例子。每個開發者都可以很方便地添加或刪除單個構建步驟,甚至可以實現自己的構建步驟。
你認為什么類型的組織(例如獨立開發者,小型開發組織,大型企業等)能夠從fastlane的使用中受益最多?
獨立開發者和處于初創階段的小型開發組織:這類組織通常還沒有運行任何自動化流程,很容易就可以開始使用fastlane。大型企業通常都已經有了某種類型的持續集成工具,他們需要適應fastlane的使用。
可否告訴我們一些關于fastlane當前采用率的情況?現在有什么成功案例么?
我不想自賣自夸,不過我可以分享一些數字:
- 全部fastlane工具大約有 20000次安裝
- 在第一次發布后的三天內有10000人次訪問了http://fastlane.tools
- 所有 工具和fastlane曾經入選Github當月Ruby趨勢庫
我已經從一些知名的公司得到反饋稱,他們已經成功地將fastlane工具集成到了他們的發布流程中。 Panic 是我得到反饋最大的公司之一。
驅動你創建fastlane的過程是怎樣的呢?
我最初只為一個客戶實現了fastlane,當時的fastlane與他們的系統結合十分緊密。當我跟其他的開發者談論此事時,他們非常興奮并且詢問他們是否也可以使用這個工具。這就是為什么我以一種十分靈活并且文檔齊全的方式開發這個工具以便將其共享給其他iOS開發者。
最初我只開發了 deliver 。之后我意識到還缺少一些工具,這就是為什么我又創建了另外四個工具(snapshot,frameit,PEM和sigh)。因為這些程序都是獨立運行的,我又想到以某種方式將它們連接起來。也就在這時我有了fastlane的想法。
Fastlane是一個開源的工具集,可以 從Github得到它的克隆 。從 官方指南 中可以了解到關于安裝、配置和使用這些工具的更多細節信息。