下載安裝Jenkins(Mac)
Jenkins 是基于 Java 開發(fā)的,所以需要先安裝 Java 環(huán)境。然后去 Jenkins 官網(wǎng)下載 Jenkins.pkg 安裝包安裝。也可以用 Homebrew 安裝。具體安裝步驟可以參考這個鏈接的內容(在High sierra系統(tǒng)下,這篇文章中的使用插件來構建項目的操作已經(jīng)失效了,可以參考原作者文章底部的腳本構建方法):
手把手教你利用Jenkins持續(xù)集成iOS項目
安裝過程值得注意的地方:
- 安裝完成后,會自動打開 http://localhost:8080 這個地址,如果沒有自動打開,請手動打開。接下來會有個重設 Jenkins 密碼的界面,提示給出了密碼文件的路徑,我假設為:/Users/Shared/Jenkins/Home/secrets/initialAdminPassword。 你可以修改./secrets 這個文件夾的訪問權限,然后打開。如果仍然打不開的話可以在終端嘗試用:cat /Users/Shared/Jenkins/Home/secrets/initialAdminPassword 這個命令來查看。
- 安裝完成會自動創(chuàng)建一個叫 Jenkins 的用戶,這個用戶有什么作用我還不清楚。
- 部分教程說接下來的步驟是去“系統(tǒng)管理-管理插件”菜單安裝一些插件。我的這個教程是使用 Xcodebuild 腳本打包的,所以不需要以下的插件:Xcode integration 、Keychains and Provisioning Profiles Plugin。
新建一個項目
- 選擇“構建一個自由風格的軟件項目”。其中 General 選項的配置沒有什么坑,可以參照大多數(shù)的教程來做。
- 源代碼管理,只要你的項目管理軟件核心使用的是 git,那么這里都可以選擇 git 。我以 GitHub 為例,使用用戶名密碼來獲取項目,首先創(chuàng)建一個 Jenkins 的新的證書,也就是類似于賬戶的東西:

jenkins_add_credential
也有一些公司的 Bitbucket 、 gitlab 項目倉庫存在一些個性化權限設置,如果用戶名密碼方式失敗的話,可以考慮試試SSH登錄。

jenkins_source-01
“構建觸發(fā)器”這個選項可以略過,不用選擇任何選項
- 構建觸發(fā)器,這個配置可以自動觸發(fā) Jenkins 打包,也是自動化構建的必須步驟,配置沒有什么復雜的,照著教程設置就可以了。我認為第一次配置 Jenkins 的難點在于第一次構建成功,如果第一次手動構建成功了,后續(xù)再完善其他配置都水到渠成,所以我建議一開始配置的時候略過“構建觸發(fā)器”選項,不影響手動構建iOS項目。附上構建觸發(fā)器的配置教程:構建觸發(fā)器詳解
“構建環(huán)境”這里有坑
- 之前有很多教程讓下載 Keychains and Provisioning Profiles Management 插件,然后在此插件中上傳 keychain 和 provisioning file ??觼砹?,我是 High Seirra + Xcode9.2 的環(huán)境,所以我的Mac中沒有一個叫 login.keychain 的文件,直接上傳 login.keychain-db 的話,這個插件不識別。有的說改名可以,不過我懶得測試了,總之,我放棄了使用這個插件,我選擇使用xcodebuild腳本構建。所以我的方案是,“構建環(huán)境”這個選項都忽略掉,不用任何設置。
“構建”使用xcodebuild腳本
直接使用xcodebuild構建,關于xcodebuild的基本語法可以參考以下教程:

xcodebuild構建
xcodebuild clean -project JenkinsDemo/JenkinsDemo.xcodeproj \
-scheme JenkinsDemo \
ArchivePath="/Users/shawn/Desktop/JenkinsDemo.xcarchive"
xcodebuild archive -project JenkinsDemo/JenkinsDemo.xcodeproj \
-sdk iphoneos \
-scheme JenkinsDemo \
-archivePath "${ArchivePath}" \
-configuration Debug \
ExportPath="/Users/shawn/Desktop/JenkinsDemo"
ExportOptionsPlistPath="/Users/shawn/Desktop/ExportOptions.plist"
echo "+++++++++++++++++ exportArchive +++++++++++++++++"
xcodebuild -exportArchive -archivePath ${ArchivePath}\
-exportPath ${ExportPath}\
-exportOptionsPlist ${ExportOptionsPlistPath}\
-configuration Debug \
ipa_path="/Users/shawn/Desktop/JenkinsDemo/JenkinsDemo.ipa"
fir_token="a4a513de2bcd6064a7d******0855378"
fir publish ${ipa_path} -T ${fir_token}
- 此時點擊構建可能會報如下圖的錯誤,提示證書沒有找到:

證書錯誤
- 這時候需要打開 keychain 助理,把“登錄”選項下的你打包需要的證書,拖到“系統(tǒng)”選項下,正常的話輸入兩次管理員密碼就可以了。

移動證書到系統(tǒng)
- 如下圖是不正常的情況,如果拖拽證書的過程中遇到這樣的錯誤,請重啟一次電腦,再操作就可以了。我也不知道原因。

移動證書時發(fā)生錯誤
- 證書移動完畢,應該可以構建成功了。關于 fir 自動上傳的腳本,你可以搜索一下,很簡單的。
手動構建成功后,表示基本功能已經(jīng)完成,后續(xù)可以完善其他配置
配置構建觸發(fā)器 http://www.cnblogs.com/caoj/p/7815820.html
-
配置fir/蒲公英自動上傳。如果提示 fir 命令沒找到,那么需要修改一下Jenkins的環(huán)境變量:
系統(tǒng)管理->系統(tǒng)設置->環(huán)境變量(environment path)
jenkins_environment_path 配置構建后郵件通知 http://blog.csdn.net/fullbug/article/details/53024562
關于Jenkins
在這個持續(xù)集成的方案里,Jenkins的主要職責是隨時監(jiān)聽代碼倉庫的變動,一旦代碼倉庫改動,滿足打包要求,就觸發(fā)自動構建。自動構建的具體實施是依靠 xcodebuild 腳本來實現(xiàn)的。之前有大神做了一下插件來封裝了這些腳本,隨著系統(tǒng)版本更新,這些插件不能很好工作了,但是腳本是不變的,原理也是不變的。
這次成功實現(xiàn)Jenkins持續(xù)集成,我試錯了很多次,走了不少彎路,這里記下來共同進步。

jenkins_failed_history
