iOS 持續(xù)集成——Xcode server&Bots自動(dòng)打包

前言:一直想學(xué)習(xí)一下iOS的持續(xù)集成,最近開(kāi)發(fā)企業(yè)內(nèi)部app,打包測(cè)試發(fā)布更加頻繁。所以有時(shí)間就研究了一下關(guān)于自動(dòng)打包。

說(shuō)起自動(dòng)打包,首先想到的肯定是Jenkins,Jenkins可提供各種插件使用,支持不同平臺(tái),并且還是免費(fèi)的。Jenkins + fastlane可實(shí)現(xiàn)構(gòu)建、上傳、測(cè)試、證書管理等一系列自動(dòng)化。但是我在搭建好環(huán)境,安裝好插件,配置好倉(cāng)庫(kù)ssl和開(kāi)發(fā)證書,嘗試了n次后,就是沒(méi)有成功。。無(wú)奈對(duì)腳本語(yǔ)言的不熟悉。但是最近看到了關(guān)于Xcode server的東西,Xcode是支持持續(xù)集成的,之前的macOS Server是需要在Apple開(kāi)發(fā)網(wǎng)站中下載的,并且還需要開(kāi)發(fā)者賬號(hào)的兌換碼。在Xcode9更新后,macOS Server中的Xcode部分就直接集成到了Xcode中。但是有開(kāi)發(fā)賬號(hào)還是可以兌換一個(gè)macOS Server作為網(wǎng)站服務(wù)器??。

言歸正傳,這是一篇技術(shù)文!首先看下使用Server&Bots在持續(xù)集成時(shí)可以做什么。

  • 指定遠(yuǎn)程倉(cāng)庫(kù),獲取具體分支最新代碼,可合并操作。
  • 進(jìn)行自動(dòng)Archive,對(duì)代碼進(jìn)行靜態(tài)分析,對(duì)代碼進(jìn)行單元測(cè)試,配置debug release。
  • 設(shè)置打包簽名 證書。
  • 開(kāi)始持續(xù)集成觸發(fā)條件。(定時(shí)、在有新代碼提交時(shí)、手動(dòng))
  • 持續(xù)集成前執(zhí)行的腳本(pre-integration script)、持續(xù)集成后執(zhí)行的腳本(post-integration script)。

流程開(kāi)始:

1、Xcode->Preferences->server&bots,選擇當(dāng)前Mac登錄賬戶,打開(kāi)。
server&bots.png
2、創(chuàng)建bot

server的開(kāi)關(guān)打開(kāi),代表server已經(jīng)啟動(dòng)。然后開(kāi)始創(chuàng)建bot。
首先解釋一下bot:bot是一個(gè)構(gòu)建工作的描述。一個(gè)bot對(duì)應(yīng)一個(gè)獨(dú)立工作空間,相對(duì)于jenkins,,bot可以類比jenkins的一個(gè)項(xiàng)目。持續(xù)集成的配置都在bot中設(shè)置。

開(kāi)始創(chuàng)建bot
  • 第一步打開(kāi)需要持續(xù)集成的項(xiàng)目(前提需要這個(gè)項(xiàng)目需要已經(jīng)上傳到遠(yuǎn)程倉(cāng)庫(kù))。

  • 選擇并配置服務(wù)。 Product->create Bots。server 下拉選擇add new server,在列表中選擇本機(jī)已啟動(dòng)的服務(wù)器,輸入用當(dāng)前mac登錄的戶名和密碼。content as選擇registered user。Xcode Server的賬戶配置可在Xcode-> Preferences->accounts中修改。


    create new bot.png
  • next 工程資源控制。next 選擇工程需要持續(xù)集成的分支,我的測(cè)試工程中就只有一個(gè)分支,所以沒(méi)有選擇。就只有master了。


    source control.png
  • next 編譯打包配置。archive expert選擇使用plist文件自定義選項(xiàng),plist文件在手動(dòng)執(zhí)行archive后,在導(dǎo)出的ipa文件夾中有ExportOptions.plist。選擇plist文件,plist文件在企業(yè)證書打包時(shí)很重要,需要配置ipa下載路徑、圖片下載路徑等。Configuration選擇release,后面需要上傳蒲公英。

bulid configuration.png
  • next 構(gòu)建觸發(fā)器配置。Integrate 選項(xiàng)中有periodically(周期性觸發(fā))、On commit(提交時(shí)觸發(fā))、Manually(手動(dòng)觸發(fā)),根據(jù)需要選擇觸發(fā)條件,這里選擇手動(dòng)觸發(fā)。
bot Integrate.png
  • next 證書簽名配置。首先頂部options中有提供自動(dòng)管理證書的選項(xiàng),頂部也可切換手動(dòng)添加證書到server。這里我選擇的是手動(dòng)添加打包需要的證書。


    手動(dòng)打碼不容易.png
  • next 設(shè)置環(huán)境變量。這一步可設(shè)置預(yù)集成和后整合觸發(fā)器所需的環(huán)境變量,執(zhí)行的Run Script構(gòu)建階段所需的任何環(huán)境變量。環(huán)境變量設(shè)置可參考Xcode服務(wù)器環(huán)境變量參考。但是這里并沒(méi)有用到。直接下一步???♀?。

    Configure environment.png

  • 配置bot觸發(fā)器??稍O(shè)置集成前后的腳本、郵件發(fā)送服務(wù)。這里點(diǎn)擊左下角 + 添加一個(gè)post-integration script。右邊可勾選觸發(fā)器觸發(fā)的動(dòng)作。根據(jù)需要選擇觸發(fā)動(dòng)作,這里只選擇當(dāng)構(gòu)建成功才執(zhí)行腳本(只勾選success)。

post-integration script.png

又到寫腳本的時(shí)候了。這里只需要配置將打好的ipa,調(diào)用蒲公英提供api上傳即可。首先打開(kāi)蒲公英提供的蒲公英api文檔

蒲公英api.png

獲取到ukey和_api_key后,編寫腳本,掉接口上傳。腳本如下:

#!/bin/sh
curl -F "file=@$XCS_PRODUCT" \
-F "uKey=you uKey" \
-F "_api_key=you _api_key" \
https://qiniu-storage.pgyer.com/apiv1/app/upload

然后在確保代碼commit之后,command+9 選擇創(chuàng)建的bot,點(diǎn)擊Integration開(kāi)始,沒(méi)錯(cuò)誤就代表成功了。


success.png

蒲公英管理后臺(tái)也能看到上傳的應(yīng)用,簡(jiǎn)單的持續(xù)集成就算完成了。有問(wèn)題歡迎提問(wèn)。

?著作權(quán)歸作者所有,轉(zhuǎn)載或內(nèi)容合作請(qǐng)聯(lián)系作者
【社區(qū)內(nèi)容提示】社區(qū)部分內(nèi)容疑似由AI輔助生成,瀏覽時(shí)請(qǐng)結(jié)合常識(shí)與多方信息審慎甄別。
平臺(tái)聲明:文章內(nèi)容(如有圖片或視頻亦包括在內(nèi))由作者上傳并發(fā)布,文章內(nèi)容僅代表作者本人觀點(diǎn),簡(jiǎn)書系信息發(fā)布平臺(tái),僅提供信息存儲(chǔ)服務(wù)。

相關(guān)閱讀更多精彩內(nèi)容

友情鏈接更多精彩內(nèi)容