前言
大神們提出的一套開(kāi)發(fā)規(guī)范建議:持續(xù)集成+測(cè)試驅(qū)動(dòng)開(kāi)發(fā)(CI+TDD)。其中,持續(xù)集成即Continuous Integration,簡(jiǎn)稱(chēng)CI。Jenkins 和 fastlane是目前比較流行的兩種快速集成工具,這里介紹使用 Jenkins 完成iOS APP的持續(xù)集成。
Jekins安裝
Jenkins 是一個(gè)用Java編寫(xiě)的開(kāi)源的持續(xù)集成工具,提供了軟件開(kāi)發(fā)的持續(xù)集成服務(wù),可以監(jiān)控并觸發(fā)持續(xù)重復(fù)的工作,具有支持多平臺(tái)、插件拓展、開(kāi)源等。
Jenkins依賴(lài)于Java環(huán)境,首先需安裝和配置Java環(huán)境。(PS:是JDK,而非JRE)。
Jenkins的安裝有多種方式,這里介紹兩種:(PS:因?yàn)榘惭bJenkins的時(shí)候需要注意權(quán)限問(wèn)題)
使用brew安裝(推薦):
$ brew install jenkins
如果出錯(cuò),bash:brew: command not found,這是由于當(dāng)前環(huán)境沒(méi)有安裝homebrew。
安裝homebrew ,代碼執(zhí)行:
$ ruby -e "$(curl -fsSL https://raw.githubusercontent.com/Homebrew/install/master/install)"
安裝成功后,請(qǐng)重新安裝Jenkins:brew install jenkins
或者使用安裝包安裝:
前往Jenkins官網(wǎng),下載安裝包,選擇 Mac OS X :

安裝下載的安裝包,注意在 安裝類(lèi)型這步,選擇自定義,取消選擇 Start at boot as "jenkins" 這項(xiàng),因?yàn)榭赡茉诤竺嬗捎跈?quán)限的原因?qū)е翵enkins打包失?。?/p>

安裝成功后,瀏覽器會(huì)自動(dòng)打開(kāi)Jenkins網(wǎng)頁(yè)服務(wù),如果沒(méi)有打開(kāi),請(qǐng)?jiān)跒g覽器輸入 http://localhost:8080/。
如果不能打開(kāi) http://localhost:8080/ ,可能是Jenkins服務(wù)未開(kāi)啟:
Jekins啟用,輸入:
$ sudo launchctl load /Library/LaunchDaemons/org.jenkins-ci.plist
Jekins停用,輸入:
$ sudo launchctl unload /Library/LaunchDaemons/org.jenkins-ci.plist
如果報(bào)錯(cuò):/Library/LaunchDaemons/org.jenkins-ci.plist: No such file or directory,
可以在命令行中輸入:
$ jenkins
此時(shí)Jenkins會(huì)在命令行里打印相關(guān)的運(yùn)行日志,再在瀏覽器里輸入: http://localhost:8080/
這種情況的話(huà),如果關(guān)閉執(zhí)行 $ jenkins 命令的命令行,Jenkins也會(huì)停止服務(wù)。
Jenkins配置
安裝成功后,瀏覽器會(huì)打開(kāi)Jenkins的服務(wù)網(wǎng)頁(yè):

根據(jù)提示,前往查看initialAdminPassword:
$ sudo cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword
如果沒(méi)有找到這個(gè)文件,可以在Jenkins日志里查找 initialAdminPassword字段 ,就可以看到密碼啦。不知道Jenkins的日志在哪,可以點(diǎn)擊頁(yè)面的(not sure where to find it?)
然后下一步,選擇安裝建議的插件:

插件安裝完畢后,創(chuàng)建用戶(hù),然后進(jìn)入了Jenkins的管理界面了。在創(chuàng)建新項(xiàng)目之前,我們需要安裝幾個(gè)插件,Git plugin 和 Xcode integration 和 Keychains and Provisioning Profiles Management。系統(tǒng)管理 -> 管理插件 -> 可選插件,搜索并安裝。
安裝好后,我們可以先到 系統(tǒng)管理 -> Keychains and Provisioning Profiles Management :

