Jenkins學習系列——iOS打包任務的建立和配置

1、前言html

在iOS開發過程種,咱們習慣的方式是:建立工程-->修改代碼-->Xcode調試-->符合預期要求-->發佈,這在單個開發者的狀況下當然沒有問題,一臺mac和一個Xcode就能夠完成,可是在大公司和團隊開發過程當中,代碼管理、打包管理和測試管理就會存在很大的問題,多個開發都會同時修改代碼並提交,一般咱們用git來管理這些代碼,並由單獨的人員打包以及測試代碼的質量。jenkins不只能夠完成自動化打包的過程,還能夠與測試平臺進行持續集成。python

iOS jenkins打包的原理是Xcode命令行編譯,主要用到兩條命令:xcodebuild和xcrun,這兩個命令會隨Xcode的安裝而安裝,下面舉個使用例子:git

/usr/bin/xcodebuild -scheme Demo4GT -configuration Release clean build -derivedDataPath .
/usr/bin/xcrun -sdk iphoneos PackageApplication -v Demo4GT/Build/Products/Debug-iphoneos/Demo4GT.app -o Demo4GT/Build/Products/Debug-iphoneos/Demo4GT_Demo4GT.ipa

2、準備工做shell

一、jenkins環境。搭建jenkins環境能夠參考jenkins平臺搭建和配置一節。須要注意的是,雖然涉及iOS開發,可是jenkins平臺卻沒必要搭建在mac機器上,只要在jenkins上添加mac節點就能夠了。xcode

二、iOS開發環境。iOS開發環境主要是指Xcode開發環境,Xcode是免費的,只要在蘋果應用商店裏下載一個就能夠了。固然,還有重要的一點兒---開發者證書,如今我的也已經有免費的證書了,沒有證書的話,只能打模擬器用的包了。app

三、git項目。強烈建議把代碼放在git上,這樣便於團隊開發。固然,不放git上也能夠。iphone

四、jenkins Xcode持續集成插件。經常使用的插件Xcode integration,這個插件可以快速的幫助咱們進行Xcode打包配置,固然,只用純shell腳本也是能夠的。工具

在jenkins上打包以前,咱們最好手工測試一下能夠打包成功,首先用Xcode圖形界面進行測試,而後用命令行測試,若是都能打包成功就能夠掛在jenkins上運行了,畢竟jenkins的原理也是經過執行一系列命令來完成的。
post

3、jenkins配置測試

 一、建立一個任務,建立任務的時候最好選自由風格的軟件項目,這樣配置起來比較方便,若是有須要,也能夠選擇其餘的風格。

二、描述及丟棄舊的構建

二、描述及丟棄舊的構建

描述很簡單,就是對這個項目的介紹,防止別人看不懂這個項目是幹什麼的。丟棄舊的構建是指將構建完的job進行刪除,由於大量的構建會佔用大量的硬盤空間,若是沒有什麼用途能夠把舊的給刪除,固然,若是某個構建比較重要,能夠永久保留。丟棄舊的構建能夠按照天數或者個數來保留。

參數化構建過程,是指在構造的時候添加相關的參數好比說iOS打包是debug仍是release,在打包以前能夠選擇參數。這些參數能夠代入後面的shell腳本中。參數的類型有bool或者string等類型。

限制構建執行的位置等。Restrict where this projeck can be run能夠限制項目執行的位置,例如iOS打包只能在mac節點上執行,咱們能夠限制只在mac節點上打包。

源碼管理器,能夠選擇git等工具,並填上本身的分支。

構建觸發,何時開始觸發構建。觸發遠程構建能夠配置一個觸發的URL,經過訪問這個URL能夠觸發構建。Build after other projects are built是在其餘項目構建完之後觸發這次構建,常見的是打包完之後開始測試構建。Build periodically是週期性構建,固然能夠配置每週一到週五上午8點到下午8點每隔兩個小時構建一次的狀況。Poll SCM表明每隔一段時間檢查一個git倉庫,若是倉庫有變化就開始構建。

構建環境再也不一一解釋

增長構建步驟是構建中最重要的部分,這裏選擇Xcode比較方便,固然,若是選擇執行shell腳本,你就要本身寫一套shell來完成打包任務了。

而後配置Xcode的參數。Target能夠不填,若是有多個的話最好填上。Clean before build最好打上,除非你想加快打包速度,大的項目不clean會出現莫名其妙的錯誤。Configuration能夠配置是Release仍是Debug。Build ipa文件之後能夠配置文件的name和生成到的文件夾。在ipa文件命名中,能夠採用系統變量來進行名字組合。

在iOS打包過程當中,最麻煩的事情就是Code sign,Code Signing Identity容許你自定義打包的證書,從而替換項目自己的證書,好比說你用開發證書的項目能夠被替換爲發佈證書而打出發佈包。Unlock Keychain也是一個比較重要的地方,因爲證書是一個很重要的東西,蘋果對其作了保護,不能隨意用,若是打包時發現證書權限有問題,那麼就試試unlock keychain吧。

Xcode打包高級選項,若是有多個schema,最好配置一個schema,SDK能夠本身指定,不然會使用默認的。Custom xcodebuild arguments能夠填寫用戶自定義的參數,例如derivedDataPath參數。若是想要編譯Xcode Workspace而不是一個project,要指定Workspace File,而Xcode Project Directory和Xcode Project File則是成套出現的。

增長構建後的步驟比較重要,好比說咱們能夠在構建成功之後把包放在一個url上,或者執行一系統shell、python腳本,或者增長郵件通知,都是能夠的。

下面演示若是生成一個能夠下載包的連接,選擇Archive the artifacts,按規定artifacts的連接就能夠了,好比說下面

在構建後操做中,你也能夠執行腳原本觸發其餘的構建!

相關文章
相關標籤/搜索