code

2017年11月22日 星期三

ios XCode9 Continuous Integration

名詞解釋

scheme: 就是build script
bot: 執行schemes,也可以排程的process
Integration: 每次bot執行一次稱為一次integration

Continuous Integration Chart


好處
1. 早期整合,早期發現問題
2. 在server build/test,不用浪費開發者時間
3. 可以排程,測試各版本simulators/devices
4. 產生報表


pre-XCode9: 安裝XCode Server

要先安裝macOS server app:


這邊先略過了,畢竟xcode9已經發表了。


post-XCode9

藏在xcode 裡面:

WWDC 2017有影片說明整合進去xcode。

1. automatic code signing
2. 整合進入xcode 9
3. 自動在simulators / devices 上測試


Code Signing

app需要簽名認證,辨別是真實發行者,ios在app runtime會檢查此數位簽名,才能才能確保以下三件事情:


製作一個signature需要以下三個文件:


1. certificate:
2. provisioning file:
3. entitlement:

以上的細節可以在2016 WWDC XCode Automatic Code Signing影片中詳細解釋。

簡單來說,Xcode 9最大的改進就是把automatic code signing放入 Xcode Server

也唯有automatic code signing才能讓xcode server去在手機上自動化測試app,因為需要code signing (只要target有設定automatic signing):



這背後依賴另一個command line executable : Xcodebuild,所以第三方CI server(e.g. jenkins) 也可以利用此Xcodebuild command去做automatic code signing。



Setup XCode Server in XCode 9

1. 先到xcode preferences打開xcode server:



把右上角switch打開會自動設定,結果如下:



2.  在accounts pane加入xcode server當成“開發者一員”,因為這樣才會有bot (軟體機器人)讓我們來排成做事:



至於Manual Signing影片中有講到,可以先略過。


Setup a bot

在product menu最後有一個"create bot",點下去之後xcode會自動去看目前project是否是來自某個git repository (猜測應該是去scan專案目錄)以及下載的branch,然後會要求設定登入帳號密碼。

之後會有一連串的設定,都可以先採取預設值就好,反正都可以在更改。
接下來會來到要不要授權此 "server team member"來管理 automatic signing issues:



建立bot之後,似乎會馬上進行一次integration,所謂的integration包含以下步驟:
(a) 從repository下載branch
(b) build app
(c) provisioning / signing
(d) test


Distribution Signing 

開發過程中打包的app 稱為archive,這是需要development signing,流程相對簡單。
如果要發布到app store,需要做distribution signing,把archive再打包成.ipa檔案:



事實上有三種distribution signing,adhoc / enterprise / app store:


XCode server可以distribute signing似乎是個很大個改進?不確定,總之台下有歡呼就是了,之後有需要用到再說吧。



優點

1. 整合性超高
2. 可以parallel test,比較神奇的是,某些simulator連launch都沒有,不知道怎麼測試出來的?



3. automatic signing



1 則留言:

  1. This system automates the process of building, testing, and deploying iOS applications, ensuring smooth and consistent development workflows. 6700k Vs 6800k This blog is informative and useful.

    回覆刪除