天天看點

IOS工程自動打包并釋出腳本實作

文章首發位址:http://webfrogs.me/2013/02/18/ios-automation/

作者:webfrogs

轉載請注明出處。

前言

IOS的開發過程中,當需要給測試人員釋出測試包的時候,直接使用xcode來做的效率是非常低下的。尤其是當有一點小改動需要重新出包時,那簡直是個折磨的人的工作。通過一番研究後,遂決定寫一系列腳本,以代替人工完成打包和釋出的過程。

目前腳本已經完成,基本可以滿足我目前的需求。現将其開源,托管在github上,項目位址:點選這裡

思路

借助xcode所附帶的“Command Line Tools”,可以通過指令行來完成IOS工程的編譯和打包工作。腳本正是基于此完成的。

本套腳本分為三個部分:負責編譯工程并打包的腳本ipa-build,負責生成itms-services協定檔案的腳本ipa-publish,以及負責将ipa-publish腳本生成檔案上傳到伺服器的腳本upload。

其中,由于我自己的情況是伺服器端的同僚給我了内部測試伺服器的sftp的上傳權限,是以這個upload腳本主要實作了使用sftp來上傳的功能。具體可以實際情況來做修改。

關于itms-services協定的一些内容,可以參考我之前的文章:《shell腳本實作ipa一鍵安裝(itms-services協定)》

注意:預設安裝完的xcode并沒有自帶“Command Line Tools”,需要在xcode中選擇後下載下傳才能使用

實作

打開工程後,會發現本套腳本中包含好幾個shell檔案。下面對其功能做說明:

ipa-build:  編譯xcode工程并生成ipa檔案
ipa-publish: 生成符合itms-services協定的檔案,并釋出到伺服器。
sendEmail:  stmp發送email的腳本。(别人寫的)
sftpDownloadFile: 通過sftp協定下載下傳檔案
sftpUploadFile: 通過sftp協定上傳檔案
updateLocalIndexHtml:   對索引檔案進行處理(二進制檔案,非shell腳本)
uploadItemsServicesFiles:   将itms-services協定檔案上傳到伺服器
           

實際使用的腳本,隻有"ipa-build"和"ipa-publish"這兩個。其他檔案會被ipa-publish這個腳本調用的依賴檔案。其中出了"updateLocalIndexHtml"是我用objc寫的一個用來進行文本處理的編譯後的二進制檔案,其餘均為shell腳本。

shell腳本實作,大家可以打開腳本來看一下,裡面的注釋算是很詳細了。不需要太多說明。

其中值得一提的就是我在寫sftp協定上傳功能的時候,碰到了一個問題就是使用腳本來自動輸入密碼,也就是互動式腳本的編寫。最後選擇了expect來完成,因為我發現mac系統裡自帶了這個expect指令。

使用

在編寫腳本時,我已經考慮到,要盡量使這個腳本使用起來簡單友善。如果隻需要打包,那麼隻使用ipa-build腳本即可。如果需要用itms-services協定來釋出,則再運作ipa-publish腳本即可。在ipa-publish腳本中調用了upload腳本,是以upload腳本不需要單獨使用。

ipa-build腳本使用方法:

ipa-build腳本絕對路徑 參數1 參數2
           

其中,參數1是IOS工程的根路徑,是必輸項。參數2可以不輸入,是可選的,含義是編譯時的工程configuration類型,有4種類型可選:Debug, AdHoc,Release, Distribution。預設是Release。

ipa-build腳本運作後,會在IOS工程根路徑下生成名為“build”的檔案夾,在這個檔案夾中又有一個名為“ipa-build”的檔案夾,打包所生成的最新ipa包就在其中。

ipa-publish腳本使用方法:

ipa-publish腳本絕對路徑 參數1 參數2
           

參數1是IOS工程的根路徑,是必輸項。參數2是可選的,含義是當上傳檔案成功後是否發送email通知,y為發送,n為不發送,預設的值是不發送。

ipa-publish腳本運作後,會在“build”檔案夾中生成一個以工程的targetname為名字的檔案夾。其中,存放了itms-services協定所需的所有檔案。腳本會将裡面内容全部上傳到伺服器中。

注意事項

1、運作腳本需要絕對路徑,不能使用相對路徑。

2、腳本下載下傳後,若要使用,有些腳本需要一些改動。

其中ipa-build腳本無須更改。可以直接使用。ipa-publish腳本需要配置一些資訊後方能正常使用。

用文本打開ipa-publish腳本後,在shell開始的地方,有一段需要配置的地方,如下:

#須配置内容  start

#sftp參數設定
sftp_server=192.168.xx.xx
sftp_username=xx
sftp_password=xx
sftp_workpath="/usr/share/xx/xx/xx"

#釋出應用的url位址
pulish_url="http://xx.com/xx"

#以下是郵箱的相關設定
#收件人
[email protected]
#發送者郵箱
[email protected]
#郵箱使用者名
email_username=xx
#郵箱密碼
email_password=xx
#smtp伺服器位址
email_smtphost=smtp.exmail.qq.com


#可配置内容  end
           

根據實際情況配置即可。

webfrogs

繼續閱讀