公司希望開發和發布時候打包增加工作效率,減少人工的介入。希望我們iOS 端尋找一個工具來實現可持續化集成。經過對比我們選擇了jenkins 來實現我們的需求。經過歷時一周一百五十次左右的失敗終于構建打包成功了。
** 第一步 安裝 JRE環境 **
Jenkins 運行依賴于java環境 ,沒有安裝的請去官網自行下載安裝
** 第二步 安裝 Jenkins **
請依然去Jenkins官網下載安裝。
屏幕快照 2016-12-28 下午3.07.30.png
Mac端選擇Mac OSX 下載。
接下來盜幾張圖:
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
修改不可訪問打開文件的權限獲取里面的密碼將其填充一下,如下圖
Paste_Image.png
點擊左側一個模塊進入下載頁面,時間可能會很久,耐心等待
Paste_Image.png
Paste_Image.png
Paste_Image.png
自定義設置用戶名及密碼,點擊保存并完成按鈕,進入下圖頁面。
Paste_Image.png
第三步 添加項目及相關參數配置
下面來添加項目
Paste_Image.png
安裝插件:我安裝的主要有兩個管理證書的 ****Keychains and Provisioning Profiles Management**** 和 從svn拉代碼的****Subversion Plug-in****。自己需要什么的樣見仁見智。
Paste_Image.png
Paste_Image.png
Paste_Image.png
Paste_Image.png
****添加文件 (避免找不到證書配置文件的情況出現)****
1、將login.keychain文件粘貼到
/Users/Shared/Jenkins/Library/Keychains
(獲取login.keychain文件~/Library/Keychains/
)2、配置文件粘貼到jenkins 的
/Users/Shared/Jenkins/Library/MobileDevice/Provisioning Profiles
文件下。****沒有文件夾就去創建一個新的名為其的文件夾****
Paste_Image.png
個人覺得下面這兩步大概可以省略,但不知道會不會有不良后果。
Paste_Image.png
Paste_Image.png
****配置工程****
Paste_Image.png
****配置svn鏈接****
Paste_Image.png
Paste_Image.png
****添加腳本****:由于使用xcode插件三天左右沒有打包成功,于是便放棄了,使用腳本打包
Paste_Image.png
Paste_Image.png
****腳本如下:****
# 工程名
APP_NAME="你的工程名"
# 證書
CODE_SIGN_DISTRIBUTION="證書名稱"
# info.plist路徑
project_infoplist_path="./${APP_NAME}/Info.plist"
#取版本號
bundleShortVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleShortVersionString" "${project_infoplist_path}")
#取build值
bundleVersion=$(/usr/libexec/PlistBuddy -c "print CFBundleVersion" "${project_infoplist_path}")
DATE="$(date +%Y%m%d)"
IPANAME="${APP_NAME}_V${bundleShortVersion}_${DATE}.ipa"
#要上傳的ipa文件路徑
IPA_PATH="$HOME/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> text.txt
#獲取權限
security unlock-keychain -p "打包機器登錄密碼" $HOME/Library/Keychains/login.keychain
# //下面2行是沒有Cocopods的用法
# echo "=================clean================="
# xcodebuild -target "${APP_NAME}" -configuration 'Release' clean
# echo "+++++++++++++++++build+++++++++++++++++"
# xcodebuild -target "${APP_NAME}" -sdk iphoneos -configuration 'Release' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
#//下面2行是集成有Cocopods的用法
echo "=================clean================="
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Debug' clean
echo "+++++++++++++++++build+++++++++++++++++"
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Debug' CODE_SIGN_IDENTITY="${CODE_SIGN_DISTRIBUTION}" SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Debug-iphoneos/${APP_NAME}.app" -o ~/"${IPANAME}"
****注:非pods版本的尚未自己測試,不能保證其準確性,如果有問題請留言指出****
Paste_Image.png
Paste_Image.png
點擊構建坐等輸出。(出錯是難免的,摸石頭過河,遇到問題解決問題)
秀一下成果。
Paste_Image.png
不足之處:腳本最后一句命令是過時的,由于本人水平有限,不懂shell語言,沒法實現修改,也無法是打包的ipa文件打包到指定路徑。后期如果有可能本人會慢慢的完善的。
參考資料:
一步一步構建iOS持續集成:Jenkins+GitLab+蒲公英+FTP
手把手教你利用Jenkins持續集成iOS項目
Jenkins持續集成iOS項目