jenkins ios 命令行使用xcodebuild构建报错build failed:rrSecInternalComponent或者ARCHIVE FAILED:codesign Build/Intermediates.noindex/ArchiveIntermediates 失败

场景:

    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

原文地址:https://www.cnblogs.com/zndxall/p/12604161.html