標籤:
原文連結:http://www.jianshu.com/p/5abbe0d61cef
參考連結:http://blog.csdn.net/potato512/article/details/52176073
開頭
前面幾片記錄了jenkins的使用,配置一個jenkins環境,我們需要一個比較閑得筆記本做這份工作,不可能自己的本一直開著這個服務,動不動CPU風扇狂轉,其他效能下降,反而會影響我們工作,怎麼辦了,寫個shell指令碼幫我們完成工程打包、上傳。
原理
xcode在jenkins中編譯、shell編譯還是xcode自身編譯都是需要xcode自己的IDE環境決定的,具體來說就是
xcodebuild & xcrun這倆傢伙來完成
廢話不多說,直接上指令碼,需要的自己改一下即可。
project打包上傳
#!/usr/bin/bash#next test#1.認證#2.打包狀態每部判斷#設定Xcode的Build Settings->Code Signing Resource Rules Path的值為:$(SDKROOT)/ResourceRules.plist #xcodeproj檔案的絕對路徑PROJECT="/Users/mac/Desktop/pro/git/MCPayDemo/MCPayDemo.xcodeproj"SCHEME="MCPayDemo"#iPhone Distribution:IDENTITY="iPhone Developer: ma jiancheng (xxxxx)" #Distribution Provision File PathPROVISIONING_PROFILE="/Users/mac/Library/MobileDevice/Provisioning\ Profiles/ead3e7e7-a2e8-45c2-98fa-008f3712xxxx.mobileprovision"#輸出ipa檔案的路徑, 最好是絕對路徑OUTDIR="/Users/mac/Desktop/pro/git/MCPayDemo/output"PRODUCTDIR=${OUTDIR}#FIR 秘鑰FIRTOKEN="5558b26ae383df7390b880xxxxxxx"#蒲公英aipKeyPAPIKEY="c1ad57c15a5bb0c770c51639xxxxxxx"#蒲公英uKeyPUKEY="d5eb8f86040b9ae6108ed4c58xxxxxxx"if [ ! -f $PROVISIONING_PROFILE ]; then echo "Please download the provision file for "${PROVISIONING_PROFILE} exit 4;fiecho "~~~~~~~~~~~~~~~~清理工程~~~~~~~~~~~~~~~~編譯工程~~~~~~~"echo "${OUTDIR}${SCHEME}.ipa"echo "xcrun -sdk iphoneos PackageApplication -v ${PRODUCTDIR}/${SCHEME}.app -o ${OUTDIR}/${SCHEME}.ipa --sign ${IDENTITY} --embed ${PROVISIONING_PROFILE}"xcodebuild -project "${PROJECT}" -scheme "${SCHEME}" -configuration Release clean build CODE_SIGN_IDENTITY="${IDENTITY}" -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR} #打包成 .ipaecho "~~~~~~~~~~~${SCHEME}.ipa}~~~scuess"echo "xcrun -sdk iphoneos PackageApplication -v ${PRODUCTDIR}/${SCHEME}.app -o ${OUTDIR}/${SCHEME}.ipa --sign \"${IDENTITY}\" --embed ${PROVISIONING_PROFILE}"xcrun -sdk iphoneos PackageApplication -v "${PRODUCTDIR}/${SCHEME}.app" -o "${OUTDIR}/${SCHEME}.ipa"# --sign "\"${IDENTITY}\"" --embed "${PROVISIONING_PROFILE}"#上傳到測試平台 -> fir.imfir p "${OUTDIR}/${SCHEME}.ipa" -T "${FIRTOKEN}"echo "-------------------->fir.im------->蒲公英---------"echo "curl -F [email protected]${OUTDIR}/${SCHEME}.ipa -F uKey=${PUKEY} -F _api_key=${PAPIKEY} http://www.pgyer.com/apiv1/app/upload"curl -F "[email protected]${OUTDIR}/${SCHEME}.ipa" -F "uKey=${PUKEY}" -F "_api_key=${PAPIKEY}" "http://www.pgyer.com/apiv1/app/upload"echo "\n\n"
workspace打包上傳
/#!/usr/bin/bash#############################################/# batch rename #/# Input : $1 SCHEME #/# eg:需要編譯的scheme #/# Input : $2 PROVISION PREFIX #/# eg: mobileprovision檔案的名稱 ###############################################next test#1.認證#2.打包狀態每部判斷#設定Xcode的Build Settings->Code Signing Resource Rules Path的值為:$(SDKROOT)/ResourceRules.plist #xcodeproj檔案的絕對路徑[修改]WORKSPACE_PATH="/Users/mac/Desktop/car/Runnor.CarService.IosApp/"WORKSPACE_NAME="MCCarServiceiPhone"SCHEME="MCCarServiceiPhone"#產生的APP名稱,根據xcode項目 plist來定APPNAME="MCCarServiceiPhone"#iPhone Distribution: FOO.IDENTITY="\"iPhone Developer: ma jiancheng (xxxxxxxxx)\"" #Distribution Provision File PathPROVISIONING_PROFILE="/Users/mac/Library/MobileDevice/Provisioning\ Profiles/ead3e7e7-a2e8-45c2-98fa-008f3712382d.mobileprovision"#輸出ipa檔案的路徑, 最好是絕對路徑OUTDIR="${WORKSPACE_PATH}/output"#FIR 秘鑰FIRTOKEN="5558b26ae383df7390b880bexxxxxxx"#蒲公英aipKeyPAPIKEY="c1ad57c15a5bb0c770c51639xxxxxxx"#蒲公英uKeyPUKEY="d5eb8f86040b9ae6108ed4c5xxxxxxxx"if [ ! -f $PROVISIONING_PROFILE ]; then echo "Please download the provision file for " ${PROVISIONING_PROFILE} exit 4;fiecho "~~~~~~~~~~~~~~~~清理工程~~~~~~~~~~~~~~~~編譯工程~~~~~~~"echo "${OUTDIR}${APPNAME}.ipa"echo "xcodebuild -workspace ${WORKSPACE_NAME}.xcworkspace -scheme ${SCHEME} -configuration Release clean build CODE_SIGN_IDENTITY=${IDENTITY} -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR}"xcodebuild -workspace "${WORKSPACE_PATH}/${WORKSPACE_NAME}.xcworkspace" -scheme "${SCHEME}" -configuration Release clean build CODE_SIGN_IDENTITY="${IDENTITY}" -sdk iphoneos CONFIGURATION_BUILD_DIR=${OUTDIR} #打包成 .ipaecho "~~~~~~~~~~~${APPNAME}.ipa}~~~scuess"echo "xcrun -sdk iphoneos PackageApplication -v ${OUTDIR}/${APPNAME}.app -o ${OUTDIR}/${APPNAME}.ipa --sign ${IDENTITY} --embed ${PROVISIONING_PROFILE}"xcrun -sdk iphoneos PackageApplication -v "${OUTDIR}/${APPNAME}.app" -o "${OUTDIR}/${APPNAME}.ipa"# --sign "${IDENTITY}" --embed "${PROVISIONING_PROFILE}"#上傳到測試平台 -> fir.imecho "-------------------->fir.im------->蒲公英---------"#fir p "${OUTDIR}/${SCHEME}.ipa" -T "${FIRTOKEN}"# -> 蒲公英echo "curl -F [email protected]${OUTDIR}/${APPNAME}.ipa -F uKey=${PUKEY} -F _api_key=${PAPIKEY} http://www.pgyer.com/apiv1/app/upload"curl -F "[email protected]${OUTDIR}/${APPNAME}.ipa" -F "uKey=${PUKEY}" -F "_api_key=${PAPIKEY}" "http://www.pgyer.com/apiv1/app/upload"echo "\n\n"#--------------------end--------------
結語
這個shell語句寫的比較簡單,等閑暇會在本文最佳化。本文是jenkins的一個衍生,後續會在jenkins上探索一些持續構建的工作。
文/lp_馬建成(簡書作者)
原文連結:http://www.jianshu.com/p/5abbe0d61cef
著作權歸作者所有,轉載請聯絡作者獲得授權,並標註“簡書作者”。
iOS shell指令碼打包