最近公司在iOS開(kāi)發(fā)小組的要求下,購(gòu)置了一臺(tái)Mac mini作為安卓組和蘋果組自動(dòng)打包機(jī)器。兩組商量過(guò)后,決定使用Jenkins作為打包工具,畢竟Jenkins比較成熟。而蘋果組配置Jenkins的任務(wù),落在了我的頭上。
準(zhǔn)備步驟
1.實(shí)現(xiàn)iOS自動(dòng)打包,首先要首Mac OSX環(huán)境,本文使用的是一臺(tái)Mac mini,系統(tǒng)版本為10.12.1。
2.安裝Xcode,這個(gè)不用多說(shuō)。
3.配置好Jenkins,因?yàn)镴enkins自動(dòng)打包比較成熟,網(wǎng)上隨便一搜都有Jenkins安裝教程。
4.確保pod命令能正常使用。
開(kāi)始配置
Jenkins配置由于項(xiàng)目使用的是Git倉(cāng)庫(kù),首先配置shh key在Jenkins首頁(yè),左邊菜單欄中點(diǎn)擊Credentials,配置自己的shh key

我們自動(dòng)打包用的是Xcode的自動(dòng)簽名,所以不需要配置系統(tǒng)keyChain和開(kāi)發(fā)證書。
然后在Jenkins中指定pod的運(yùn)行路徑在Jenkins菜單中點(diǎn)擊"系統(tǒng)管理"->"系統(tǒng)設(shè)置"->"全局屬性",填入相應(yīng)鍵值。

值:在終端中輸入命令
echo $PATH

復(fù)制值填入即可。
我在配置過(guò)程中,由于缺少這一步,導(dǎo)致在下面使用pod命令時(shí),出現(xiàn)pod command not found錯(cuò)誤。翻了好久的帖子才找到解決方法。
新建項(xiàng)目
打開(kāi)本地Jenkins頁(yè)面,點(diǎn)擊左邊菜單欄中的新建。

填寫項(xiàng)目名稱,選擇"構(gòu)建一個(gè)自由風(fēng)格的軟件項(xiàng)目",然后在下面點(diǎn)擊OK。完成項(xiàng)目新建。
項(xiàng)目配置
General填入描述內(nèi)容,按需選擇是否丟棄舊的構(gòu)建。

源碼管理

選擇Git,分別填入項(xiàng)目地址,選擇剛剛配置的SSH證書,項(xiàng)目分支
構(gòu)建
嗯,我們不需要配置開(kāi)發(fā)證書,直接來(lái)到構(gòu)建環(huán)節(jié)點(diǎn)擊增加構(gòu)建步驟,增加一個(gè)Execute shell。

- 第一個(gè)shell是使用pod命令更新依賴庫(kù)

export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
pod update --verbose --no-repo-update
export語(yǔ)句是將控制臺(tái)語(yǔ)言環(huán)境設(shè)置為UTF-8格式,以免出現(xiàn)Podfile文件打開(kāi)錯(cuò)誤。pod命令可以使用pod install,隨你便。
- 第二個(gè)shell是使用XcodeBuild和Xrun命令進(jìn)行編譯和打包

你需要修改的是:1.修改項(xiàng)目名稱。
2.修改IPA_PATH,Jenkins的目錄是/Users/用戶名/.jenkins/workspace/項(xiàng)目名。3.IPA_PATH中的Build文件夾是我自己新建的文件夾,用于存放所有打包出來(lái)的ipa文件,你也可以指定其它文件夾。
# 工程名APP_NAME=""
# info.plist路徑project_infoplist_path="./${APP_NAME}/Info.plist"
#取版本號(hào)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}_Debug_V${bundleShortVersion}_${DATE}.ipa"
#要上傳的ipa文件路徑IPA_PATH="/Users/xxkj/.jenkins/workspace/c-ios-Debug/Build/${IPANAME}"
echo ${IPA_PATH}
echo "${IPA_PATH}">> ipaPath.txt
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Debug' clean
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -sdk iphoneos -configuration 'Debug' SYMROOT='$(PWD)'
xcrun -sdk iphoneos PackageApplication "./Debug-iphoneos/${APP_NAME}.app" -o "${IPA_PATH}"
- 第三個(gè)shell是自動(dòng)上傳至Bugly更新APP

修改對(duì)應(yīng)Bugly應(yīng)用的exp_id和app_key。
# 工程名APP_NAME=""
# exp_idEXP_ID=""
# app_keyAPP_KEY=""
DATE="$(date +%Y%m%d)
"IPANAME="${APP_NAME}_Debug_V${bundleShortVersion}_${DATE}.ipa"
#要上傳的ipa文件路徑IPA_PATH="/Users/xxkj/.jenkins/workspace/c-ios-Debug/Build/${IPANAME}"
curl --insecure -X "PUT" -F "file=@${IPA_PATH}" -F "exp_id=${EXP_ID}" -F "title=${IPANAME}" https://api.bugly.qq.com/beta/apiv1/exp?app_key=${APP_KEY}
構(gòu)建后操作
項(xiàng)目自動(dòng)打包完成后,會(huì)自動(dòng)上傳到Bugly,也可以從打包機(jī)下載到本地。點(diǎn)擊"增加構(gòu)建后操作步驟"->"Archive the artifacts"

Build/*.ipa
此操作會(huì)將Build文件夾中所有ipa文件收集起來(lái),在項(xiàng)目面板中供下載。
