一馒稍、安裝Jekins
-
Download Jenkins
- 訪問
http://localhost:8080/
,打開initialAdminPassword文件约素。獲取權(quán)限,可以手動更改訪問權(quán)限(文件-顯示簡介-訪問控制)或者執(zhí)行命令sudo cat 路徑
,復(fù)制出密碼。注冊賬號芳撒。 - 安裝插件:系統(tǒng)管理->管理插件-可選插件:
Xcode integration
,Credentials Plugin
,Keychains and Provisioning Profiles Management
,Post-Build Script Plug-in
二、Jekins配置
1、文件拷貝
- 將/Users/管理員用戶名/Library的MobileDevice文件夾拷貝到/Users/Shared/Jenkins/Library下笔刹,否則會出現(xiàn)找不到描述文件的錯誤芥备。
- 打開鑰匙串程序,找到相對應(yīng)的證書舌菜,選擇“允許所有的應(yīng)用程序訪問此項(xiàng)目”萌壳,并存儲修改。
- 將/Users/管理員用戶名/Library/Keychains/下的login.keychain及l(fā)ogin.keychain-db這兩個文件拷貝到/Users/Shared/Jenkins/Library/Keychains文件夾下面
注意:Mac OS 10.12以下的沒有l(wèi)ogin.keychain-db這個文件酷师,只需要拷login.keychain文件讶凉。
2、Keychains and Provisioning Profiles 配置
]
1山孔、Keychain和ProvisioningProfiles文件是隱藏文件,所以需要拷出來荷憋。
Keychain文件路徑:/Users/管理員用戶名/Library/Keychains/login.keychain
台颠,
ProvisioningProfiles文件路徑:/Users/管理員用戶名/Library/MobileDevice/Provisioning Profiles
2、Keychain和ProvisioningProfiles文件選好后勒庄,都需要upload下串前。
三、創(chuàng)建項(xiàng)目
1实蔽、Jenkins+ Xcode + 蒲公英
ps1.更新pod的命令
#!/bin/bash -l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
cd /Users/Shared/Jenkins/Home/workspace/Test
pod install --verbose --no-repo-update
ps2.最后上傳蒲公英的命令
#蒲公英上的User Key
uKey="User Key"
#蒲公英上的API Key
apiKey="API Key"
#要上傳的ipa文件路徑
now=$(date +"%Y.%m.%d")
IPA_PATH="$WORKSPACE/IPA/Test_${now}.ipa"
#執(zhí)行上傳至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${IPA_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload
ps:有時候會出現(xiàn)Jenkins下的文件夾無法操作的情況荡碾,導(dǎo)致打包失敗,遇到這種情況可以更改下Jenkins下的操作權(quán)限
1. sudo chmod -R 777 /Users/Shared/Jenkins ...
2. 輸入密碼局装。
2坛吁、Jenkins + xcodebuild命令 + 蒲公英
詳解Shell腳本實(shí)現(xiàn)iOS自動化編譯打包提交
如果不設(shè)置證書,默認(rèn)是選擇項(xiàng)目設(shè)置的證書打包
ps1.上傳命令
#"++++++++++++++更新Pod+++++++++++++"
#!/bin/bash -l
export LANG=en_US.UTF-8
export LANGUAGE=en_US.UTF-8
export LC_ALL=en_US.UTF-8
cd /Users/Shared/Jenkins/Home/workspace/TestPack
pod install --verbose --no-repo-update
#"++++++++++++++打包iPA+++++++++++++"
# 工程名
APP_NAME="Test"
# 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)"
#ipa名稱
IPA_NAME="${APP_NAME}_Debug_V${bundleShortVersion}_${DATE}"
#導(dǎo)出ipa路徑
Export_PATH="${WORKSPACE}/Debug-iphoneos"
#Xcode8.3之后腳本打包需要添加配置的plist文件
ExporEt_Options_Plist="${WORKSPACE}/AdHocExportOptions.plist"
echo ${IPA_PATH}
echo "${IPA_PATH}">> ipaPath.txt
#打包生成iPa
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -configuration 'Release' clean
xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -archivePath "build/${IPA_NAME}.xcarchive" archive
#不設(shè)置證書和描述文件铐尚,默認(rèn)使用項(xiàng)目中選擇好的
#xcodebuild -workspace "${APP_NAME}.xcworkspace" -scheme "${APP_NAME}" -archivePath "build/${IPA_NAME}.xcarchive" -configuration "$configuration" CODE_SIGN_IDENTITY="$codeSignIdentity" PROVISIONING_PROFILE="$provisioningProfile" >> $log_path
xcodebuild -exportArchive -archivePath "build/${IPA_NAME}.xcarchive" -exportPath "${Export_PATH}/${IPA_NAME}" -exportOptionsPlist "${ExporEt_Options_Plist}"
#"++++++++++++++上傳蒲公英的命令+++++++++++++"
#蒲公英上的User Key
uKey="74f2001d31a2b3538e437f44705f5d7d"
#蒲公英上的API Key
apiKey="082d13c3cad994244c2ff9d468972dd8"
#要上傳的ipa文件路徑
Upload_PATH="${Export_PATH}/${IPA_NAME}/${APP_NAME}.ipa"
#執(zhí)行上傳至蒲公英的命令
echo "++++++++++++++upload+++++++++++++"
curl -F "file=@${Upload_PATH}" -F "uKey=${uKey}" -F "_api_key=${apiKey}" http://www.pgyer.com/apiv1/app/upload
PS:xcodebuild: error: invalid option '-exportFormat'
xcode8.3之后添加 exportOptionsPlistcurl
拨脉,以前xcrun -sdk iphoneos PackageApplication -v "/XXX/XXX.app" -o "/XXX/XXX"
命令過時。
四宣增、上傳APPStore和Automator
1玫膀、上傳APPStore
將上傳蒲公英的命令換成上傳APPStore的命令
//驗(yàn)證ipa
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool --validate-app -f ${IPA_PATH} -u fangzhoujiaoyukeji@163.com -p 'FangZhou#123' -t ios --output-format xml
//上傳itunsConnect
/Applications/Xcode.app/Contents/Applications/Application\ Loader.app/Contents/Frameworks/ITunesSoftwareService.framework/Versions/A/Support/altool --upload-app -f ${IPA_PATH} -u 開發(fā)者賬號@163.com -p '密碼' -t ios --output-format xml
2、使用Automator創(chuàng)建插件
五爹脾、常見錯誤
iOS 通過Jenkins 自動構(gòu)建ipa
Xcode8.2 Jenkins 集成遇到的問題
1帖旨、文件拷貝失敗
Failed to copy /Users/Shared/Jenkins/Home/kpp_upload/xxx.mobileprovision to /Users/caizhuoyue/Library/MobileDevice/Provisioning Profiles/xxx.mobileprovision
解決方法:開放Library(/Users/管理員用戶名/Library)文件夾寫入權(quán)限
2、找不到描述文件
No profile matching '證書' found: Xcode couldn't find a profile matching '證書'. Install the profile (by dragging and dropping it onto Xcode's dock item) or select a different one in the General tab of the target editor.
Code signing is required for product type 'Application' in SDK 'iOS 10.0'
解決方法:將/Users/管理員用戶名/Library下的MobileDevice文件夾拷貝到/Users/Shared/Jenkins/Library下面
3灵妨、schemes為空
Jenkins xcodebuild There are no schemes in workspace
Manage Schemes解阅,設(shè)置schemes共享
4、使用pod命令時闷串,出現(xiàn)pod command not found錯誤瓮钥。
解決方法,終端輸入echo $PATH
,在Jenkins菜單中點(diǎn)擊"系統(tǒng)管理"->"系統(tǒng)設(shè)置"->"全局屬性"碉熄,填入相應(yīng)鍵(PATH)值(終端輸出的內(nèi)容)桨武。
5、**/Frameworks/AFNetworking.framework: unknown error -1=ffffffffffffffff
出現(xiàn)類似這樣未知錯誤锈津,具體原因不知道呀酸,我重新設(shè)置下 系統(tǒng)管理的PATH
就好了