關於iOS自動化構建其實並不複雜,經過一些簡單的Git與Xcode指令,加上UI,咱們本身也能夠動手編寫一款自動化構建工具。這在以前的博客中也有涉及,有興趣的朋友能夠在以下地址找到這篇博客:java
本身動手設計一款iOS自動構建發佈工具:http://www.javashuo.com/article/p-wampomlc-u.htmlgit
本篇博客主要記錄使用Jenkins搭建iOS自動化構建項目的過程,關於Jenkins的更多自動化腳本的應用,有機會後面再出專門的博客介紹。api
Jenkins的安裝很是方面,在以下官網能夠直接下載Jenkins的安裝包,其中有支持各個平臺的安裝包,選擇本身所須要的進行下載安裝便可。xcode
安裝完成後,Jenkins會自動啓動運行,在當前電腦的8080端口開啓一個Web應用服務,若是是第一次安裝啓動,咱們須要配置一個帳戶做爲初始用戶。app
對於在Mac上Jenkins的啓動,有兩種方式:curl
方式一:直接運行Java歸檔文件啓動Jenkinsiphone
若是是Mac電腦,Jenkins安裝完成後,在Applications目錄下會多出一個Jenkins文件夾,這個文件夾中包含一個jenkins.war的文件,以下圖所示:工具
使用以下命令來啓動Jenkins:ui
java -jar /Applications/Jenkins/jenkins.war
使用這種方式啓動的Jenkins,要關閉服務須要找到Jenkins服務對應的PID,在終端輸入以下命令:
ps
在終端輸出的信息中,能夠看到Jenkins服務所對應的PID號,以下圖:
終端使用以下命令將此服務殺死便可:
kill -9 PID號
方式二:使用Mac的啓動進行控制器啓動Jenkins
若是成功安裝了Jenkins,在Mac電腦磁盤的資源庫中的LaunchDaemons文件夾下能夠找到Jenkins的啓動配置文件,以下圖:
在命令行中執行以下命令便可啓動Jenkins服務:
sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
使用以下命令關閉Jenkins服務:
sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
在Jenkins的主頁選擇新建一個項目,建立選項中,咱們輸入項目名稱,並選擇構建一個自由風格的軟件,以下圖:
下一步將進入到項目配置界面,首先須要設置下通用的配置,以下圖:
其中,描述部分能夠填寫項目的相關介紹,丟棄舊的構建設置構建記錄保存的天數和最多保持多少個構建記錄等。
源碼管理的配置是比較重要的一步,其用來設置構建項目從哪裏拉取項目的源代碼以及進行源碼更新的操做。以下圖:
若是使用的是Git倉庫,如上圖所示,須要配置項目的路徑,帳戶以及要進行構建的分支。帳戶的主要用途是使得Jenkins有權限拉取項目的代碼,若是以前沒有添加過,能夠點擊右側的Add按鈕進行添加,以下圖:
能夠選擇配置用戶名加密碼的方式添加帳戶,也可使用SSH公鑰的方式。
下一步咱們須要配置構建的觸發器,構建觸發器有多種形式,好比定時觸發構建,遠程觸發,代碼提交後觸發等等,以下圖:
其中遠程觸發是指咱們能夠經過遠程訪問Jenkins服務器地址加上令牌參數來觸發構建。
以後再構建一欄中選擇增長構建步驟->執行Shell,添加以下Shell腳本:
export LANG=en_US.UTF-8 export LANGUAGE=en_US.UTF-8 export LC_ALL=en_US.UTF-8 /usr/local/bin/pod install xcodebuild -archivePath "/Users/Shared/Jenkins/Home/workspace/Jenkins項目名稱/你的項目名.xcarchive" -workspace 你的項目名.xcworkspace -sdk iphoneos -scheme "你的項目名" -configuration "Release" archive xcodebuild -exportArchive -archivePath "/Users/Shared/Jenkins/Home/workspace/Jenkins項目名稱/你的項目名.xcarchive" -exportPath "/Users/Shared/Jenkins/Home/workspace/Jenkins項目名稱/buildIPA" -exportOptionsPlist '/Users/Shared/Jenkins/Home/workspace/Tictalk-iOS/ExportOptions.plist' -allowProvisioningUpdates curl -F "file=@/Users/Shared/Jenkins/Home/workspace/Jenkins項目名稱/buildIPA/你的項目名.ipa" -F "uKey=蒲公英userKey" -F "_api_key=蒲公英apikey" https://qiniu-storage.pgyer.com/apiv1/app/upload
上面腳本中,xcodebuild -archivePath 命令用來編譯項目,若是你的項目沒有使用workspace,須要將命令中的workspace修改爲project,configuration參數用來配置編輯的方式,Release爲發佈環境。xcodebuild -exportArchive 命令用來處處API包,須要額外注意,提早咱們須要在/Users/Shared/Jenkins/Home/workspace/Jenkins項目名稱/你的項目名這個目錄下添加一個ExportOptions.plist文件,新Xcode若是不配置這個文件是沒法打包成功的。curl -F 命令是用來將打包好的IPA包自動上傳到蒲公英分發平臺。
ExportOptions.plist文件編寫格式以下:
<?xml version="1.0" encoding="UTF-8"?> <!DOCTYPE plist PUBLIC "-//Apple//DTD PLIST 1.0//EN" "http://www.apple.com/DTDs/PropertyList-1.0.dtd"> <plist version="1.0"> <dict> <key>compileBitcode</key> <false/> <key>method</key> <string>ad-hoc(IPA包模式)</string> <key>provisioningProfiles</key> <dict>(下面設置bundleID對應的provisioningProfiles文件名) <key>com.***</key> <string>AD_HOC</string> <key>com.***.TKNotificationCentent</key> <string>Content</string> <key>com.***.TKNotificationService</key> <string>Service</string> </dict>(下面配置證書) <key>signingCertificate</key> <string>iPhone Distribution</string> <key>signingStyle</key> <string>manual</string> <key>stripSwiftSymbols</key> <true/>(下面配置teamID) <key>teamID</key> <string>KJYHPT****</string> <key>thinning</key> <string><none></string> </dict> </plist>
配置完了上面的腳本,你能夠嘗試點擊當即構建按鈕進行構建,固然構建過程當中極有可能會出錯,你能夠根據log輸出檢查下是不是由於下面的問題。
多是Jenkins找不到git所在位置,在Jenkins的系統設置中選擇全局工具配置,配置git路徑以下圖所示:
這一步出錯的可能性極大,首先你的電腦可使用pod不表明jenkins用戶有使用pod的權限,最好使用jenkins用戶登陸電腦,進行pod的更新升級,或者直接使用jenkins用戶登陸,找到咱們的項目,手動使用pod進行第三方的安裝。
和git命令出錯的問題基本一致,咱們須要配置路徑。在Jenkins的系統設置中找到系統配置,設置xcode相關工具以下:
首先確保你的應用證書放在了鑰匙串的系統分類下,如圖:
其次,須要將Provisioning Profiles文件複製到下面的目錄下,切記:
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
最後,請確承認以使用Xcode手動進行編輯和打包。並且證書和Provisioning Profiles文件必定要正確和匹配。