iOS項目準備
iOS項目,證書選擇,取消自動,Debug與Release各自手機添加對應證書
iOS項目目錄下,新增
ExportOptions.plist
文件,文件內容跟之前用xcode打包ipa文件夾內的ExportOptions.plist
一樣,其中method
改為ad-hoc
。
新建任務
創建新的構建任務,任務名稱可以自行設定,建議是項目名稱,需要全局唯一,再選擇自由風格的項目風格
General
構建任務的一些基本配置,如名稱描述之類的
源碼管理
git支持主流的gitlab與github代碼管理,因公司團隊用的是gitlab,選擇git,并填寫對應項目的git倉庫URL
第一次新建任務填寫倉庫URL,會出現報錯,提示Failed to connect to repository:xxx
(截圖中沒提示報錯,因本人已配置ssh),這是因為私有倉庫,沒有權限直接訪問,需要配置ssh獲取訪問權限。
Jenkins與git都需要配置ssh,因Jenkins服務器是獨立的,是使用Jenkins賬號登錄的,所以需要切換至Jenkins用戶重新生產ssh key,并把公鑰添加到git服務器
- 打開終端,設置密碼,建議設置簡單的,跟開機密碼一樣,后期需要使用
sudo dscl . passwd /Users/jenkins
- 切換至Jenkins用戶
su jenkins
- 重新生成ssh key
ssh-keygen -t rsa -C "郵箱"
- 獲取公鑰id_rsa.pub,并添加至git服務器
cat /Users/Shared/Jenkins/.ssh/id_rsa.pub
- 獲取秘鑰id_rsa,并添加至Jenkins中創建的newCredentials
cat /Users/Shared/Jenkins/.ssh/id_rsa
在Credentials中,點擊下拉選擇剛剛創建的Credentials,選擇后報錯不顯示,可以成功訪問,選擇要打包項目的分支
構建觸發器
最初可以暫時不做配置,后期因個人需求,再做配置
構建環境
第一個選擇,是設置每次構建前自動清除上一個工作空間,也可以手動清除
點擊下面保存,退出配置頁面,左側點擊清除
第二個選擇,是選擇打包項目對應環境下的證書
返回至Jenkins首頁,選擇Manage Jenkins,添加Keychains and Provisioning Profiles Management
- 獲取login.keychain
終端輸入/Users/xxx/Library/Keychains
,獲取的是login.keychain-db
文件,需要復制粘貼至桌面,并修改其文件名,改為login.keychain
- 在Keychains and Provisioning Profiles Management頁面,選擇剛剛修改的文件,再進行upload
- 找到電腦的鑰匙串訪問,找到打包項目的生成證書與發布證書的名稱,在Identities中各自填寫
- 描述文件路徑填寫
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
,其中注意Provisioning Profiles之間的空格- 點擊save
構建
下拉選擇Execute shell
,編寫shell腳本
添加shell腳本
echo '++++++++提供拉取依賴庫的代碼++++++++'
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
cd ${WORKSPACE}/項目名稱
/usr/local/bin/pod update --verbose --no-repo-update
echo '++++++++生成archive文件++++++++'
# keychain解鎖,否則打包簽名時會失效,詳細問題可以查看后續的錯誤總結文章中
security unlock-keychain -p "開機密碼" ~/Library/Keychains/login.keychain
if [ -d "${WORKSPACE}/builds" ]; then rm -rf ${WORKSPACE}/builds; fi;
mkdir ${WORKSPACE}/builds;
if [ -d "${WORKSPACE}/builds/${BUILD_NUMBER}" ]; then rm -rf ${WORKSPACE}/builds/${BUILD_NUMBER}; fi;
mkdir ${WORKSPACE}/builds/${BUILD_NUMBER};
xcodebuild -workspace ${WORKSPACE}/項目名稱.xcworkspace -scheme "項目scheme" -sdk iphoneos archive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive
echo '++++++++將archive文件導出為ipa包++++++++'
xcodebuild -exportArchive -archivePath ${WORKSPACE}/builds/${BUILD_NUMBER}/archive.xcarchive -exportOptionsPlist ${WORKSPACE}/ExportOptions.plist -exportPath ${WORKSPACE}/builds/${BUILD_NUMBER}/${JOB_NAME}_${BUILD_NUMBER} PROVISIONING_PROFILE="iPhone Distribution: xxx (xxx)" -allowProvisioningUpdates
構建后操作
自動化構建后,需要上傳對應測試的測試平臺蒲公英、fir
其中
fir.im Token
在fir平臺獲取,pgyer uKey
、pgyer api_key
在蒲公英平臺獲取,獲取方式直接百度即可
點擊保存
立即構建
在左側點擊立即構建,可以在Build History列表中看到構建歷史,點擊其中一個構建,可以在控制臺輸出看到構建進程信息
構建結果
- 構建狀態
Successful藍色:構建完成,并且被認為是穩定的。
Unstable黃色:構建完成,但被認為是不穩定的。
Failed紅色:構建失敗。
Disable灰色:構建已禁用 - 構建穩定性
構建穩定性用天氣表示:晴、晴轉多云、多云、小雨、雷陣雨。天氣越好表示構建越穩定,反之亦然。 - 構建歷史界面
console output: 輸出構建的日志信息
結束語
目前就可以使用Jenkins進行持續集成了,就很棒!
我在學習配置的過程很曲折,走過了太多的坑,一直雷陣雨,時而轉晴,當然了,風雨后必有彩虹,也很美。
Jenkins是一個強大的自動化工具,功能不僅僅如此,還有更多的功能需要我們去挖掘。如果后期有新增的功能,我也會持續更新文章,大家一起進步,有疑問也歡迎在下方留意。