目標:自動更新代碼+打包+上傳蒲公英+發二維碼到測試人員的郵箱
1、Jenkins的介紹、安裝不多說,直接上配置截圖和說明
系統配置:
項目配置:
2、Shell 腳本和說明,直接上源碼
build_using_gym.sh
!/bin/bash
計時
SECONDS=0
假設腳本放置在與項目相同的路徑下
project_path=$(pwd)
取當前時間字符串添加到文件結尾
now=$(date +"%Y_%m_%d_%H_%M_%S")
指定項目的scheme名稱
scheme="SnapEcgDoctor"
指定要打包的配置名,位于XCode 設置下面,默認有‘Debug’和‘Release’兩個,也可以自己創建多個來區分不同環境的版本
configuration="Release"
指定打包所使用的輸出方式,目前支持{app-store, ad-hoc, enterprise, development}即xcodebuild的method參數
export_method='development'
代碼根目錄
baseDir=$(cd "$(dirname "$0")"; pwd)
echo "Base dir is: ${baseDir}"
svn 操作
svn cleanup ${baseDir}
svn update ${baseDir} #svn更新項目文件
cocoapod
cd ${baseDir}
pod install --verbose --no-repo-update
指定項目地址
workspace_path="${baseDir}/SnapEcgDoctor.xcworkspace"
指定輸出路徑
output_path="${baseDir}/${configuration}/${now}"
指定輸出歸檔文件地址
archive_path="$output_path/${configuration}_${now}.xcarchive"
指定輸出ipa地址
ipa_path="$output_path/${configuration}_${now}.ipa"
指定輸出ipa名稱
ipa_name="${configuration}_${now}.ipa"
獲取執行命令時的commit message
commit_msg="$1"
輸出設定的變量值
echo "===workspace path: ${workspace_path}==="
echo "===archive path: ${archive_path}==="
echo "===ipa path: ${ipa_path}==="
echo "===export method: ${export_method}==="
echo "===commit msg: $1==="
先清空前一次build
gym --workspace ${workspace_path} --scheme ${scheme} --clean -->configuration ${configuration} --archive_path ${archive_path} --export_method >${export_method} --output_directory ${output_path} --output_name ${ipa_name}
上傳到fir
fir publish ${ipa_path} -T fir_token -c "${commit_msg}"
自動化上傳蒲公英
蒲公英上的User Key
uKey="e91380a7110fc3852558bda4374f4f6b"
蒲公英上的API Key
apiKey="##################", 項目的apikey值
執行上傳至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${ipa_path}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" >http://www.pgyer.com/apiv1/app/upload
輸出總用時
echo "===打包+上傳蒲同英成功. 總耗費時間: ${SECONDS}s==="
3、補充說明
我沒有使用Jenkins里面的XCode插件,而是用gym直接打包,這是一個ruby環境。gym+ruby安裝請百度。
4、打包結果展示
4、填坑說明
大部分的坑都會出現在代碼里,如果發現本地代碼和Jenkins下載的代碼不同,而且不知道如何解決,那就拷貝一份本地代碼進去!
比如我就遇見pod的Header文件夾在Jenkins下面變成了文本,只能替換掉~~~~~~~~~~~
如果遇見了cocoapods問題,就用pod setup解決吧!如果一次不行,那就兩次。
其他問題,網上都有答案,我遇見的問題連外國人都沒有見過,就不用搜了。