Jenkins+xcodebuild+fir持續(xù)集成踩過的坑(Mac)

下載安裝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構建
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ù)可以完善其他配置

關于Jenkins

在這個持續(xù)集成的方案里,Jenkins的主要職責是隨時監(jiān)聽代碼倉庫的變動,一旦代碼倉庫改動,滿足打包要求,就觸發(fā)自動構建。自動構建的具體實施是依靠 xcodebuild 腳本來實現(xiàn)的。之前有大神做了一下插件來封裝了這些腳本,隨著系統(tǒng)版本更新,這些插件不能很好工作了,但是腳本是不變的,原理也是不變的。

這次成功實現(xiàn)Jenkins持續(xù)集成,我試錯了很多次,走了不少彎路,這里記下來共同進步。

jenkins_failed_history
最后編輯于
?著作權歸作者所有,轉載或內容合作請聯(lián)系作者
【社區(qū)內容提示】社區(qū)部分內容疑似由AI輔助生成,瀏覽時請結合常識與多方信息審慎甄別。
平臺聲明:文章內容(如有圖片或視頻亦包括在內)由作者上傳并發(fā)布,文章內容僅代表作者本人觀點,簡書系信息發(fā)布平臺,僅提供信息存儲服務。

相關閱讀更多精彩內容

友情鏈接更多精彩內容