場景:
jenkins上設置了自動構建ios app,ios sdk ,mac app, mac sdk 等,2020.3.30號晚上8點之前都是沒問題的,完全可以自動構建,但是九點構建就一直報錯了,因為懷疑是提交代碼導致的,但是使用已經發版的節點構建,也是失敗的,ios上的所有jenkins構建都失敗了。
但是,奇怪的是,使用工具xcode就可以正常打包,在ios 終端手動輸入jenkins調用的那條打包的命令行,也是可以打包成功的。
報錯如下:
sdk的xcodebuild 打包命令:xcodebuild -scheme ${ios_scheme} -configuration Release -sdk $sdk_version clean build
報錯如下:
ipa(app)的xcodebuild archeieve 打包命令行:
xcodebuild clean -workspace ${workspace_name}.xcworkspace -scheme ${app_name} -configuration $ios_type
xcodebuild archive -workspace ${workspace_name}.xcworkspace -scheme ${app_name} -archivePath $archive_path -configuration $ios_type
echo export ipa .... #導出ipa
xcodebuild -exportArchive -archivePath $archive_path -exportPath arch/target_ipa -exportOptionsPlist ${app_name}/${app_name}/Info.plist
報錯如下:
原因:
原因1:可能是xcode簽名機制(code signing mechanism) 的 bug, Xcode 中賬號多了,就會產生很多過期的PP文件,Xcode 沒有自帶刪除功能會導致重復導入provisioning profile
原因2:鑰匙串沒有授權,被鎖住了。 訪問簽名失敗
解決辦法:
方法1:編譯之前解鎖鑰匙串
在編譯之前解鎖鑰匙串,命令行如下:
security unlock-keychain -p "123456" ~/Library/Keychains/login.keychain
-p后面是你的mac的登陸密碼,根據自己的實際情況輸入。
辦法2:刪除provisioning pfofile
Xcode 中所有的PP文件,都在 ~/Library/MobileDevice/Provisioning Profiles 這個文件夾下;進入該文件夾,刪除不需要的;用xcode運行一次,會重新下載有效的新的 provisioning pfofile;如果你不知道哪些是不需要的,你可以把~/Library/MobileDevice/Provisioning Profiles/下的文件全部移動到其他路徑下備份。
必要時,重啟mac
上面兩種方法,可以配合使用,如果一種不行,就兩種一起用,我是使用了解鎖keychain就搞定了,但是看到我的~/Library/MobileDevice/Provisioning Profiles/下有90多個文件,我還是使用了刪除provisioning pfofile的辦法,不影響使用。
參考:
https://www.jianshu.com/p/bde2fbf1dd09
https://blog.csdn.net/weixin_30376509/article/details/98651263