這里需要選擇 login.keychain ,在 /Users/{username}/Library/keychains/login.keychain 目錄里。如果不能通過(guò)選擇的話(huà),可以把login.keychain拷貝到桌面,然后在選擇上傳。
Code Signing Identity,可以添加多項(xiàng)。進(jìn)入鑰匙串,選擇開(kāi)發(fā)者證書(shū)或發(fā)布證書(shū),拷貝完全,粘貼至Jenkins的Code Signing Identity項(xiàng)里:

Provisioning Profiles Directory Path 填寫(xiě)成,注意替換為自己的username:
/User/{USERNAME}/Library/MobileDevice/Provisioning Profiles
然后保存。
創(chuàng)建項(xiàng)目
終于可以開(kāi)始創(chuàng)建項(xiàng)目了,點(diǎn)擊新建項(xiàng)目:

輸入項(xiàng)目名稱(chēng),選擇 構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目,然后確定,進(jìn)入配置頁(yè)面。選擇源碼管理:

我們是Git的方式管理的,所以選擇git。
Repository URL 可以使用 HTTP 或 SSH 兩種形式的,這里需要注意,如果是采用 HTTP 形式的話(huà),后面配置 Credentials 需要選擇 Username with password 項(xiàng),輸入登錄用戶(hù)名和密碼:

如果是采用 SSH 形式的話(huà)(不要ssh://前綴),后面配置 Credentials 需要選擇 SSH Username with private key 項(xiàng),輸入用戶(hù)名(隨便輸入)和與Git上公鑰對(duì)應(yīng)的私鑰:
/Users/{username}/.ssh/id_rsa

如果紅色報(bào)錯(cuò)的話(huà),請(qǐng)核對(duì)Git地址和私鑰或用戶(hù)密碼對(duì)應(yīng)。
Branch Specifier (blank for 'any'):默認(rèn)是master,你可以根據(jù)實(shí)際情況進(jìn)行編輯。
構(gòu)建觸發(fā)器:可以選擇某種情況下觸發(fā)項(xiàng)目構(gòu)建,也可以不選。
構(gòu)建:
點(diǎn)擊增加構(gòu)建步驟:

這里需要注意,如果你的項(xiàng)目是使用了cocoapods管理第三方庫(kù)的話(huà),這里需要增加一個(gè)腳本執(zhí)行的步驟:Execute shell -> Xcode(即下一步驟) ,順序不能錯(cuò)。這是因?yàn)椋掳姹镜腦code不能直接構(gòu)建.xcworksapce項(xiàng)目,需要使用腳本。(PS:如果不是cocoapods管理的可以直接跳過(guò)這步)

腳本內(nèi)容:
pod install
open Dispatcher.xcworkspace
配置Xcode:
增加構(gòu)建步驟選擇Xcode:

依次填寫(xiě):
Target:一般為工程名,cocoapods管理的項(xiàng)目不需要填寫(xiě)
Clean before build:構(gòu)建前clean一下總是好的
Configuration:一般為Release
輸出ipa名稱(chēng):可以自定義,不填寫(xiě)則是采用默認(rèn)的格式
ipa存放目錄:$workspace/build/ 或者 其它。
Advanced Xcode build options:

Xcode Schema File:如果你使用workspace,而不是project此項(xiàng)必填。與target類(lèi)似,填寫(xiě)你需要構(gòu)建的schema;
Xcode Workspace File:.xcworkspace文件的路徑,$WORKSPACE表示的是當(dāng)前項(xiàng)目的路徑,"/"后面就是.xcworkspace后綴的文件名,注意:這里不需要填寫(xiě)后綴;
Build output directory:系統(tǒng)默認(rèn)的Build目錄是CONFIGURATION_BUILD_DIR,上面設(shè)置的ipa包的輸出目錄,其實(shí)就是相對(duì)于這個(gè)目錄的路徑;建議填寫(xiě),比如填寫(xiě) $WORKSPACE/build。
點(diǎn)擊‘Save’,保存設(shè)置,開(kāi)始構(gòu)建吧。
選擇某一次構(gòu)建,點(diǎn)擊命令輸出(Console Output),查看構(gòu)建的過(guò)程。祝你好運(yùn)~
上傳至蒲公英
如果要上傳至測(cè)試平臺(tái)的話(huà),可以去查看測(cè)試平臺(tái)關(guān)于Jenkins的文檔。這里給出蒲公英的Jenkins上傳至平臺(tái)文檔:使用 Jenkins 實(shí)現(xiàn)持續(xù)集成(iOS)。