其他錯誤
其他文章:
Jenkins(一)初步認識
Jenkins(二)自動化打包(iOS)
Jenkins(三)自動化打包其他錯誤(iOS)
Jenkins(四)自動化打包幫助(iOS)
iOS 再談打包(證書、自動化、持續集成等)從開始到結束(精簡)
1、build發生的錯誤
[CJTestCIDemo] $ /usr/bin/agvtool vers -terse
No marketing version found (CFBundleVersion)
Technical version (CFBundleVersion) found in project configuration: .
Marketing version (CFBundleShortVersionString) used by Jenkins to produce the IPA:
Technical version (CFBundleVersion) used by Jenkins to produce the IPA:
Cleaning build directory: /Users/lichaoqian/Project/AutoPackaging/builds
FATAL: Unable to delete '/Users/lichaoqian/Project/AutoPackaging/builds'. Tried 3 times (of a maximum of 3) waiting 0.1 秒 between attempts.
錯誤信息的截圖如下:
image.png
修改方法只需將
Build output directory中的路徑改為$WORKSPACE下就可以。至于為什么其他目錄下不可以,暫時不清楚。
image.png
2、ARCHIVE FAILED
** ARCHIVE FAILED **
The following build commands failed:
CompileStoryboard CJTestCIDemo/Base.lproj/Main.storyboard
CompileStoryboard CJTestCIDemo/Base.lproj/LaunchScreen.storyboard
(2 failures)
Build step 'Xcode' marked build as failure
Finished: FAILURE
錯誤信息的截圖如下:
image.png
最后發現是編譯問題,去掉safe area后,重新提交后,再構建就可以了。
image.png
3、ARCHIVE SUCCEEDED 但xxxExport.plist錯誤
** ARCHIVE SUCCEEDED **
Cleaning up previously generated .ipa files
Cleaning up previously generated .dSYM.zip files
Packaging IPA
FATAL: /Users/lichaoqian/Project/AutoPackaging/CJ/ad-hocFZ5YDHE5JZExport.plist
錯誤信息的截圖如下:
image.png
修改方法只需將 Output directory中的路徑改為$WORKSPACE下就可以。至于為什么其他目錄下不可以,暫時不清楚。(這個與問題1中的Build output directory路徑設置是一樣的原因),即修改后為:
image.png
4、EXPORT FAILED
2018-01-16 17:00:44.747 xcodebuild[4385:839819] [MT] IDEDistribution: Step failed: <IDEDistributionSigningAssetsStep: 0x7fd950ec4860>: Error Domain=IDEDistributionSigningAssetStepErrorDomain Code=0 "Locating signing assets failed." UserInfo={NSLocalizedDescription=Locating signing assets failed., IDEDistributionSigningAssetStepUnderlyingErrors=(
"Error Domain=IDEProvisioningErrorDomain Code=9 \"\"CJTestCIDemo.app\" requires a provisioning profile.\" UserInfo={NSLocalizedDescription=\"CJTestCIDemo.app\" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the \"provisioningProfiles\" dictionary in your Export Options property list.}"
)}
error: exportArchive: "CJTestCIDemo.app" requires a provisioning profile.
Error Domain=IDEProvisioningErrorDomain Code=9 ""CJTestCIDemo.app" requires a provisioning profile." UserInfo={NSLocalizedDescription="CJTestCIDemo.app" requires a provisioning profile., NSLocalizedRecoverySuggestion=Add a profile to the "provisioningProfiles" dictionary in your Export Options property list.}
** EXPORT FAILED **
Failed to build /Users/Shared/Jenkins/Home/workspace/CJTestCIDemo/AutoPackaging/package/Beyond.ipa
Build step 'Xcode' marked build as failure
Finished: FAILURE
錯誤信息的截圖如下:
image.pngimage.png
錯誤原因分析參考:Xcode 9 在 Jenkins 自動打包腳本 中使用 Xcode integration 插件打包失敗的原因
其中講到的原因為:因為 Xcode 9 默認不允許訪問鑰匙串的內容,必須要設置 allowProvisioningUpdates 才會允許,但是由于 Xcode integration 插件封閉,并不能對其進行修改加上這個屬性,所以決定使用 Shell 腳本代替插件
分析問題
直接用命令行打包
image.png
嘗試用命令行直接打包Jenkins目錄下的xcworkspae文件。我們先來看下不完善的命令:
所以輸入如下命令
xcodebuild -archivePath "/Users/lichaoqian/Desktop/TestCI/CJTestCIDemo.xcarchive" -workspace "/Users/Shared/Jenkins/Home/workspace/CJTestCIDemo/CJTestCI/CJTestCIDemo/CJTestCIDemo.xcworkspae" -sdk iphoneos -scheme "CJTestCIDemo" -configuration "ad-hoc" archive
即
image.png
執行后,發現如下圖錯誤:
image.png
分析結果是權限問題,所以我們在剛才執行的命令前面加上sudo
,即
image.png
此時,執行后沒有上面的問題了,但是出現的問題,如下圖:
image.png
之后我們用不是Jenkins目錄下的CJTestCIDemo.xcworkspae實驗,到底是不是證書,發現還是一樣的問題。最后再sudo去掉,發現打包成功了。所以,Jenkins目錄下的那個CJTestCIDemo.xcworkspae的打包,并不能通過添加sudo來解決。