场景:
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